Architecting monoliths for fast, sustainable flow

You are receiving this email because you subscribed to microservices.io


Next month, I'm teaching an online public workshop Architecting for fast, sustainable flow: enabling DevOps and Team Topologies:

  • Americas, 8am-11am Pacific Time, September 4th-6th, 2024
  • World, 9am-11am CET/4pm-7pm Korea Time, September 23th-25th, 2024

In a previous article Dissecting ‘architecting for fast, sustainable flow’, I described how fast, sustainable flow requires an architecture with several key characteristics. In this article, which is based on my workshop Architecting for fast, sustainable flow: enabling DevOps and Team Topologies I’ll describe how to architect monoliths to achieve fast, sustainable flow.

Architectural requirements for fast, sustainable flow

As I previously described, fast flow is the continuous delivery of a stream of valuable changes to customers. Sustainable flow is ability to keep the application’s technology stack current. Fast, sustainable flow requires an architecture with several key characteristics:

  • Team-sized elements - in order to avoid cognitive overload, the architecture must consist of team-sized elements
  • Loose (design-time) coupling - loose coupling was identified by the Accelerate authors as a key enabler of high performance. It’s also a consequence of Conway’s law: loosely coupled teams (defined by Team Topologies) need a loosely coupled architecture.
  • Testability - the path from development to production must be a fast, automated deployment pipeline. An application must, therefore, be capable of being tested using automated tests. Those tests must be fast. Moreover, a developer must be able to run the tests on their local machine.
  • Deployability - the application must support fast, reliable, automated deployments.
  • Observability - the deployed application must emit a stream of telemetry - logs, metrics, and distributed traces - which is feedback to the developers about the behavior of application and its users. The telemetry is used to monitor the application’s health and diagnose problems. It’s also used to understand user behavior.
  • Evolvability - the architecture must support the continuous upgrading of the application’s technology stack.

About the monolithic architecture

The monolithic architecture is an architectural style that structures the application as a single executable/deployable unit, e.g. a single WAR or executable file. Moreover, there’s a single code base with a single deployment pipeline.

A monolithic architecture is simpler than a microservice architecture. For example, operations can be implemented as ACID transactions. But unfortunately, for some applications, the monolithic architecture can be an obstacle to fast, sustainable flow. To understand why, let’s take a look at how well it satisfies the architectural requirements described earlier.

Architecting monoliths for fast, sustainable flow

With careful design, a monolith architecture is able to satisfy some but not all of the architectural requirements for fast, sustainable flow. Let’s look at the details starting with the biggest drawback of the monolithic architecture: poor evolvability.

Evolving a monolith’s technology stack is challenging

Sadly, one inherent limitation of the monolithic architecture is that evolving the technology stack can be challenging. Because a monolith has a single technology stack, you must upgrade the entire technology stack at once. While tools such as OpenRewrite can automate some upgrades, upgrading a large code base is often a massive task that spans multiple teams. It’s difficult to schedule since it disrupts feature delivery. There are also limited opportunities to experiment with new technologies.

Monoliths are mostly observable

Observability is mostly unrelated to the architecture style. A monolith can be instrumented so that it emits a stream of telemetry. One inherent limitation, however, is that the telemetry is for the entire application. You cannot, for example, see the resource consumption of an individual subdomain.

Creating a loosely coupled monolith requires careful design

To achieve fast flow the monolith must be structured as a collection of loosely (design-time) coupled, team-sized elements (e.g. modules). Loose (design-time) coupling requires elements to resemble icebergs. Each element must have small, stable API that encapsulates the much larger implementation.

Unfortunately, however, the traditional monolithic architecture is a technically-oriented, layered architecture, which does not meet these requirements. The layers of a large application’s layers not team-sized. Teams typically work across multiple layers. And to make matters worse, the layers are typically not loosely coupled. Careful design is required to structure the monolith as a collection of loosely coupled, team-sized modules.

Creating a testable and deployable monolith requires careful design

Designing a monolith that is loosely coupled is not the only challenge. The monolith consists of a single code base and a single deployment pipeline. As a result, the deployment pipeline is potentially a bottleneck and an obstacle to fast flow.

That’s because the larger the code base, the longer the deployment pipeline’s execution time. And to make matters worse, the larger the engineering organization the higher the rate of Git pushes. As a result, Git commits either wait in the deployment pipeline’s queue, which delays feedback, or are batched, which makes it more difficult to troubleshoot production issues.

The throughput of a single deployment pipeline is limited. But, you can minimize its execution time and increase its throughput through careful design. You must use a combination of physical design techniques, and testing strategies, to minimize the deployment pipeline’s execution time.

Want to learn more?

As you can see, architecting monoliths for fast flow requires careful design. If you want to learn how to design a fast flow architecture, enroll in my upcoming public online workshop on architecting for fast, sustainable flow:

  • Americas, 8am-11am Pacific Time, September 4th-6th, 2024
  • World, 9am-11am CET/4pm-7pm Korea Time, September 23th-25th, 2024

You will learn:

  • Architectural requirements for fast, sustainable flow.
  • The forces that shape an architecture and the trade-offs that you will need to make when designing an architecture.
  • How to decide between the monolithic and microservice architectural styles.
  • How to design a loosely coupled monolith.
  • Physical design techniques and testing strategies to accelerate the deployment pipeline.
  • How to design a microservice architecture.

Need help with accelerating software delivery?

I’m available to help your organization improve agility and competitiveness through better software architecture: training workshops, architecture reviews, etc.

Learn more about how I can help

Older messages

Reminder: Why architecting for fast, sustainable flow is important

Tuesday, August 20, 2024

You are receiving this email because you subscribed to microservices.io Next month, I'm teaching an online public workshop: Architecting for fast, sustainable flow: Enabling DevOps and Team

Why architecting for fast, sustainable flow is important

Tuesday, August 20, 2024

You are receiving this email because you subscribed to microservices.io Next month, I'm teaching an online public workshop: Architecting for fast, sustainable flow: Enabling DevOps and Team

Reminder: Better architecture thru deliberative design

Thursday, August 8, 2024

Upcoming public architecture workshops You are receiving this email because you subscribed to the microservices.io mailing list. Helping organizations accelerate software delivery You are eager to

Better architecture thru deliberative design

Tuesday, August 6, 2024

Upcoming public architecture workshops You are receiving this email because you subscribed to the microservices.io mailing list. Helping organizations accelerate software delivery You are eager to

Reminder: Architecting for fast, sustainable flow public workshops scheduled

Tuesday, July 30, 2024

Microservices rules: what good looks like You are receiving this email because you subscribed to the microservices.io mailing list. Helping organizations accelerate software delivery You are eager to

You Might Also Like

Elastic Community Newsletter

Tuesday, December 24, 2024

Check out the latest from the Elastic Community ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ elastic | Search. Observe. Protect community-newsletter-header-img.png

Daily Coding Problem: Problem #1646 [Medium]

Monday, December 23, 2024

Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Facebook. Write a function that rotates a list by k elements. For example, [1, 2, 3, 4,

GCP Newsletter #430

Monday, December 23, 2024

Welcome to issue #430 December 23rd, 2024 News Event Official Blog Calling all devs: Code the future of baseball with Google Cloud and MLB - Google Cloud and MLB are hosting a hackathon where

⏯️ Make a Holiday Guest Profile for Your Streaming Services — What Is Linux Mint?

Monday, December 23, 2024

Also: I Played the Worst Mobile Games So You Don't Have To, and More! How-To Geek Logo December 23, 2024 Did You Know The giant splashes of color that make poinsettias a popular holiday decoration

Ranked | The Most Satisfying vs. Most Reliable Car Brands in 2024 🚙

Monday, December 23, 2024

The most reliable car brands are rarely the most satisfying to own, according to recent Consumer Reports survey data. View Online | Subscribe | Download Our App Presented by: Find the megatrends

Bitcoin Enthusiasts Are Letting Altcoins Pass by

Monday, December 23, 2024

Top Tech Content sent at Noon! Boost Your Article on HackerNoon for $159.99! Read this email in your browser How are you, @newsletterest1? 🪐 What's happening in tech today, December 23, 2024? The

Last Minute Gifts from Walmart

Monday, December 23, 2024

ZDNET ZDNET Sponsored Message In Partnership with Walmart December 23, 2024 exclusive offer Walmart Last-minute gifts from Walmart Shop Now Walmart The tech you've been wishing for–at everyday low

15 ways AI saved me weeks of work in 2024

Monday, December 23, 2024

ZDNET's product of the year; Windows 11 24H2 bug list updated -- ZDNET ZDNET Tech Today - US December 23, 2024 AI applications on various devices. 15 surprising ways I used AI to save me weeks of

Distributed Locking: A Practical Guide

Monday, December 23, 2024

If you're wondering how and when distributed locking can be useful, here's the practical guide. I explained why distributed locking is needed in real-world scenarios. Explored how popular tools

⚡ THN Weekly Recap: Top Cybersecurity Threats, Tools and Tips

Monday, December 23, 2024

Your one-stop-source for last week's top cybersecurity headlines. The Hacker News THN Weekly Recap The online world never takes a break, and this week shows why. From ransomware creators being