Architecture Weekly #77

Architecture Weekly Issue #77. Articles, books, and playlists on architecture and related topics. Split by sections, highlighted with complexity: 🤟 means hardcore, 👷‍♂️ is technically applicable right away,  🍼 - is an introduction to the topic or an overview. Now in telegram as well.

WARNING 🇺🇦

It's already been a year since Russia's crazy, brutal and unjustified war against Ukraine. We condemn this war and want it to stop ASAP. We continue this newsletter so you can advance your skill and help the millions of Ukrainian people in any way possible. If you want to help directly, visit this fund.

Big thanks to Nikita, Anatoly, Oleksandr, Dima, Pavel B, Pavel, Robert, Roman, Iyri, Andrey, Lidia, Vladimir, August, Roman, Egor, Roman, Evgeniy, Nadia and Daria for supporting the newsletter. They receive early access to the articles, influence the content and participate in the closed group where we discuss the architecture problems. They also see my daily updates on all the things I am working on. Join them at Patreon or Boosty!  

Glad to announce that 25th of July, 1 PM GMT+3 I am having an interview with Marharita Nedzelska - Kotlin GDE and Software Engineer at SonarCube - on Static Code Analysis.

Highlights

As cloud innovation evolves, the focus has shifted to workload migration and re-architecting. Key roles are envisioned for Artificial Intelligence (AI) and Large Language Models (LLMs) in managing cognitive overload and supporting tasks in the cloud and DevOps environment. This trend is seen in AI integrations by leading cloud providers. AI also influences low-code/no-code domains, fostering collaboration between business and software engineering teams. In platform engineering, the emphasis is on simplification, value delivery, and sustainability. OpenTelemetry gains industry-wide acceptance for data collection, while green computing principles guide architectural choices. This and other trends in DevOps and Cloud Trends Report by InfoQ!

DevOps and Cloud InfoQ Trends Report – July 2023
InfoQ editorial staff and friends of InfoQ are discussing the current trends in the domain of cloud and DevOps as part of the process of creating our annual trends report. These reports provide InfoQ readers with a high-level overview of the topics to pay attention to and help the editorial team foc…

#statereport #devops #cloud

Decentralizing the Practice of Architecture at Xapo Bank 👷‍♂️

Xapo Bank evolved from a startup allowing to exchange Bitcoins into a proper bank with a license. However, they had huge architecture problems, as there was an old-school architecture committee on top of the organization, plus the company was divided into the departments like Product, Design, Engineering, QA  - which is receipt to slow development itself. Find out how Thoughtworks helped them with the reorganization, introducing ADR practices and decentralizing the architecture function itself.

Decentralizing the Practice of Architecture at Xapo Bank
An experience report of using the Architecture Advice Process at Xapo Bank

#casestudy #architecture

DynamoDB - Designing the data relation in a single table 👷‍♂️

I am not a big fan of a single table(or collection) approach due to its increasing complexity. I prefer to keep entities in different collections in a NoSQL database. However, single-table approach is still viable. Find an article which describes how it can be done with an example of DynamoDB. The article requires medium sign-in, but still is worth it.

DynamoDB — How to design your data relationship fit into “One Table” (Part 1)
Amazon DynamoDB is a fully managed, serverless, key-value NoSQL database designed to run high-performance applications at any scale. When…

#database #nosql #datamodelling

Follow-Up

Understanding AWS Lambda Proactive Initialization 🤟

Serverless promise was to allow developers to focus on the application logic and forget about the infrastructure. However, the major problem with AWS Lambda was the cold start: when you need to handle the payload, but the is no instance available, so the request should have waited around 10 seconds to get initialized. In many applications it can be a critical problem; there were workarounds of course, like CloudWatch pings, etc. However, you can worry no-more: AWS now preinitializes the functions, even if there are no invocations. Find the technical details in the article.

Understanding AWS Lambda Proactive Initialization
AWS Lambda warms up your functions, such that 50%-85% of Lambda Sandbox initializations don’t increase latency for users. In this article we’ll define Proactive Initialization, observe its frequency, and help you identify invocations where your cold starts weren’t really that cold.

#aws #serverless

End-to-end Tracing by Canva 👷‍♂️

We mentioned OpenTelemetry adoption in the Highlights section. Please find a piece from Canva Engineering blog, where they describe how they started adopting OpenTelemetry as a hackathon in the beginning, but realized its power and decided to fully adopt it.

End-to-end Tracing - Canva Engineering Blog
How Canva implemented end-to-end tracing and are using it to drive operational insights

#observability #opentelemetry

Implementing Idempotency in Serverless Architecture 👷‍♂️

Idempotency - a property of a distributed system - is the ability to yield the same result in case a request is repeated. So if you're requesting a creation of the same entity two times in a row, there will be only one copy. This property is important in Serverless environment as, for example, AWS Lambda can repeat the failing requests for you. In order to implement the property you would want to handle the entity called idempotency key. But lucky we are, there is a library to do that. Follow the article for more details.    

Implementing Idempotency in Serverless Architectures
Dr. Werner Vogels, Amazon’s CTO, reflected on the lessons learned from 10 years on AWS, saying

#serverless

Inheritance and polymorphism 👷‍♂️

Another piece on data-modelling. The article argues that SQL can not naturally model object-oriented data models, which are so widespread. You have to choose between 3 different ways to do that, none of which are coming without the tradeoffs. The article also suggests the TypeDB as a potential solution to those problems.

Inheritance and polymorphism: where the cracks in SQL begin to show
Polymorphism can be one of the most challenging things to model in a database. Not only do you want your database to be performant, you…

#database #datamodelling #typedb

Should Ride-Haling companies build their own maps? 🍼

A short note on the build vs buy dilemma, using the example of Maps solution for a ride-hailing service. Lyft built its own, but should all the Ride Hailing companies do the same? Find out the decision consideration inside.

Should Ride-Hailing Companies Build their own Maps? Some thoughts on Lyft Recent Decision
Build vs Buy vs Partner Conversation

#casestudy

Unexpected downsides of UUID keys in PortgreSQL 🤟

This article discusses the pros and cons of using universally unique identifiers (UUID) as primary keys in databases. While UUIDs offer the advantage of independent key generation and ease of record transfer between databases, they are associated with a loss of temporal locality. The piece delves into the issue of random UUID generation, leading to a loss of correlation between the order of inserts and the order of IDs. This lack of correlation affects the cache hit rates and performance, which are critical for larger databases. The article also suggests a remedy by advocating for the use of sequential UUIDs instead of random ones, thereby improving data locality and cache efficiency.

Unexpected downsides of UUID keys in PostgreSQL - CYBERTEC
Understand how using UUIDs as primary keys can affect PostgreSQL performance, and how to tweak your index to avoid UUID performance pitfalls.

#databases #postgresql