Architecture Weekly
2.99K subscribers
4 photos
725 links
Architecture Weekly newsletter originated at https://blog.vvsevolodovich.dev. ~10 articles or videos on solution architecture and system design every week!.
Download Telegram
Hello, everyone! The New Year is approaching really soon. Trying to sum it up, I would like to say that this year was the most difficult so far with the war, relocation, new job and making this newsletter. However, it came with some achievements as well. I posted 49 issues; the audience of the channel grew from 0 to 727 people. The blog subscribers went from 300 people to more than a thousand. I also launched a video channel with more than 335 followers. I appreciate everyone who joined the Telegram and YouTube channels as well as blog followers!

I want to thank you for following it all - means to me a ton and motivates to continue the work. I would also like to wish you a safe, peaceful New Year. Let it bring new, exclusively professional challenges to your life.

If you want to help the channel you can take the following actions: 1) tell your colleagues about the channel. Let our community grow! 2) subscribe to a YouTube channel if you still haven't. 3) Subscribe to Patreon or Boosty - the videos obviously require some audio improvements which comes with a cost of a hardware or software filters. You would also get access to some videos and blog posts. Tomorrow's issue is already there btw :)

And of course, don't hesitate to leave any kind of the feedback - I am always open to it.

If you're interested in my own results of the year - follow my blog post open to everyone.

Thank you again and continue your growth!
👍11
Architecture Weekly #49
Video

Highlights
LastPass is a popular password management tool that has been plagued by security issues for years. Despite its widespread use, the latest security breach of LastPass should serve as a wake-up call for users to consider alternative options. In this article, Jeremy delves into the history of LastPass' security problems and explains why it is time for users to consider moving on to more secure password management solutions.

#security
The complete guide to protecting your APIs with OAuth2(part 1) 👷‍♂️
I doubt there are many IT specialists who never heard the term JWT, standing for JSON Web Token or OAuth. The standard helps manage access to the major part of the Internet resources, thus it's important to understand not only how to use it in the first place, but also how to do that securely. Stackoverflow blog got a long article explaining the OAuth Standard and security best practices for it.

#security #api
Observability - State of Art 22' 👷‍♂️
There is no need to sell observability to anyone in 2022: now we treat it as an essential part of our systems and a natural requirement. But what observability consists of? What types of signals and data do we want to monitor? Let's figure it out with an article by Daniel.

#observability

Follow-Up Below 👇🏽
Architecture Weekly #49 - Follow-Up

PostgreSQL + TimescaleDB: 1,000x Faster Queries and 90% Data compression for time-series data 🍼
TimescaleDB is a solution on top of PostgreSQL for time-series data. Focusing on a single problem allows for providing incredible optimisations like several orders of magnitude faster queries and an order of magnitude less storage requirement. Read an article about those advantages in the Timescale blog.

#postgresql #timeseries #db

How to learn Software Design and Architecture 🍼
Going from a software developer intern to a Solution Architect took me 10 years. I would definitely appreciate any kind of a roadmap to help make this journey a bit shorter time-wise. Khalil Stemmler wrote a detailed map on mastering software design. I believe it lacks 2 or 3 stages, but it is a very good attempt to map the knowledge required. Find it below.

#systemdesign #learning

Why not DNS? 👷‍♂️
Searching for a proper pod in a K8s cluster requires name resolution. And hopefully, DNS would solve that problem for us. However, microservice instances come and go significantly faster than website A-records. That's why we need KubeProxy. A detailed explanation inside.

Microservices integration Using Contract-Driven Development
Integration tests are good, but they can catch a problem only when the integration is done. In order to have a shorter feedback loop, we can test the API of each service in isolation against the commonly shared contract, which is API description in a form of lets OpenAPI. Checkout the strategies and a suggested tool to do so below.

#microservices #contracttesting #api

Kafka Stream Transformation Patterns and Message Reprocessing 👷‍♂️
Several months ago my team decided that we need a refactoring for a fiscalization solution: it was based on crons and virtualized queues in a DB and was a source of several painful problems linked to reprocessing the invalid records. We created a design using Kafka, and now I found a cool article that addresses pretty much the same problem: what do you do if you don't want to stop the processing of an event stream in case of a message with incomplete or wrong info? Follow it for details.

#kafka

Like the newsletter? Consider helping to run it at Patreon or Boosty. The funds go to pay for the hosting and some software like a Camo Studio license. Patrons and Boosty subscribers of a certain level also get access to a private Architecture Community. Big thanks to Nikita, Anatoly, Oleksandr, Dima, Pavel, Robert, Roman, Andrey and Lidia for already supporting the newsletter.
👍4
Architecture Weekly #50 🔥

Video

Highlights
CircleCI breach 🍼
The CI/CD pipelines literally have 2 jobs: build and stay secure. Obviously, CircleCI failed to fill in the second part with an announcement that the secrets stored in all the pipelines can be compromised. So if you're a client - first of all do so, and if it's not yet done - implement a secret rotation policy. The news came in on the 4th of December with an email to the clients. Gergely Orosz has made an overview of the incident and CircleCI's communication of it, grab it here.
#cicd #security #incident

GitHub solution for converting the columns to ActiveRecord's encrypted 👷‍♂️
As we just learned storing data is better encrypted. But we don't always implement this strategy right from the get-go. And once we want to do that, a challenge arises, how to convert the plain text fields to encrypted ones without downtime. And if some fields were encrypted how to upgrade them to use better protection? Follow the GitHub blog on how they did it with their data. Multiple encryption keys, decypher rounds and error handling inside.

#security #encryption

How CloudFlare run their Kafka clusters with more than a trillion messages a day 👷‍♂️
Kafka has been used at Cloudflare for 8 years already and processed over 1 trillion messages in a general-purpose cluster. They built several internal tools, sunset part of them for better versions, and decided to share their journey in a detailed post. They show how their Connectors framework allows declaring data transformation with a single configuration file connecting multiple systems without repeating the same code over and over again. Nice one here.

Follow-up section is down below 👇🏽
👍4
Architecture Weekly #50 Follow-Up

Highlights are up above 👆🏽

The lost art of Software Design 🍼
Do you do a big upfront design? Or do you do the architecture design phase ever? Simon Brown's talk on the lost art of Software Design explains why there is a good middle-ground between the two and spices it up with multiple software design kata examples.
#architecture #systemdesign

You should be reading academic papers 🍼
For a long time, I was only reading blog posts. But once I started doing some system design I quickly realized that blogs are not enough: you need to understand the underlying problems. That's what academic papers are good for. StackOverflow Blog includes a short article on further motivation to do so.
#reading

Time, clocks, and event ordering in distributed systems 🤟
As long as we are talking about the papers, I want to remind you of a foundation paper on time, logical and physical clocks, and events ordering in distributed systems by Lesly Lamport. Have some fun with mathematical proofs!
#distributedsystem #paper

Leveraging CDC for real-time Inventory Data Processing 👷‍♂️
Proper inventory allows for having the appropriate amount of goods to sell. This is crucial for any e-shop and of course for grocery delivery. One option to know about the inventory updates is to make the notifications by the code which modifies the related tables. But if there are many code paths it can be a problem. DoorDash went with a different solution: having a Change-Data-Capture enables the near-real-time update. Check out the details inside!
#kafka #cdc

Enterprise Workloads at Scale with a Next-Gen IaaC Platform 🍼
Intuit is a U.S.-based company doing tax reporting automation. They are also a partner of AWS. Intuit was an early adopter of many cloud technologies, and CloudFormation was one of them. But running it at scale brought its own challenges, like a long feedback loop and the difficulty of finding and fixing the error. In this post, they tell the story of how they contributed to several open-source and AWS Cloud Development Kit as well.

Configuring the Vacuum process in the PostgreSQL 👷‍♂️
PostgreSQL leverages MVCC - multi-version concurrency control, which is a mechanism for ensuring consistency. Basically, a new version of a row does not overwrite the old one, but gets appended, but with a higher transaction id. With time the old records add up to occupied space, and VACUUM is the operation to remove them. Read here for more about it and how to configure it.

Like the newsletter? Consider helping to run it at Patreon or Boosty. The funds go to pay for the hosting and some software like a Camo Studio license. Patrons and Boosty subscribers of a certain level also get access to a private Architecture Community. Big thanks to Nikita, Anatoly, Oleksandr, Dima, Pavel B, Pavel, Robert, Roman, Iyri, Andrey, Lidia, Vladimir, August, and Roman for already supporting the newsletter. Join them as well!
👍3
Unfortunately, the sending functionality on the blog is not working now, the ghost instance can't reach the mailgun servers(DNS issue). Figuring out the exact problem.
😁10👌3
Folks! I want to make a session on the summing up the architecture trends of 2022. Wanna invite Gregor Hohpe for that. Would you mind retweeting my post about it?
https://twitter.com/vvsevolodovich/status/1613117466217189376?s=20&t=GsVmFKvicXh4mGT5ksObpQ
👍3
Architecture Weekly Issue #51.

Video

Highlights
Should architects code?
🍼
The common problem for architects is closing themselves up in an ivory tower - getting far from the actual code, making abstract decisions and imposing them on a team. This is a recognized antipattern, but the discussion is about the remedy. Gregor Hohpe wrote an article explaining how lines of code written by an architect do not bring much value; but the insights in the process do. So instead of coding you might be doing debugging instead. Follow Gregor on the new post in the Architect Elevator.

6 steps to autoscaling on Kubernetes 👷‍♂️
Everybody wants a performant, yet cost-efficient solution with any container orchestrator. Although Kubernetes can definitely give you that with autoscaling, just enabling Horizontal Pod Autoscaler won't cut it. You need to better understand your workload, performance baseline and some nuances about autoscaling like rightsizing the pods and performance baselines - like how many users a pod can handle before degradation occurs. This and actually many more in the Perficient Blog - a fascinating read indeed.

The Art of Writing Amazing REST APIs 🍼
Every second API on the Internet is a REST API. But many of them are poorly designed: they are inconsistent, they have bad errors and they hard to understand. Joy Ebertz wrote a good, long blog post what to keep in mind when you design a REST API. I think she also could have included some advice on the API versioning, but it can done as a separate article indeed.

Follow-Up is down below!
👍4
Architecture Weekly #51 Follow-Up
Multi-region deployment with AWS Whitepaper 👷‍♂️
How many availability 9s you need for your application? If it's 99.99%, it will be nearly impossible to satisfy within a single cloud region. This week AWS published a guide how to understand if you need a multi-region deployment, why you need to think about failover, data consistency and operations. Grab it here!

#aws #resilience #cloud

Introduction to IaaC on AWS 🍼
Continuiung AWS topic in this newsletter and the history of IaaC in previous one, I am sharing an introduction to the Iaac. This is a light article which covers the history of deployment and 4 different approaches: manual, scripted, declarative and component based.

#aws #cloud #iaac

Data Ingestion challenges 🍼
Tons of data nowadays is a norm - user requests, telemetry, IoT, business analytics and many more. The question which still is open how to process it efficiently. Grab an article on how to do it and what challenges you are going to face.

Modules, not microservices 🍼
Microservices promised us velocity, granularity, low coupling, quality and many more. But what we found were problems of distributed systems. In the short article Ted Neward reasoning that we wanted was actually modules with clear boundaries. Examples inside.

Troubleshooting Kafka for 2000 microservices 🤟
As an illustration of a problem with microservices, check out an article from Wix. The backbone of the product is tons of microservices communication through Kafka. And debugging a particular problem just reported from production could take long time. Then they introduced a lot of helpful tools like sidecars for request tracing, consumer lag monitoring and many more. Follow the article for details.

#kafka #microservice #observability

Real-time integration of PostgreSQL and Kafka 🤟
If you need to put data to several locations, like the database, index and some other storage the first idea which comes to a mind is to do a write right-away to those systems. Although being simple solution, it also bring a problem with consistency - what would do if a write to one of those system fails? Confluent blog suggests to write to the DB first, then capture the change with Kafka and connect it to the target location. Enjoy a nice article with bottled water analogy.
#kafka

Distributed State 🤟
Can't leave you without a paper to read. This time it's about distributed state. The paper covers the benefits of distributed state, but states that those are potential benefits and are hardly achieved due to consistency problems and performance drawbacks.
#distributedsystem

How databases store data on disk? 🤟
This week I publicly shared the video on how the dbs store data on disk in the form of files, pages and how to handle variable-size data. Checkout the video!

#databases #video

Like the newsletter? Wanna receive new content earlier, than everybody else? Consider helping to run it at Patreon or Boosty. The funds go to pay for the hosting and some software like a Camo Studio license. Patrons and Boosty subscribers of a certain level also get access to a private Architecture Community and of course every supporter gets early access. Big thanks to Nikita, Anatoly, Oleksandr, Dima, Pavel B, Pavel, Robert, Roman, Iyri, Andrey, Lidia, Vladimir, August and Roman for already supporting the newsletter. Join them as well!
🔥5👍1
Architecture Weekly #52 - Highlights

Video

Highlights
Architect's Intro to Data Science and Machine Learning 🍼
I personally kinda afraid of Data Science and ML, because I think it requires a lot of math I am not really good at. However, you will hardly build a complex enough system without either of those. So you'd better understand the terms and underlying principles at least at a high level. Redhat wrote a post in their "Enable Architect" blog with what you as an architect should know about the Data Science and Machine Learning. The list includes courses and learning materials, data manipulation tools, programming languages, data pipelines, types of machine learning and more.

#datascience #ml

Relational Databases Explained 🤟
We use RDBMS almost every day in our day to day jobs, but do we know enough? Do we know how do indexes work? Or how do dbs store data on the disk? What are the transactions and levels of isolations? Architecture Notes got you back with answers on those questions. You would be also appreciate my own Architecture Readings series on the YouTube channel as well.

#database #db

Continuous Architecture Manifesto 🍼
As we mentioned previously, architecture activity evolved from big upfront design to no design at all. Although the spectre has long range, we can find ourselves in another point of it - the place where we do architecture continuously. It means targeting a long-term product vision, and not a short-term project; performing it by the whole team; using holistic approach and more!
#architecture
👍2
Architecture Weekly #52 - Follow-Up

Reading DDIA notes 🍼
Designing Data Intensive Applications is a classical book nowadays. Magda Miu started a series of posts where she shares her notes while reading the book. She explains what she got from the book chapters, provides illustrations and complements it with the links for the further readings. Don't hesitate to follow her blog as well!
#ddia #reading #distributedsystem

Introduction to Time-Series Databases 🍼
We face time-series on multiple occasions from monitoring data to IoT and financial events. In order to store this data efficiently, there are special databases: TSDBs. What are there advantages and why they fit well with this type of data, read in the article below.

#database #timeseries

Consider All Microservices Vulnerable 🍼
Microservices usually have one well-defined purpose and narrow API surface. It helps improving the security, but does not obviously eliminate the threat completely. One of the tactics to improve the security of microservices in particular is monitoring their behaviour. If the malicious irefular requests and irregular response times are detected, then we can detect or even prevent an attack at an earlier stage. More details inside.

#k8s #security

Why Bolt use Node.JS? 👷‍♂️
Bolt uses exclusively Node.JS and Typescript for all the backend microservices, except ML and Data Science payloads. This is of course a architecturally significant decision which follows the business motivation of doing more with less. This week my coworker Denys Pysmennyi wrote a piece about this choice, it's consequences and drawbacks.

#backend #technology #nodejs

McDonald's Journey to Event-Driven Architecture 👷‍♂️
McDonald's is not only a set of restaurants for a quick break. It has rich IT infrastructure behind the scene. And the foundation for their systems is Event-Drivent architecture. In this post Derek Comartin shares some details from the McDonalds posts on how do they use Schema Registries, how they validate events and improve the messaging reliability.

#events
Any Decision Record? Architecture, Design and Beyond 🍼
Decision Records again! This time Olaf Zimmermann, the author of “Patterns of API Design", published a 10-minutes read about the applicability of ADRs for capturing not only architecture decisions, but as well as managerial or organizational ones. He also reasons what actually an architecturally significant decision is, and why a programming language choice is a one(mind the previous article). Get a read!

#architecture #adr

Like the newsletter? Wanna receive new content earlier, than everybody else? Consider helping to run it at Patreon or Boosty. The funds go to pay for the hosting and some software like a Camo Studio license. Patrons and Boosty subscribers of a certain level also get access to a private Architecture Community and of course every supporter gets early access. Big thanks to Nikita, Anatoly, Oleksandr, Dima, Pavel B, Pavel, Robert, Roman, Iyri, Andrey, Lidia, Vladimir, August and Roman for already supporting the newsletter. Join them as well!
👍1
Folks! I need a couple of developers with good GoLang experience and good English to interview candidates for a Go Developer position. Compensation is 100$ per interview. Drop me a DM if interested 🙂
🤡4👍1😁1
Architecture Weekly #53 - Highlights

Video

Is Scalable OLTP in the Cloud a Solved Problem? 🤟
As you folks love papers, I bring a fresh interesting one to the Highlights. Murat Demirbas from AWS posted an overview of a paper called "Is Scalable OLTP in the Cloud a Solved Problem?". The overview and the paper itself describe the shared-nothing, single-writer and multiple-writers designs of a scalable OLTP database and discuss their tradeoffs. Murat also highlights that the paper fails to consider metastable errors(which you can find a paper on here). The second part of the original paper is about a new DB and that's not that interesting, but the first part is gold.

#database #cloud #oltp #paper
Yandex Services Source Code Leak 🍼
The internet blew up this week with a major data source leak from a russian IT giant Yandex. The dump contains 44 GB of source code from their monorepository - which was not a single storage of the code in the company. The dump contains tons of services, configs, user-generated data like prompts for Voice Assistant and even database credentials for insider access. Although there are no trained models though, and you can't really build anything from it, as yandex infrastructure is required, you can still use it to learn how the things are done at a company of that scale.

#security #breach
System Design Interview Survival Guide 🍼
I know you folks read the newsletter partially because you want to be ready for the design interview. And the 3rd highlight today is the survival guide for exactly those. The article goes over the list of concepts to be aware of, the architecture patterns, database types, distribution system problems etc. Use as a nice checklist to prepare for the interview! And of course, you can reach out to @vvsevolodovich if you need a personal consultation 🙂

#systemdesign
🔥3
Follow-Up
Software Trends Report: What to Watch for in 2023 🍼
As we just wrapped up the 2022, it is good to get back and get an overview of the trends of the last year and see what we can expect in future. In this post at InfoQ they mention the use of ADRs, importance of Senior IC role and the emerge of Platform teams. They also highlight that you would rather treat platforms and data as products and handle those accordingly. As regarding the software architecture I've invited Uwe Friedrechsen for an hour long interview, so book your calendars!

#architecture #review
How to autoscale your SaaS application Infrastructure 👷‍♂️
RedHat has a series on SaaS Architecture Checklist. Recently they shared Chapter 9 which is about autoscaling the infrastructure. Michael Hrivnak explains how autoscaling can be configured using Cluster API, Cluster Autoscaler and Horizontal Pod Autoscaler so that your SaaS resources are truly elastic.

#kubernetes #saas #autoscaling #scalability
Must Read Free Kubernetes Books 🍼
Speaking of Kubernetes, take a look at the set of free books which help you to study Kubernetes itself, it's performance and security. The set also includes books on integration patterns and designing distributed systems.

#kata #books
Solution Architecture Kata Example 👷‍♂️
One of the books I recommended in this post, was "Fundamentals of Software Architecture" by Neil Ford. He also knows as a promoter of "Architecture Kata" exercise and he shows an example of a task for such activity in the aforementioned book. What I want to share with you is solving a problem to that particular Kata in this post on Medium. It includes understanding the context and iterating over the design versions. Take a look.

#architecture #kata
Document your event-driven architecture 🍼
In a loosely coupled, event-driven architecture we still want to know What events/messages is a particular service producing, what events/messages can I consume from the service, what is the message schema and more. This short article shows the 3 ways how you can document the answers to those questions.

#documentation #eda
Metrics for quality 🍼
When you introduce any metric for your software project, team or whatever else, you will always find out that the metric stops being useful due to Goodhart's law. So if you need to optimize your product for quality, what do you do? Well, if you study the quality itself, you will find out the outer, inner and process quality parts. The article though does not answer what metrics to pick - just how to think about the quality itself.

#quality #qa
Like the newsletter? Wanna receive new content earlier, than everybody else? Consider helping to run it at Patreon or Boosty. The funds go to pay for the hosting and some software like a Camo Studio license. Patrons and Boosty subscribers of a certain level also get access to a private Architecture Community and of course every supporter gets early access. Big thanks to Nikita, Anatoly, Oleksandr, Dima, Pavel B, Pavel, Robert, Roman, Iyri, Andrey, Lidia, Vladimir, August and Roman for already supporting the newsletter. Join them as well!
👍4🔥1
Time for the announcements! Fasten your seat belts 🙂

1. Software Architecture in 2022 Review with Uwe Friedrechsen happens on Feb, 6, 2023 at 2 PM GMT+2. Broadcast here.

2. Where do microservies go? Interview with Andrey Rebrov about do we go back to a monolith or lambda, what technologies support the microservies and what an ideal ms looks like.

Feb, 9, 2023 at 4 PM GMT+2. Broadcast here.

Make sure to subscribe and click the notify button 🙂
🔥8
Architecture Weekly #54 - Highlights

Video

MySQL vs PostgreSQL 👷‍♂️
When you ask yourself what relational database you want to pick for a new project, you would probably name MS SQL, Oracle, MySQL, PostgreSQL, and maybe some more. How would you compare the choices? You definitely want to see the data types support, indexing, performance, replication, support for transactions and isolation levels and more. Today I am sharing a good comparison between MySQL and PostgreSQL which includes all of the above. The article also shows that migration is currently in favour of PostgreSQL. Check out the link to understand why.

#mysql #postgresql #database #comparison
Gentle introduction to DDD 🍼
I touched on the Domain-Driven Design topic several times in both the newsletter and the blog itself. If you're new to a topic, want to refresh your knowledge or are just not sold whether you need to read a book, find a lengthy article on the introduction to DDD, which basically covers the content of "Learning the DDD" by Vlad Khononov briefly. But what's good about it - it has a healthy dose of funny memes which improves the reading experience significantly.

#ddd
Asynchronous computing at Meta 👷‍♂️
Meta has tons of data, and they prefer to handle their workloads asynchronously, so they built their own ordering queueing system called FOQS(wonder, what it says) and employed a component called Dispatcher that would manage the ingestion into it. Although it was working fine, the team noted that the Dispatcher incorporated too much of responsibility for consumption, rate limiting, routing the workload and many more. So they decided to improve the async layer architecture and they shared how they did it and why. I understand the problems they face like retries with streams, delays, etc but like really? Why do you reinvent the already existing streaming solutions? Maybe you will find the answers in the article.

#architecture #casestudy #queue
🔥2👍1
Architecture Weekly #54 - Follow-Up

Unlocking the power of service mesh 👷‍♂️
The service mesh is an idea of adding the features, common to all the microservices not through libraries, but by runtime components running alongside the actual services. But with all the traffic management, routing and security features meshes bring, the complexity of those solutions grows as fast. Please find a 5-part series of articles on the services meshes which guides you through the introduction to service meshes, names a few examples, and demonstrates their internal architecture and working principles.

#servicemesh #patterns
List of books for software design 🍼
Learning and mastering software design comes not only with practice, but also knowing the theory. Grab an article with 8 books you might appreciate to build better applications and more robust systems.

#systemdesign #books
A short note on idempotency 👷‍♂️
Exactly once is a holy grail of events-based systems. You possibly can not have this in general, but you can help the issue if your event handling is idempotent: receiving the event the second time won't affect the state of the system. Get a short note of the explanation.

#idempotency
Actor model explained 👷‍♂️
Find another short note, this time - on the actors. Basically, the author tells the story of transitioning from the arbitrary procedure-style way of implementing a synchronization lock to an actor-based implementation, where you send the events from several computing instances in an async manner and letting another instance handle them thus removing the performance constraints. More details inside 🙂

#async #patterns

Critique of the Spotify Model 🍼
And the last one for today is about team organization which is frequently part of an architect's job as well. You might have heard about Spotify's model with autonomous cross-functional teams and people misunderstanding the principles of those. Grab 2 articles on why it's important to have aligned autonomy, TechRadar, support for Golden Path and more!
👍5
Today I am interviewing Andrey Rebrov - a co-founder & CTO at Scentbird - about microservices. How we came to them, what are the microservices problems, what's the ideal size of a microservice and where do we go with them. Join the broadcast at 4 PM GMT+2! Make sure to attend, as the recording will be taken private for a couple of weeks

https://youtube.com/live/PboH8FFqq5c
🔥5👍1