- Know your limits. Infinite scalability doesn't exist (30 May 2022)
There is this myth that we can design today for tomorrow's unknown requirements. Somehow we believe that we can put in place a robust architecture that will scale forever, no matter what. I'm sorry, that's impossible.
- Let's get logical! On logical and physical architectural views (25 January 2022)
Having a deep understanding of the differences between physical and logical boundaries can help shed light on the way we architect systems. Usually, it leads to simpler solutions.
- You don't need that abstraction (20 December 2021)
Abstractions, abstractions everywhere! We're obsessed with clean design and architecture. Do we need that, or does the introduced cognitive load come with more issues than benefits?
- Don't keep a saga in both camps (28 July 2021)
When it comes to distributed systems, autonomy is a guiding star, and coupling is the villain trying to sneak in at every step. Orchestration is a particularly subtle form of coupling, usually detected when it's too late. However, the root cause is somewhere else.
- Own the cache! (15 July 2021)
Caches are everywhere and power the internet. When it comes to distributed systems, they are an essential tool in our tool belt. However, special care needs to be put into defining who owns the cache.
- To API, or not to API. Is this a real problem? (24 March 2021)
Breaking a public API is scary but sometimes unavoidable. Versioning an API is complex and error-prone. In many cases, I observed teams breaking an API that should not have been there to begin with, or fighting with versioning issues. The problem, though, was not the API.
- Not all changes are born equal (10 March 2021)
We should not fear change. There are changes for good and changes for bad. As for change, we should not fear coupling. There is bad coupling and good coupling. The critical aspect is to understand the impact of the changes and the coupling.
- You don't have to be cool to rule my world, KISS. (8 May 2019)
HTTP is the Microservices way, so it must be used as a communication transport, they say. Is HTTP adding any benefit to our systems? Can it be considered harmful in some scenarios? Are there better approaches? Shedding some light on the system logical architecture might be helpful.