Reminder: Why architecting for fast, sustainable flow is important

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 thru architecture:

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

In this article, I dissect the phrase ‘architecting for fast, sustainable flow’ and briefly describe the architectural characteristics that DevOps and Team Topologies need.

Let’s begin by defining the term ‘fast flow’.

What is fast flow?

As I described in the previous article, the key idea of fast flow is that an organization’s structure, culture and work practices along with its application architecture should be such that it delivers a continuous stream of valuable changes to its customers. The underlying metaphor is of a river flowing fast and smoothly, with no blockages or bottlenecks.

Fast flow is a key goal of both DevOps and the Team Topologies. Team Topologies is set of principles and patterns for organizing business and technology teams for fast flow. DevOps is a set of principles and practices that those teams should follow in order to deliver software rapidly, frequently, and reliably.

What is sustainable flow?

The Law of Continuing Change describes how software must constantly change in response to changing requirements. However, even if the requirements miraculously never changed, you would still need to develop your application. That’s because technologies (and technology versions) constantly evolve. It’s essential that you continually upgrade your application’s technology stack - libraries, language, infrastructure, … - in order to keep it current.

Specifically, the importance of a technology (version) to your organization should match its importance in the market. Otherwise, you will encounter various issues caused by the lack of support, bug patches, learning resources, and developers who know the technology and want to use it

What is architecting?

Architecting is the act of designing an application’s architecture. The classic definition of software architecture by Len Bass and colleagues at the Software Engineering Institute is:

The software architecture of a computing system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.

Architecture is multi-dimensional

Architecture is multi-dimensional. The dimension determines the nature of the elements and their relationships. One important dimension is the domain view, which is comprised of subdomains/bounded contexts. A subdomain/bounded context is a slice of business functionality. It can collaborate with one or more other subdomains/bounded contexts to fulfill its responsibilities. A subdomain/bounded context is owned by a stream-aligned team.

The goal of architecture is to satisfy the non-functional requirements

The purpose of architecture is to satisfy the application’s non-functional requirements. There’s two broad categories of non-functional requirements. There are the runtime requirements, such as performance, scalability, availability, and security. Quite often, it’s the runtime requirements that the architects focus on. However, there are also development time requirements. In particular, the architecture must have development time characteristics that support fast, sustainable flow.

Architectural requirements for fast flow

In order for fast flow to occur, an architecture must support DevOps and Team Topologies. There are five key architectural requirements for fast flow:

  • Team-sized elements - in order to avoid cognitive overload the architecture must consist of team-sized elements
  • Loose (design-time) coupling - loose coupling identified by the authors of the book Accelerate as a key predictor 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.

Architecting for sustainable flow

In order to sustain fast flow, an architecture must support the continual upgrading of the application’s technology stack. One clear advantage of the microservice architecture over the monolith architecture is that it enables you to incremental upgrade an application’s technology stack one service at a time. The upgrade can be done as a series of comparatively small tasks. In contrast, you must upgrade the entire monolith at once. While this is clearly doable, it’s a much bigger task that typically spans multiple teams and hence less likely to be done.

Intentional architecting is required

An architecture that supports fast, sustainable flow doesn’t happen by accident. For example, applying Conway’s law to define the architecture that mirrors the organization is a good start. But it doesn’t guarantee that the architecture will have the characteristics described above. Team Topologies even emphasizes the importance of first knowing the architecture:

Conway’s law tells us that we need to understand what software architecture is needed before we organize our teams, otherwise the communication paths and incentives in the organization will end up dictating the software architecture. As Michael Nygard says: “Team assignments are the first draft of the architecture.”

You need to intentionally design your architecture using a deliberative decision making process, to ensure that it has the characteristics described above. You can then use the Inverse/Reverse Conway Maneuver and apply the Team Topologies patterns to design an organization that mirrors the architecture.

The key decision - picking an architectural style: monolith or microservices

The key decision when architecting for fast, sustainable flow is the choice of architectural style. There are two architectural styles to choose from: the monolith architecture and the microservice architecture. The monolithic architecture is simpler, but can be an obstacle to fast flow if the application or its organization are large. Microservice architecture is better suited to larger applications and organizations, yet is more complex. Careful analysis is required to pick the right architectural style.

Using the chosen architectural style requires careful design

Simply choosing an architectural style is not enough. A badly designed monolith or microservice architecture will be an obstacle to fast flow. Both architectural styles require deliberate design to ensure that the architecture has the required characteristics. The particular challenges depend, however, on the the chosen architectural style.

When developing a monolith, the single, large code base creates numerous challenges. You need to carefully manage complex, maximize team autonomy and minimize the build time. There are several design patterns that you can apply to address these challenges.

When developing a microservice architecture, the key challenge is ensuring that the services are loosely coupled and independently deployable. You must use a rigorous design process, such as Assemblage.

Want to learn more?

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.
  • The key monolithic architecture patterns for fast flow.
  • 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

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

Architecting for fast, sustainable flow public workshops scheduled

Tuesday, July 23, 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

JSK Daily for Nov 6, 2024

Wednesday, November 6, 2024

JSK Daily for Nov 6, 2024 View this email in your browser A community curated daily e-mail of JavaScript news Unveiling the New Angular 3D Circular Charts Component The Angular 3D Circular Charts

Daily Coding Problem: Problem #1600 [Easy]

Wednesday, November 6, 2024

Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Amazon. Implement a stack API using only a heap. A stack implements the following

Know What You Control 🪰

Wednesday, November 6, 2024

How a bug-fixing endeavor gave me a good POV on election night. Here's a version for your browser. Hunting for the end of the long tail • November 06, 2024 Know What You Control If you're stuck

Spyglass Dispatch 003: Lina Gone • Prediction Market Victory Laps • TikTok Saved? • Apple's Smarter AI • The Return of Tim Apple

Wednesday, November 6, 2024

Lina Gone • Prediction Market Victory Laps • TikTok Saved? • Apple's Smarter AI • The Return of Tim Apple The Spyglass Dispatch is a free newsletter sent out daily on weekdays. Feel free to forward

Top Tech Deals 💰 $20 Monster Earbuds, TCL TVs, Anker Power Station, and More

Wednesday, November 6, 2024

Pre-Black Friday deals you won't want to miss. How-To Geek Logo November 6, 2024 Top Tech Deals: $20 Monster Earbuds, TCL TVs, Anker Power Station, and More Pre-Black Friday deals you won't

Zuzalu is Dead. Long Live Zuzalu! - Metamorphosis Commenced v3

Wednesday, November 6, 2024

Top Tech Content sent at Noon! NODES 2024, a Dev Conference on AI, Knowledge Graphs & Apps Read this email in your browser How are you, @newsletterest1? 🪐 What's happening in tech today,

The best open-source AI models

Wednesday, November 6, 2024

Drone flight goggles; Kindle Paperwhite hands-on; Best laptop deals -- ZDNET ZDNET Tech Today - US November 6, 2024 ai concept The best open-source AI models: All your free-to-use options explained

Bolster Your Cyber Defenses with CIS Controls v8.1

Wednesday, November 6, 2024

Key changes to help you mature your cybersecurity posture... ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

Reducing insider trading in a microservice architecture

Wednesday, November 6, 2024

You are receiving this email because you subscribed to microservices.io In November, I'll be teaching public workshops in Berlin and Milan. I hope you will enroll. My service collaboration patterns

INTERPOL Disrupts Over 22,000 Malicious Servers in Global Crackdown on Cybercrime

Wednesday, November 6, 2024

THN Daily Updates Newsletter cover Introduction to Algorithms: A Comprehensive Guide for Beginners: Unlocking Computational Thinking ($34.99 Value) FREE for a Limited Time Begin your journey into the