Architecture Weekly #117 - 6th March 2023
Welcome to the new week!
How to migrate from CRUD to Event Sourcing is it worth it? What strategies and techniques to use?
Those are questions that I'm asked a lot. I talked about that during Devoxx Poland for Ukraine conference, trying to cover generic considerations and show practical guidance.
Interested? Check the recording and share your thoughts!
For JSON, Date and BigInt are already too advanced... I wrote a short guide on how to deal with that.
I like thorough, contextual work showing theory and how to build that in practice. It’s not easy to find such gems. Usually, they’re either theoretical or diving immediately into technical details. Check the article below to find an example of an article on how to do it well:
ChatGPT and related technologies are the hottest topics right now. Probably even your auntie heard the term. It’s a trend that was also appearing in the past. We already had such buzzes some time ago. Check the episode of the great Corecursive Podcast about the history of Eliza, one of the first chatbots:
OpenAI published the API that lets you integrate with it. Greg Brockman, the president and chairman of OpenAI, said to TechCrunch:
“It takes us a while to get these APIs to a certain quality level. I think it’s kind of this, like, just being able to meet the demand and the scale.”
And that’s a reasonable approach to consider in general for our projects. Think in advance of what we want to achieve, but prioritise efforts. That can help to create proper boundaries and APIs but not make premature efforts to deliver all at once. I saw too many projects so focused on the 2nd day after launch that they forgot that it won’t happen unless they had a launch and validated the product-market fit.
Google open-sourced a new tool: Service Weaver: A Framework for Writing Distributed Applications.
Last few years, my focus has been on making Event Sourcing commodities. I do that because I see it as a straightforward and practical pattern in a nutshell. That work requires both working on tooling to make them more accessible and knowledge sharing. So I’m all for making things easier, removing boilerplate and cutting the ramp-up time.
Yet, I don’t think providing gargantuan tooling that will encapsulate everything is an answer to that topic. We had such ideas in the past, but none stayed with us longer. I think that critical to solving hard topics is distilling them and defining interactions between them. Making things explicit that have to be explicit and hiding complexity where it’s not needed.
To do that, we need to know the context we’re in. We need to understand our business and technical assumptions to know where to optimise and how to compose our tooling. And yes, composition and context are key aspects here. So instead of building a monolith tooling for monoliths, maybe we should focus on how to compose them to make them modular and flexible to transition in another architecture style (e.g. microservices) or extract parts of them separately when we need it. Of course, assuming that we want don’t want to end up with distributed monolith.
Check also great Alan Key’s topic on that:
Graph analysis is quite often related to machine learning and AI. Mainly because they’re fuzzy and not fitting entirely into our brains’ capacities. Yet, using them to model and visualise problems we’re trying to solve can give us great insights. System thinking can help in reducing noise. Check more on other ways to look at graphs.
Interested in yet another State of Something resources? I got you covered:
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 the Ukraine humanitarian organisation, Ambulances for Ukraine or Red Cross.