RSSAmplifier

Blog

Sönke Ruempler

ruempler.euRSS feed ↗20 posts

Latest posts

From Big Ball of Mud to Modulith Part 2: Introducing Ports and Adapters architecture

In Part 1 , we laid the foundation for a vertical architecture

From Big Ball of Mud to Modulith: Introducing and keeping a clean architecture in PHP with Deptrac

While Deptrac is commonly used to enforce horizontal boundaries within PHP projects, it can also help define and maintain vertical boundaries (such as Bounded Contexts in DDD speak, or Quanta ) in PHP monoliths. This capability is especially valuable when implementing the Hexagonal aka. Ports and Adapters architecture , ensuring clear separation of concerns and robust modularity in your PHP…

Solutions to the Lost Update Problem

The Lost Update Problem is a common issue in concurrent systems, where two transactions read the same data, modify it, and write it back to the database. The second transaction will overwrite the changes made by the first transaction, causing the first transaction’s changes to be lost. This is especially problematic in cases where money in a bank account is involved, as it can lead to…

Understanding the React Function as Children Pattern

Let’s have a look at the React Function as Children Pattern . The simple component Usually, JSX/TSX code looks like this: 1 2 3 < SomeComponent > < SomeChild someProp = {something}/ > </ SomeComponent >

Review-Driven Testing: Enhancing Code Quality, Upskilling Developers, and Promoting Testing Culture

In the world of software development, ensuring the quality and reliability of code is paramount. One popular approach to achieving this goal is Test-Driven Development (TDD), where developers write tests before writing the actual code. TDD is also my default way of approaching software development. However, I’ve started in many environments situations where code changes are made without…

Easier Code reviews with Git Colored Move Diffs

Code reviews can be very time-consuming. Especially if you are reviewing a lot of code changes. Often, code changes are simple refactorings, such as extracting code into methods/functions or moving code around. These changes are more or less irrelevant for the review, since they usually don’t change the behavior of the code. As a reviewer, one still wants to make sure that code hasn’t been changed…

Upgrade CDK/Cloudformation-managed AWS Aurora Serverless v1 (MySQL 5.7) cluster to Serverless v2 (MySQL 8.0) with minimal downtime

Since AWS is going to sunset / auto-upgrade Aurora Serverless v1 in December 2024 , it’s time to upgrade to Aurora Serverless v2. Upgrading to Serverless v2 MySQL instances also means upgrading from MySQL 5.7 to MySQL 8.0 under the hood. This article describes how to adapt the AWS provided upgrade path to work with a CDK / CloudFormation infrastructure-as-code project, which requires a few more…

Zero-downtime upgrade from AWS Aurora 2 (MySQL 5.7) to version 3 (MySQL 8.0) with the CDK and Aurora Blue/Green deployments

This article demonstrates how to upgrade an CDK (or Cloudformation)-managed AWS Aurora cluster from MySQL 5.7 compatible AWS Aurora 2 to MySQL compatible Aurora 3 engine without any - ok, I lied - one minute of downtime. The process utilizes the blue/green deployment feature of Aurora. It also shows how CDK/CloudFormation stacks are brought back in sync with the upgraded Aurora clusters.

Minimizing downtimes when managing AWS RDS parameter groups with CloudFormation

When managing RDS parameter groups with CloudFormation, you might have noticed that changes to a DB cluster or instance parameter group will always cause a reboot of the RDS instance. This happens when the RDS cluster or instance parameter group and the RDS instance are managed by the same CloudFormation stack.

Automated MySQL RDS/Aurora initialization with CDK, Fargate and the MySQL CLI

A recurring task when provisioning databases is to initialize them with initial users, stored procedures, and/or tables. In the CDK world, there is currently no native support for this, but there are some workarounds. AWS has a blog post about this, but it’s using a Lambda function, and a bunch of custom code which seemed like too much operational overhead for me.

Why real serverless scale-to-zero and no-pay-for-idle are important

Having defined what is serverless and what not in the last article, this time let’s have a look at one particular characteristic of serverless systems: they can scale to zero also known as: you don’t pay for idling resources. So let’s discuss why this is actually very important.

Setting up MySQL Aurora replication from an external primary with GTIDs

Setting up Amazon Aurora as a replica of an external MySQL primary is a common way of synchronizing and/or migrating self-managed MySQL databases to RDS/Aurora.

Lessons learned when restoring a MySQL Aurora RDS database from S3/Percona Xtrabackup

Recently I was trying to restore a Aurora database from an Percona xtrabackup, the de-facto industry standard for backing up self-managed MySQL databases. Luckily, RDS and Aurora natively support restoring a cluster from Percona xtrabackups. This comes very handy for migrations of big databases (For more information, check out the docs and this prescriptive guidance article from AWS ).

Serverless - a new model to run backend software

For me, serverless has become the default model of developing backend applications. However, a meeting a few weeks ago was a reminder for me that not the entire world is embracing serverless applications already: I had the task to design an “Energy Data Importer”, an application that collects time series data from different locations, sanitizes and transforms them and stores them in a database for…

🤔 The serverless test

There is a lot of buzz and marketing around the term “serverless”. This article aims to dismantle what’s serverless and what not - with practical examples.

How to (PUT) upload files to S3 with Typescript and Axios

Situation You want to upload a file to S3 with Axios and the PUT method. Challenge S3 needs a Content-Length for PUT requests, otherwise it throws an 501.

Advantages of AWS Multi-Account Architecture

When we begin doing some things in AWS, we usually start with a single AWS account and create our AWS resources in it. And things can become a mess very fast. This article should give you an overview why you should switch to a using multi-account architecture very soon for workloads on AWS.

Paul O&#39;Neill: The Irreducible Components of Leadership

This is an annotated transcription from Paul O’Neill’s talk on leadership - in my opinion the most powerful and inspiring talk I have ever seen on leadership. I decided to transcribe it (well, Youtube did the most work with its automatic subtitles feature), because there are so many great quotes in it and I wanted to have it as a source for myself, e.g. for futures articles, so I always have a…

Dead man&#39;s switch with AWS CloudWatch: Freshness-Alerting for Backups and Co

A recent challenge for one of the teams I am currently involved was to find a way in AWS CloudWatch: To alert if the metric breaches a specified threshold. To alert if a particular metric has not been sent to CloudWatch within a specified interval.

Lesegruppen / Buchclubs in Unternehmen

Buchbesprechungen als Werkzeug für Organisationales Lernen Auf den devopsdays 2015 in Berlin hatten wir eine Open Space Gruppe, die sich mit dem Thema beschäftigte: “Ich lese viele Bücher, Blogs etc, und würde dieses Wissen gerne in das Unternehmen tragen, in dem ich gerade arbeite”. Dabei kam die Idee auf, Lesegruppen zu bilden. Diese Idee fand ich so gut, dass ich sie direkt einmal ausprobiert…