Architecture Weekly #103 - 28th November 2022
Welcome to the new week!
Tomorrow (Tuesday, November 29th), at 4 PM CET (UTC+1), we’ll have a webinar with Alexey Zimarev exclusively for our community. He agreed to join us, tell us more about Event Sourcing, and introduce his Eventuous framework. He’ll explain his motivation for building the framework and share his experience while building it.
If you’re not a paid subscriber, don’t wait to join and get the chance to see the webinar live and have the chance to ask questions during live Q&A. Check also previous webinars.
Speaking about Event-Driven Architecture. I wrote a short article explaining how to do event-type mapping, which is the foundational block for serialising events and maintaining schema versions. I showed how to do conventional-based that also allows registering explicit mappings. Read more:
I hear that we should write code that’s easy to maintain. It’s easy to say, too often, it ends with the opposite result from the intention. Giedrius Kristinaitis wrote about it in Expensive Mistake That Often Plagues Layered Architectures. I think that better advice is to write code that’s easy to remove. If we direct toward that, we’ll get maintainability out of the box. Read more in:
One of the main origins of the complicated code is the wrong understanding of the business process. I wrote about the issues in business-development teams in Bring me problems, not solutions!. Read more about that in:
Read also interesting case studies on the maintenance of the existing and evolving systems in:
AirByte - How we run database migrations with Flyway, jOOQ, and testcontainers
Trista Pan - Create Your Distributed Database on Kubernetes with Existing Monolithic Databases
Kris Nóva - Experimenting with Federation and Migrating Accounts
Cloudflare - Using Apache Kafka to process 1 trillion inter-service messages
Last, Mercedes introduced software locks for the existing physical car features:
I think that’s going too far; we’ll need to think more about ethics in our industry. This is also an interesting case study of manufacture costs and sales strategies. It seems that it’s still cheaper to deliver a feature that’s not enabled than having different production lines. This can also be an intriguing observation for the systems we’re developing and using the feature toggles.
Check, also other links!
Cheers
Oskar
p.s. I invite you to join the paid version of Architecture Weekly. It already contains the exclusive Discord channel for subscribers (and my GitHub sponsors), monthly webinars, etc. It is a vibrant space for knowledge sharing. Don’t wait to be a part of it!
p.s.2. Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, and putting pressure on your local government or companies. You can also support Ukraine by donating, e.g. to Red Cross, the Ukraine humanitarian organisation. You may also consider joining Tech for Ukraine initiative.
Architecture
Giedrius Kristinaitis - Expensive Mistake That Often Plagues Layered Architectures
Vladik Khononov - What Is Domain-Driven Design? Chapter 4. Context Mapping
Distributed Systems
Cloudflare - Using Apache Kafka to process 1 trillion inter-service messages
Redpanda - Reliable Message Reprocessing with Redpanda: Dead Letter Queues
DevOps
Trista Pan - Create Your Distributed Database on Kubernetes with Existing Monolithic Databases
Kris Nóva - Experimenting with Federation and Migrating Accounts
SigNoz - What is Context Propagation in Distributed Tracing?
Microsoft - Announcing the .NET Virtual Monolithic Repository
Databases
AirByte - How we run database migrations with Flyway, jOOQ, and testcontainers
Riyaz Ali - SQLite Extensions - Golang library to build sqlite extensions