Tech stack: Java 17, Docker, Gradle
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
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
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:
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:
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.
To start with, make sure you have the latest version of the .NET Core SDK installed (https://dotnet.microsoft.com/download/dotnet-core/3.0).
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. …
Software Engineer, with interests in Distributed Computing.