Cover of Fundamentals of Software Architecture by Mark Richards, Neal Ford - Business and Economics Book

From "Fundamentals of Software Architecture"

Author: Mark Richards, Neal Ford
Publisher: O'Reilly Media
Year: 2020
Category: Computers

🎧 Free Preview Complete

You've listened to your free 10-minute preview.
Sign up free to continue listening to the full summary.

🎧 Listen to Summary

Free 10-min Preview
0:00
Speed:
10:00 free remaining
Chapter 7: Scope of Architecture Characteristics
Key Insight 1 from this chapter

The Architecture Quantum and Connascence

Key Insight

The traditional assumption of system-level scope for architecture characteristics is outdated, particularly with modern architectural styles like microservices. To measure structural evolvability effectively, architects require techniques beyond low-level code metrics, which fail to evaluate critical external dependent components like databases that significantly impact operational characteristics. This necessity led to defining an 'architecture quantum,' a concept fundamentally built upon 'connascence.' Connascence, first defined in 1996, means two components are connascent if a change in one requires modifying the other to maintain the system's overall correctness.

Connascence manifests in two primary types: static and dynamic. Static connascence is discoverable via static code analysis, exemplified by two microservices sharing a class definition, such as an 'address' class; changing this shared class necessitates modifications in both services. Dynamic connascence pertains to runtime behavior, further categorized into synchronous and asynchronous. Synchronous calls, where a caller awaits a response from a distributed service, imply that the operational architecture characteristics of these interacting services must be consistent for the call's duration. In contrast, asynchronous calls, common in event-driven architectures with 'fire-and-forget' semantics, allow services to possess differing operational architectures, with mechanisms like message queues buffering temporary disparities, such as a payment service only handling one payment every 500 ms.

An 'architecture quantum' is precisely defined as an independently deployable artifact possessing high functional cohesion and synchronous connascence. An independently deployable quantum encapsulates all components essential for its function, including a database if required; consequently, a legacy monolithic system with a single database inherently forms a quantum of one, while microservices with individual databases create multiple distinct quanta. High functional cohesion ensures the contained code is unified in purpose, aligning with microservices designed to match a single workflow or 'bounded context.' Lastly, synchronous connascence within the quantum dictates that synchronously interacting components must maintain consistent operational architecture characteristics to prevent issues like timeouts or reliability concerns across the quantum.

📚 Continue Your Learning Journey — No Payment Required

Access the complete Fundamentals of Software Architecture summary with audio narration, key takeaways, and actionable insights from Mark Richards, Neal Ford.