Breaking a monolith: Data replication

The journey of solving a problem using data replication and eventual consistency between different services

Nikos Voulgaris

9 minute read

The very concept of evolutionary software architecture is based on “listening” intently to the system’s needs. As the system changes every day, so do its needs. Identifying the points in which architectural changes should be applied is key to the system’s success.

How to implement dependency injection in Swift?

This article explains different approaches to implement dependency injection in iOS.

Efthymios Liapatis

4 minute read

One of the five design principles in S.O.L.I.D. is Dependency Inversion, where the general idea of this principle is the decoupling between the high-level modules and low-level modules. One way to apply this principle is by using the Dependency Injection design pattern. The Dependency Injection makes your code more testable, more maintainable, and of course, more readable.

Zero downtime Postgres migration, done right

A step by step guide to migrate your Postgres databases in production environments with zero downtime

Rigas Papathanasopoulos

15 minute read

In this blog post we describe how to migrate a Postgres database to a new instance with zero downtime using Bucardo. We will describe how to avoid common pitfalls like data loss, deteriorated performance and data integrity failures. We have successfully used this process to migrate our Postgres databases from version 9.5 to 12.5 on RDS, but the process isn’t restricted to RDS only, and does not depend on anything AWS specific. This migration strategy should be possible with any self-hosted or…