We’re living in the era of digital technology, version 4.0. Almost every business needs to be digitized. Technology companies used to build their own software products on on-premises infrastructure, but maintaining and serving a global user base with on-premises infrastructure has become very difficult.
Continuing with an on-premises model requires investing in servers and a solid systems administration team to manage the infrastructure. There are also risks associated with keeping all of your servers in one place.
This is why cloud computing has boomed. Platforms like AWS, GCP, and Microsoft Azure offer solutions and servers that spare technology companies the headache of building their own infrastructure. Now, these companies only need to deal with building software.
While this is a huge advancement, it’s not without issues. Monitoring and debugging on distributed systems in the cloud is a challenge—and microservice architectures don’t make it any easier.
In this article, I’ll show you how a CI monitoring system like Foresight can save you time and frustration when monitoring and debugging applications.
Pain Points and Capabilities
In the past, software development teams needed to combine many tools in order to monitor their services. System administrators and software developers had to learn different open source tools and how to integrate them into their systems. When a lot of tools are integrated together, things get complicated and the team needs to grow. Of course, growing a team and the infrastructure they use also means growing costs.
And that’s just monitoring. Most IDEs and code editors don’t support reliable remote debugging. This makes it hard for developers to debug while coding on their local machine, and it has a tremendous impact on productivity. As a result, much development time is actually spent on debugging.
Testing for cloud-based applications is another pain point. Since a lot of microservices are integrated into the distributed system, we don’t know which part of a service is causing a test to fail. Testers, developers, and system administrators now need to work together to find the root cause of a failed test.
Foresight provides a number of unique capabilities to address these problems.
Monitoring CI Workflows
Monitoring and optimizing the workflow in the CI pipeline is an everyday task for DevOps engineers and most of the developers today. To make this easier, Foresight captures every workflow from the pipeline with just a few steps.
Figure 1: Overview of the last workflow in Foresight’s CI pipeline monitoring
Users can check the overall result of the workflow, as well as the results from the last five runs. They can also check the details of the workflow to see if there’s a step taking a long time to run. Without leaving the Foresight dashboard, they can see why the pipeline is slow and quickly find a solution.
Different from the GitHub Actions, Foresight enables you to monitor all of your workflows in the same dashboard so that you don’t have to look for errors, bottlenecks, or dependencies. You can see them gathered together.
Below is a step-by-step guide on how to integrate Foresight with GitHub Actions workflows. You can find detailed guidelines in Foresight’s documentation.
Step by step image
Monitoring and Debugging Tests
You don't have to get lost in the log piles of your GitHub Actions workflow results. Foresight groups tests, test suites along with their logs, screenshots, and more to understand why even the most complex integration test failed.
Update your YAML file with Foresight's report uploader step and troubleshoot your test failures easily. See the short video of how to do it.
Figure 2: Upload your test reports
After uploading your test reports to Foresight and executing your CI pipeline with the updated configuration, you will see your repositories listed under the repositories section.
Figure 3: GitHub Actions Workflows and metrics listed on Foresight
Monitoring Workflow Runs
Under the Workflow Runs tab, runs related to the repository you've selected will be listed. You can filter your runs by the workflows from the left panel. You can see the Workflow success rate chart and the Workflow run duration chart.
Figure 4: Workflow runs success and durations details
Monitoring Test Runs
Under the Test Runs tab, runs related to the repository you've selected will be listed. You can filter your runs by the status and branch from the left panel.
Figure 5: Test runs
Runtime Support for Multiple Languages
Foresight is runtime and platform agnostic! You can use Foresight with projects written in Java, Python, Node.JS, .Net, Go, Ruby, or any kind of language.
The Need for Debugging Remotely
Most of the time, developers work from a favorite integrated development environment (IDE). When working in a local environment, IDEs like IntelliJ IDEA or VSCode can support most of our needs. However, if we need to debug code in a remote machine, the default support isn’t good in either of them and it takes a lot of time to set up and debug the application remotely.
And this can be a common occurrence. It’s not unusual to need to connect to a remote machine, either because the test environment is located there, or because our laptop isn’t strong enough and we need to connect to a remote machine.
Sidekick provides a better experience for working remotely. Within minutes, users can set up the environment with the required credentials from Sidekick and put breakpoints in their code where they need to debug. Sidekick does the rest.
Sidekick has a 14 days of free trial that does not limit any features. You can signup and try it yourself.
Figure 6: Remote debugging in IntelliJ with the help of Sidekick
Monitoring with Thundra APM
What if you already have the application up and running in production, but you don’t know how to properly collect the logs and traces? Or you already set up the tools for monitoring and collecting traces, but it doesn’t work?
With Thundra APM, you don’t have to worry about reproducing one-time errors in the production environment, or wading through redundant logs.
Figure 7: Architecture view of how services communicate in the application
Thundra APM helps cloud users debug a distributed application remotely before pushing it to production. It also helps to monitor the application with customer-centric logs and traces.
Furthermore, most popular language runtimes are now supported in APM, including:
Thundra APM is mature and provides a number of features, including:
Foresight helps you troubleshoot your CI workflow runs by generating key performance metrics, such as which pipelines, build steps, or jobs are run; which ones fail; and how long they take to complete. It provides granular visibility into your CI workflows, builds, and test performances, which enables you to fill in the pre-production observability gap.
Seamlessly pairing with Sidekick and Thundra APM, Foresight supports every aspect of software development in all phases. From the local environment to the production environment, and from monitoring to testing, software teams now have a full picture of their application’s performance with just one tool. With a bevy of supported CI tools and popular programming languages, you can integrate it into your existing stack in a matter of minutes.
The sooner you sign up for Foresight, the sooner you can focus more on building new features.