AWS RDS to Aurora Migration
In this post, we will go over a complex migration process I recently did when migrating from a provisioned AWS RDS solution to the serverless Aurora offering.
Continue readingIn this post, we will go over a complex migration process I recently did when migrating from a provisioned AWS RDS solution to the serverless Aurora offering.
Continue readingIn this post, we will talk through an interesting problem I came across recently when migrating from provisioned AWS Elasticache to the serverless Elasticache offering.
Continue readingEnforcing architectural constraints within codebases can be achieved easily with static analysis tooling.
This article will demonstrate how to implement a set of architectural constraints in a Python codebase.
Continue readingA modular monolith is an architectural pattern which is seeing more and more traction at the moment. It’s not actually a particularly new concept. And like most things in software engineering, it has simply cycled back into the forefront of discussions.
This article provides some theory around the topic and an approach you might want to take when building with this architectural pattern in mind.
Continue readingIn this post, we will go through multi-stage builds for Docker images. Why we might want to use them and the implications of them.
Continue readingEventual and strong consistency are a set of design strategies used to describe how data is persisted. They represent 2 sides of the spectrum, and they provide a unique set of benefits and drawbacks from one another.
Continue readingIf you’ve ever written tests or read literature around them then you might have come across terminology such as mocks, fakes, spies, stubs and collaborators.
In this article, we will demystify what these things mean along with some more concrete examples on how to use them.
Continue readingLike most things in software engineering, the term dependency injection sounds a whole lot fancier than the thing it actually represents.
In this post, I will walk through what this looks like in practice and why it is a useful technique to apply.
Continue readingModern applications are complicated and there is a lot that goes on behind the scenes to deliver functionality to large bases of users. In this post, I will talk through the Message-Queue pattern, the problem it tries to solve and why we would want to use it.
Continue readingFor us to be able to write small focused unit tests, we need to be able to draw the right boundaries. In this post, I will go over what this looks like conceptually, and then I will walk through a more concrete but somewhat imperfect example.
Continue reading