Infrastructure thoughts

Last Friday was great. I met up with Arnaud and we had tacos and crazy flavored beer called Michelada. The beer was dark and spiced with fish sauce and Worcestershire sauce. I ate some of the best tacos in my life. Then, on the terrace in the sun, we talked software architecture. Man. Life is good.
The unintelligible diagram above is the result of the brainstorm, or the beer, or a bit of both. Anyway, from the conversation I got two key takeaways that I donβt want to forget:
- Swapping out infrastructure should be easy. One of the most important ideas is that we should be able to easily swap out the infrastructure for something else. For example, can we do the whole thing not with what we have now, but with files on s3, or parquets? Can we create new implementations of the interfaces and have everything work magically together? The domain dependencies should point inward, not outward. The domain logic should not know anything about the outside world. It should not know about implementation details, hence it is free to change.
- Think in terms of responsibilities. Who is responsible for what? What needs to happen? How does that get computed? Who is responsible for that specific thing? Encapsulate these design decisions in modules and think hard if they are not duplicated somewhere else.
Authorβs note:
I wrote this original post last summer in the sweltering heat of July. I spent 40 minutes in the hot hot metro that took me from the most southern metro station in Paris (Maison Blanche) all the way up north to Louis Blanc. The moment I popped my head out of the metro the vibe shifted, it was gritty, alive, but also very different from the chinatown that I live in myself.
Comments