Architecture Weekly #122 - 10th April 2023
Welcome to the new week!
I recently realised that treating event stores as key-value databases makes explaining Event Sourcing much easier. Let’s assume that and treat the key as a record id and data as an ordered list of events. Isn’t then much easier to reason about the performance, or whether they’re more database or messaging tool? I wrote about that longer in my last article:
Looks like this Architecture Weekly is focused on DevOps resources. I think that we’re still in the transition phase. In theory, our tooling grew more mature, but on the other hand, it also got much more overwhelming. Too often, we relished the power we got that we forgot why this approach was introduced: to streamline software delivery and collaboration between all involved parts. Building the Platform for the sake of doing that should not be the end goal. Business value delivery should be. Read more:
The foundational aspect of the proper DevOps process is observability, tracing and understanding of how our system behaves. We have a plethora of tools, but can we use them well? If we can set them up, can we also connect the dots with the business process and understand precisely the technical information and how they impact our business? Check those articles for inspiration on how others are making that happen:
See also on how to design event flows to improve observability:
Giridhar Manepalli - Clocks and Causality - Ordering Events in Distributed Systems
Lutz Huehnken - Events, Workflows, Sagas? Keep Your Event-driven Architecture Sane
The next quite often missed or even ignored aspect is security. We understand how to inject configuration into our services, but we forget that rotating them continuously is essential to avoid breaches. Read:
Speaking about security and breaches. See, even the biggest ones are getting them from stupid mistakes. And when such breaches happen, they’re usually big bangs:
Still, as Gerald Weinberg said: “No matter how it looks at first, it's always a people problem.“. Collaboration between different people, building a set of standard practices and shared understanding is an essential part not only of DevOps culture but also in general software delivery. So it’s always worth learning not only about tech but also about humans:
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 the Ukraine humanitarian organisation, Ambulances for Ukraine or Red Cross.
Architecture
Oskar Dudycz - Event stores are key-value databases, and why that matters
Justin Smith - The Three R’s of Enterprise Security: Rotate, Repave, and Repair
Giridhar Manepalli - Clocks and Causality - Ordering Events in Distributed Systems
Lutz Huehnken - Events, Workflows, Sagas? Keep Your Event-driven Architecture Sane
Weronika Łabaj - To DDD or not to DDD? Domain modelling case study
DevOps
The NewStack - Platform Engineering Is Not about Building Fancy UIs
Nigel Poulton - WebAssembly on Kubernetes: everything you need to know
Alex Soto - Article Series: Developing Apache Kafka applications on Kubernetes
Databases
Frontend
AWS
.NET
Shawn Shi - Optimizing Long-Running Tasks with Background Services and SignalR Notifications
Jeremy Likness - Improvements to auth and identity in ASP.NET Core 8