Software Architecture

General material on the engineering underneath an architecture.

4Questions
18Flashcards
10Terms
Terminology

10 terms in this topic

concept

Architectural Significance

The test that separates decisions worth reviewing from the ones a team should make alone, by asking what undoing each one would cost rather than how …

practice

Domain-Driven Design

Modelling software around the business domain, with boundaries drawn where the language of the business changes.

case-study

Etsy's Continuous Deployment

Etsy moved from infrequent, risky releases to dozens of deploys a day, demonstrating that deployment frequency and stability improve together rather …

pattern

Microservices

An architectural style where an application is a set of independently deployable services, each owning its data and aligned to a business capability.

case-study

Monzo's Microservice Estate

Monzo runs a bank on well over a thousand microservices, and the interesting engineering is in the platform and network isolation that makes that num…

practice

Refactoring

Changing the internal structure of code without changing its external behaviour, in small verified steps.

concept

Service Boundary

The line separating what one service owns and is accountable for from what it must ask another service about.

practice

SOLID

Five object-oriented design principles — single responsibility, open/closed, Liskov substitution, interface segregation, dependency inversion.

concept

Technical Debt

The future cost incurred by choosing an expedient implementation now instead of the better one.

case-study

Uber's Domain-Oriented Microservice Architecture

After growing to roughly 2,200 microservices, Uber grouped them into domains behind gateways with strict dependency layering, to recover the comprehe…

Software Architecture & Engineering

Neighbouring topics

SOLID

Five design principles, two of which scale beyond the class.

4 quiz 9 cards 2 terms

Domain-Driven Design

Ubiquitous language, bounded contexts and context mapping.

3 quiz 7 cards 3 terms

Bounded Contexts

Where one model ends and another begins, and why forcing one fails.

3 quiz 8 cards 3 terms

Clean Architecture

Concentric layers with dependencies pointing only inwards.

4 quiz 8 cards 2 terms

Hexagonal Architecture

Ports defined by the domain, adapters supplied by infrastructure.

3 quiz 11 cards 3 terms

Microservices

Independent deployability, and the distributed problems it buys.

4 quiz 10 cards 4 terms

Modular Monolith

Enforced internal boundaries without a network between them.

5 quiz 13 cards 6 terms

Service Boundaries

Drawing lines along change patterns rather than technical layers.

6 quiz 9 cards 6 terms

Design Patterns

Reusable solutions at code level, and when they become ceremony.

4 quiz 10 cards 3 terms

Refactoring

Changing structure without changing behaviour, in verified steps.

3 quiz 7 cards 5 terms

Technical Debt

Deliberate, tracked and repaid — as distinct from mess.

5 quiz 10 cards 4 terms

Testing Strategies

The pyramid, and the contract tests distributed systems add to it.

4 quiz 11 cards 3 terms

Contract Tests

Capturing what consumers actually use, not what the API documents.

3 quiz 9 cards 2 terms

CI/CD

Continuous integration and delivery, and the architecture that caps them.

4 quiz 9 cards 2 terms

Release Strategies

Blue-green, canary, shadow and progressive delivery.

5 quiz 11 cards 2 terms

Feature Flags

Decoupling deploy from release, with an expiry date.

6 quiz 13 cards 6 terms

Trunk-Based Development

Short-lived branches, and unmerged work as inventory.

4 quiz 10 cards 2 terms

Code Review

Where architectural rules are enforced by people rather than by tools.

5 quiz 10 cards 2 terms

DORA Metrics

Throughput and stability moving together rather than trading off.

5 quiz 13 cards 1 terms