Architecture Weekly #90 - 29th August 2022
Welcome to the new week!
It’s the 90th edition of Architecture Weekly. Woohoo! Who would have thought that it would last for so long? I wouldn’t. It started and still is a way to organise intriguing resources and not lose them on the Internet. It grew into something bigger than that. Now it’s the real learners’ community, with the Discord channel, webinars, etc. I’m glad that you’re here, and that’s also helpful to you. I’m starting the countdown to the 100 edition!
What would you like to get in the 100th?
Last week I wrote an essay about my observations on the similarities between playing or guitar and programming. I’m a mediocre guitarist and a bit better developer. Both of them require patience and repetition. How do you get to Carnegie Hall? Practice, practice, practice. You won’t become skilled in a single day.
Still, that’s dangerous advice. Burnout is a real thing in our industry. So it’s worth trying new things, techniques, and tools and also, taking breaks. I too often over-motivated myself both in guitar playing, and I got the opposite results than I hoped.
Finally, the most important thing is finding a hobby other than programming; best if it’s manual. Something that gives you pleasure and allows your brain to focus purely on mechanical things to clear out your brain. Read more in:
Different paces and perspectives can also be found in our data. We have three main perspectives:
Hot: accessed daily for our transactions/operations needs. That type of data represents active business processes. We’re actively using this data in our business logic (write model).
Warm: data is used sporadically or read-only. They usually represent data we’re accessing for our UI (read model) and data we typically won’t change.
Cold: data not used in our application or used by other modules (for instance, reporting). We may want to keep also for the legal obligations.
Once we realise that, we may discover that we might not separate the storage for each type. We also might not need to keep all data in the same database. Check more in:
Speaking of the data patterns. One of the most critical concepts in databases and pipeline processing is “Write Ahead-Log”. It enables predictable processing. Do you know that Relational Databases work like event stores? Check the great summary of how that works and how databases recover from failures in a great write-up:
As we’re into failures, what is worst than spectacular security failures? We hear more and more about them. Recently, the ex-Twitter exec told about the ignorance on the security issues in Twitter:
Microsoft also had a huge issue with ADFS. It was found that there’s a trick that allows you to log as anyone:
Those are serious things. Still, as I wrote some time ago in my article, the issue is not only with Big Tech companies and the holes in their products. They’re the easy target, as they’re the biggest. It’s the hardest to breach them, but also for hackers is the high risk, high reward. Still, it’s much less possible that we’d secure ourselves better than specialists hired there. Should we just blindly trust them and outsource our security practices fully to cloud providers? Of course, not. We should control and monitor security practices and guarantees. We should build security as one of our main principles and part of the development process. Not just as the audit done at the end of development.
If you’re looking for how to take granular microservices or a domain-driven approach to Frontend, I got you covered today. Check:
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
Derek Comartin - Data Partitioning! Don’t let growth SLOW you down!
LaunchDarkly - Evolving Global Flag Delivery - Flag Delivery at Edge
Herberto Graça - DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together
Distributed Systems
Shiju Varghese - Building Distributed Event Streaming Systems In Go With NATS JetStream
Universally Unique Lexicographically Sortable Identifier - The canonical spec for ulid
Datbases
Andrzej Ludwikowski - Reactive Event Sourcing benchmarks, part 1: PostgreSQL
LiteFS - FUSE-based file system for replicating SQLite databases across a cluster of machines
Justin Graf - PostgreSQL and Financial Calculations - Part One
Frontend
AI
João Pedro - Machine Learning Streaming with Kafka, Debezium, and BentoML
The Register - GitHub Copilot may be perfect for cheating CompSci programming exercises
Azure
.NET
NodeJS
Coding Life
Management
Emily Nakashima - An EngineeringManager’ss Bill of Rights (and Responsibilities)
Continuous Delivery - Agile & ScrumDon’t Work | Allen Holub In The Engineering Room
Scrum Sessions Podcast - Episode 01 with special guest Dr. Jeff Sutherland
Security
CNN - Ex-Twitter exec blows the whistle, alleging reckless and negligent cybersecurity policies
Microsoft - MagicWeb: NOBELIUM’s post-compromise trick to authenticate as anyone