Tech stack: Java 17, Docker, Gradle

Figure 1: Pipeline for creating a custom JRE when building smaller Docker images with Java.

With the rise of containers and immutable infrastructure, some of the benefits of having a large and dynamic virtual machine have been lost. There is no longer a need to have an extensive runtime that can run any Java application, as you now test and ship your application with its own environment, from the JVM down to the OS. …

Tech stack: Java 14, Spring, Docker, Gradle

Figure 1: the guides finished solution. Start by unit testing business functionality, collecting code coverage. After this, start the application in docker, with Jacoco reporting enabled. Run the component tests, collecting code coverage from the application. Once the tests pass, extract the coverage report. This means we can now get all the benefits of component testing, while keeping the coverage and reporting unit testing offers.

When it comes to test approaches for modern micro-service based architectures, I often feel detached from the norm. In most projects I find that a heavy unit test approach is adopted, producing a test pyramid similar to Figure 2.

Tech stack: Java 14, OpenAPI 3, Spring, Docker, Gradle

Figure 1: using the OpenAPI specification to provide consumers with a known REST interface to our service, while also using the same specification to generate our service interface classes.

A contract first approach, in the realm of REST APIs, is the methodology of developing a specification before you begin implementing your service. In an initial attempt at this, what often happens is you write an OpenAPI (or Swagger) document, give this to your consumers, then go about implementing your service against this specification. This has some great benefits:

  1. your consumers can build their services against your specification, while you are still implementing the service.
  2. your consumers can test their service conforms to your contract when making requests, and their service…

Image Source:

I have often found the need to take a source of data, and apply a series of transformation over it. For instance, I have a series of weather readings I need to read in from a file. In order to parse these, I would generally need to perform the following steps:

  1. Read each line of the file in (where each line represents an individual weather reading).
  2. Parse the line into some Java object (POJO).
  3. Perform some data manipulation (for example, converting rainfall in millimeters to centremeters).
  4. Send each individual weather reading to a downstream service (for example, store the result…

This article aims to show the process of setting up a new .NET core project from scratch, building it within a Docker Image, and showing how you can assure your code with both Unit and Component tests. I also aim to show how integrating your Docker build process with your test process, can lead to easy assurance of your Docker images.

During this guide, we will be using the newest version of .NET Core (3.0.100-preview6) and building a small Web API.

Step 1: Setting up the project structure

To start with, make sure you have the latest version of the .NET Core SDK installed (

With this…

Interactions within a Distributed System between 2 processes, P1 and P2.

Distributed systems offer us the ability to solve problems we couldn’t possibly solve with a single machine. However, I have recently become painfully aware that every solution to a problem brings with it a series of new problems and considerations to be made.

Within the realm of distributed systems, one of the largest problems we gain over a single machine system is attempting to keep a correct timeline of events. This is needed for a variety of reasons — one of the most crucial is understanding the ordering and causality of events within your system. …

Joe Honour

Software Engineer, with interests in Distributed Computing.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store