Software Architecture

General material on the engineering underneath an architecture.

3Questions
16Flashcards
18Terms
Terminology

18 terms in this topic

pattern

Blue-Green Deployment

Running two identical production environments and switching traffic from the old one to the new one in a single cut, with the old kept warm for rollback.

pattern

Canary Release

Routing a small fraction of traffic to a new version, watching its metrics, and expanding or rolling back based on what they show.

practice

CI/CD

Merging work continuously into a shared trunk with automated verification, and keeping every commit in a state that could be released.

pattern

Clean Architecture

Concentric layers with a strict dependency rule — source code dependencies point only inwards, towards higher-level policy.

concept

Cognitive Load

The total amount a team must hold in its head to work effectively, and a real constraint on how many services or domains one team can own.

practice

Domain-Driven Design

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

metric

DORA Metrics

Four measures of software delivery performance — deployment frequency, lead time for change, change failure rate, and time to restore service.

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

Feature Flag

A runtime switch that decouples deploying code from releasing behaviour, so unfinished or risky work can ship dark.

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.

practice

Test Pyramid

A distribution of tests weighted towards many fast unit tests, fewer integration tests, and very few slow end-to-end tests.

practice

Trunk-Based Development

All developers integrating small changes into a single shared branch at least daily, with long-lived branches avoided entirely.

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.

No content yet

Domain-Driven Design

Ubiquitous language, bounded contexts and context mapping.

No content yet

Bounded Contexts

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

No content yet

Clean Architecture

Concentric layers with dependencies pointing only inwards.

No content yet

Hexagonal Architecture

Ports defined by the domain, adapters supplied by infrastructure.

No content yet

Microservices

Independent deployability, and the distributed problems it buys.

No content yet

Modular Monolith

Enforced internal boundaries without a network between them.

No content yet

Service Boundaries

Drawing lines along change patterns rather than technical layers.

No content yet

Design Patterns

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

No content yet

Refactoring

Changing structure without changing behaviour, in verified steps.

No content yet

Technical Debt

Deliberate, tracked and repaid — as distinct from mess.

No content yet

Testing Strategies

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

No content yet

Contract Tests

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

No content yet

CI/CD

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

No content yet

Release Strategies

Blue-green, canary, shadow and progressive delivery.

1 cards 1 terms

Feature Flags

Decoupling deploy from release, with an expiry date.

No content yet

Trunk-Based Development

Short-lived branches, and unmerged work as inventory.

No content yet

Code Review

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

No content yet

DORA Metrics

Throughput and stability moving together rather than trading off.

No content yet