Distributed tracing is a method used to profile and monitor applications, especially those built using a microservices architecture.
Distributed tracing helps pinpoint where failures occur and what causes poor performance.
Applied to Kafka Streams it allows us to trace and visualize our messages by propagating diagnostic information within message headers.
Continue reading →
Nowadays we frequently see companies adopting the Elastic Stack to search, analyze and visualize application data in real time.
While the scope of application data ingested these days is broadening, it’s already quite common to monitor aggregated application logs in Kibana.
Because of this, I frequently find myself coming back to Kibana to slice and filter the logs to monitor how our application deployments progress through deployments.
In this blogpost, I’ll outline a small Vue.js web application I wrote to more easily access our application logs.
Continue reading →
SonarCloud is a code quality tool that can identify bugs and vulnerabilities in your code.
This post will explore how to integrate SonarCloud, GitHub, Jenkins and Maven to report any new code quality issues on pull requests.
SonarCloud is the cloud based variant of SonarQube, freeing you from running and maintaining a server instance.
Older (<7) SonarQube versions had a preview analysis mode to report any new issues in a branch on the associated pull request.
In newer versions of SonarQube this functionality has moved to the paid version, or the SonarCloud offering.
Continue reading →
A year ago Dave Syer posted an excellent, comprehensive overview of how to run Spring Boot applications in Docker.
He delves into the various ways to package Spring Boot applications into properly layered Docker images, highlighting the benefits and basic building blocks of each approach.
Continue reading →
Cucumber-JVM is a framework for writing end to end tests in natural language, with each line backed by a Java method. Each Java method has a regular expression of natural language lines to match, and lines should only match one such pattern. On a recent assignment I was tasked with modernizing a fairly large cucumber test suite, and going through the steps I found a lot of Java methods that were not being called from the natural language feature files anymore. To identify and remove these unused steps, and prevent any new unused steps in the future, I contributed the following plugin to Cucumber 4.4.0 through:
- https://github.com/cucumber/cucumber-jvm/pull/1648
- https://github.com/cucumber/cucumber-jvm/pull/1634
It can be run easily through:
Continue reading →
A low code approach to composing microservice architecture diagrams from per service context diagrams.
On a recent assignment I was one of multiple new engineers joining a start-up transitioning into a scale-up.
The past two years had been spent rapidly developing to prove the concept, and while at the outset some diagrams were drawn up, at the time I joined these were outdated, lacking or even misleading.
To help get ourselves and other new developers up to speed, Andrew Morgan and I set out to create architecture diagrams for the system as a whole.
Continue reading →