Back to the Future with Relational NoSQL

TL;DR Distributed transactions are one of the hardest problems in computer science. NoSQL was a response to scalability limitation and a very high cost of traditional RDBMS. CAP theorem says in case of network partitions, among consistency (correctness) and availability, one has to be comprised in favor of the other. The first generation of NoSQL DBMS chose availability and they were eventually consistent. In theory, they will reconcile conflicts in a finite time after a network partitioning by probabilistically voting on what the data is supposed to be....

Feb 29, 2020 · 2 min · Milad Irannejad

Lessons from the Birth of Microservices

TL;DR Know Why With microservices, you will inevitably ship your org chart! Think about why you are doing it at an organizational level. Don’t focus on computer science! Focus on velocity. Optimize for velocity (not engineering velocity and not systems throughput). By assigning project teams to microservices, you reduce person-to-person communication and increase velocity. Serverless Still Runs on Servers The idea of single-purpose services is a failure mode to do it blindly....

Feb 24, 2020 · 2 min · Milad Irannejad

The Configuration Complexity Curse

TL;DR Three different approaches to dynamic configuration: Templating Examples: Helm, gomplate, etc. Text templating very quickly becomes fragile, hard-to-understand, and hard-to-maintain. Template writers lack the tools to build abstractions around the data. Layering Examples: kustomize Data layering breaks down when configurations grow in complexity and scale. Template writers lack abstraction and type validation. For large scale projects, inheritance creates deep layers of abstractions. Semantics are locked into an opaque tool and not exposed as language features....

Feb 22, 2020 · 1 min · Milad Irannejad

Architecture Without an End State

TL;DR In every organization of any size, the steady state is always a superposition of many different wavefronts of changes. Some of those changes are technological and some of them are market-driven The changes are originating at different places and sweeping through the organization at different speeds. Stop chasing the end state! Let’s focus on continuous adaptation instead of the grand vision. Embrace Plurality Avoid single system of record (SSoR)....

Oct 2, 2019 · 2 min · Milad Irannejad

Charity Majors on Observability and Quality of Microservices

TL;DR Observability refers to three different things: logs, metrics, and traces. The problem with logs is that you have to know what to search for before you know what the problem is! The problem with metrics is they are aggregated by time and you cannot break them down by high-cardinality dimensions (like user id for example). Logs, metrics, traces, and events they each prematurely optimize one thing and comprise another thing based on a premise upfront....

Aug 12, 2019 · 2 min · Milad Irannejad