Architecture Weekly #89 - 22nd August 2022
Welcome to the new week!
I just published all of our Architecture Weekly webinars.
In the first one, I showed journey from CRUD to Event Sourcing. I explained the strategies and showed practical examples using TypeScript and NodeJS applications. Of course, the focus was on explanation, not technical details, so even if you’re not much into those technologies, you should understand how to do it in your favourite one.
In the second one, I showed why keeping streams short is essential in Event Sourcing. I explained how to find and model entities’ lifetime and reflect that in streams. By watching it, you’ll learn the foundations of stream modelling, also why snapshots are (in general) bad practice and why you should think about events archiving strategy.
There’s almost no material on that topic, even though it’s critical to understand it to do Event Sourcing well. It is the talk that I later gave at Domain Driven Design Europe. It also nicely shows as an example of what exclusive content you get by joining paid subscription.
The third one was a collaborative approach. We started by modelling the big picture of the hotel guests’ group checkout process. We discussed the challenges and different strategies and went to see the nuances of the implementation. It was the longest webinar so far (1:40h), giving a decent understanding and foundations to implement it in your system. In the next one, we want to follow that approach and crunch again new topic chosen by the community. We’re thinking about the next modelling session or even mob programming.
If you are paid subscriber, you can watch them now; if not, you can check a sneak peek and make up your mind and sign in. Besides webinars, we have a vibrant Discord channel with decent architecture discussions.
That’s not all of the material to watch from me this week. Accidentally last Wednesday became Marten’s International Day.
I did the talk Pragmatic Event Sourcing in .NET With Marten at the JetBrains Youtube. In a nutshell, I aimed to show Event Sourcing to prove that it’s not as hard as it’s pictured. I showed how to cut the boilerplate and the number of layers to a bare minimum. Did I succeed? Check on your own!
Jeremy talked at the .NET DC user group, showing Event Sourcing and CQRS with Marten. I like that even though our topics were similar things, but looked at them from different angles. Jeremy also showed how Jasper integrates with Marten neatly, giving you the effortless CQRS.
I think that watching them both should give you a good understanding of Marten and how you can benefit from using it in your application. In general, that’s also 3 hours of free Event Sourcing and CQRS training. For free is a reasonable price, isn’t it?
We love to keep our code but love to throw away someone else. Sometimes that's fair decision; quite often subconscious. Primarily working in legacy software, going straight to refactoring may not be the best you should do. I wrote in my last article on the keep vs change decision, explaining the connection with the British writer from the previous century. Read more in: What do the British writer and his fence have to do with Software Architecture?.
Making an architectural decision is always challenging; making them about the product is even harder. I saw in my past projects where wrong priorities or not checking the assumptions with the client ended up with collapse. Architecture choices should not be made in a vacuum; they should reflect the product’s needs. Even the best implementation with wrong business assumptions will be just great but useless code. Read more on how to shape your system responsibilities right in:
Plus, what may happen if you follow too much of the buzz with your decisions:
You can inspire by others’ decisions by, for instance, checking what giants are choosing and why:
Still, you should think for yourself and question authorities. Especially self-proclaimed ones:
As men in this industry, we have a long way to make it a safe, accessible place for women as it was initially. Not being a jerk is not enough to change the current state.
And Now for Something Completely Different. I’m extremely intrigued by the idea of running WebAssembly on the server. Its higher and more thought security sandbox concept can be a good alternative for classical containers. It also allows you to write in your favourite language, which will be compiled to unified runtime. What’s an example of that? For instance, messages (e.g. events), pipelines or transformations. I’m thinking about writing a lightweight outbox pattern tool that would give users options to plug their transformation functions. Many other people do even crazier stuff. Postgres run on web assembly? Sure! Containers on a web page? Not an issue! See more:
Check also other links!
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 Weekly is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.