“Distributed systems” is a commonly used concept today. Perhaps the first time you read it it sounds daunting, and while there are plenty of challenges, the concept itself is simple and it might even give you more clarity when it comes to building this kind of system. Let’s start from… the beginning. When software went from being a possibility to being a reality (a virtual one, of course), things were pretty simple: if we wanted to solve a problem, we’d create an application program that would run on one computer. If we needed a database, we’d have another program running in the same machine and they would communicate directly within that machine. As computers became more powerful, society started relying more and more on them. That’s what we call “digital transformation”. Given this transformation, it became vital for software to: Work when people want to use it (be available) Don’t return incorrect or inconsistent results (be correct) Things started getting complicated because of availability.…