Learning path
Software Architecture Fundamentals learning path: everything to study, topic by topic
Comprehensive assessment covering software architecture thinking, patterns, quality attributes, distributed systems design, architectural decision-making, and architecture leadership. Covers foundational principles through expert-level evolutionary architecture and technology strategy.
Short answer
To learn Software Architecture Fundamentals, work through 6 modules and 26 topics in the order they build on each other. It starts with Architecture Foundations, then moves on to Architectural Patterns and Quality Attributes. Use the map as a checklist, or measure your level and study only what is missing.
What you will study
Topics are grouped by module. Open one to see its objectives and key concepts.
1 · Architecture Foundations5 topics
Architectural Thinking
Understanding the role of software architecture, the distinction between design and architecture, and how to reason about structure, behavior, and cross-cutting concerns at scale.
Objectives
- Articulate the difference between software architecture and low-level design
- Identify the key responsibilities of a software architect
Key concepts
- architecture vs design
- structural decisions
- cross-cutting concerns
- architecture characteristics
- implicit vs explicit architecture
- first principles reasoning
Layered Architecture
Organizing systems into horizontal layers (presentation, business logic, data access) with strict dependency rules between layers. Covers n-tier patterns, layer isolation, and when layering creates accidental complexity.
Objectives
- Design a three-tier layered application and enforce layer boundaries
- Identify the sinkhole anti-pattern and propose a mitigation
Key concepts
- presentation layer
- business logic layer
- data access layer
- layer isolation
- closed vs open layers
- n-tier architecture
- sinkhole anti-pattern
Modularity
Decomposing systems into well-defined modules with clear responsibilities and boundaries. Covers module cohesion, package design principles, and the impact of modularity on maintainability and deployability.
Objectives
- Apply package cohesion principles to organize a growing codebase
- Use a dependency structure matrix to detect problematic coupling
Key concepts
- module boundaries
- package cohesion principles
- package coupling principles
- release equivalence principle
- common closure principle
- common reuse principle
- dependency structure matrix
Coupling and Cohesion
Measuring and managing the degree of interdependence between components (coupling) and the functional relatedness within a component (cohesion). Covers afferent/efferent coupling, instability metrics, and the main sequence.
Objectives
- Calculate instability and abstractness for a component and plot it on the main sequence
- Identify tight coupling in a codebase and propose a decoupling strategy
Key concepts
- afferent coupling
- efferent coupling
- instability metric
- abstractness
- main sequence
- distance from main sequence
- tight coupling smells
Component Design
Defining component boundaries, responsibilities, and interfaces. Covers identifying components from domain requirements, shared kernel patterns, and the role of component design in enabling team autonomy.
Objectives
- Derive components from a domain model using actor/action analysis
- Design component interfaces that minimize coupling between teams
Key concepts
- component identification
- component responsibility
- component interface
- actor/action approach
- event storming components
- shared kernel
- team-per-component
2 · Architectural Patterns5 topics
Hexagonal Architecture
Ports and adapters pattern that isolates core domain logic from external concerns like databases, UIs, and third-party services. Enables testability and framework independence.
Objectives
- Design a hexagonal architecture with clear port and adapter boundaries
- Explain how hexagonal architecture enables testing without a real database
Key concepts
- ports
- adapters
- primary ports
- secondary ports
- domain model isolation
- dependency rule
- testability without infrastructure
Event-Driven Architecture
Designing systems where components communicate through events. Covers event notification, event-carried state transfer, event sourcing, and the tradeoffs of eventual consistency and choreography vs orchestration.
Objectives
- Design an event-driven flow using choreography and explain failure handling
- Compare choreography vs orchestration for a multi-step business process
Key concepts
- event notification
- event-carried state transfer
- choreography
- orchestration
- eventual consistency
- event schema evolution
- dead letter queues
Microservices Architecture
Structuring an application as a collection of small, independently deployable services organized around business capabilities. Covers service decomposition, inter-service communication patterns, data isolation, and distributed systems tradeoffs.
Objectives
- Decompose a monolith into microservices using bounded contexts
- Evaluate whether a use case warrants microservices over a modular monolith
Key concepts
- service decomposition
- business capability alignment
- bounded context
- data ownership
- inter-service communication
- distributed transactions
- service granularity
CQRS and Event Sourcing
Command Query Responsibility Segregation separates read and write models. Event Sourcing stores state as an immutable sequence of events. Covers projections, snapshotting, eventual consistency, and when these patterns add vs destroy value.
Objectives
- Design a CQRS system with separate read and write models
- Explain when Event Sourcing adds audit and temporal query value vs adds complexity
Key concepts
- command model
- query model
- projection
- event store
- snapshotting
- temporal queries
- read model rebuild
Modular Monolith Patterns
Designing a single deployable unit with strong internal module boundaries. Covers the modular monolith as a valid architectural choice, strangler fig pattern for decomposition, and anti-corruption layers for legacy integration.
Objectives
- Design a modular monolith with enforced internal boundaries
- Apply the strangler fig pattern to incrementally extract services
Key concepts
- modular monolith
- internal module boundaries
- strangler fig pattern
- anti-corruption layer
- big ball of mud
- monolith vs microservices decision
- deployment monolith
3 · Quality Attributes5 topics
Scalability
Designing systems to handle increasing load without proportional cost increases. Covers horizontal vs vertical scaling, stateless design, sharding, caching strategies, and the relationship between scalability and cost.
Objectives
- Design a stateless service tier that scales horizontally
- Choose between sharding strategies based on access patterns
Key concepts
- horizontal scaling
- vertical scaling
- stateless services
- sharding strategies
- cache topology
- load balancing
- elasticity
Reliability and Resilience
Building systems that continue to function correctly in the presence of failures. Covers circuit breakers, bulkheads, retry strategies, graceful degradation, chaos engineering, and SLO/SLA/SLI frameworks.
Objectives
- Apply circuit breaker and bulkhead patterns to prevent cascading failure
- Define meaningful SLOs and align architecture decisions to meet them
Key concepts
- circuit breaker
- bulkhead pattern
- retry with backoff
- graceful degradation
- chaos engineering
- SLO / SLA / SLI
- failure mode analysis
Security Architecture
Embedding security into system architecture through defense in depth, threat modeling, zero-trust principles, and secure-by-design patterns. Covers authentication/authorization architecture, secrets management, and data protection strategies.
Objectives
- Perform a STRIDE threat model on a system design
- Design a zero-trust service-to-service authentication strategy
Key concepts
- defense in depth
- zero-trust architecture
- threat modeling (STRIDE)
- least privilege
- secrets management
- authentication vs authorization
- encryption at rest and in transit
Performance Architecture
Designing for latency and throughput targets at the architecture level. Covers performance budgets, caching hierarchies, asynchronous processing patterns, database query optimization at design time, and capacity planning.
Objectives
- Allocate a latency budget across service call chains
- Design a caching hierarchy that meets read latency targets
Key concepts
- latency budget
- throughput targets
- caching hierarchy
- read-through vs write-through cache
- async processing for latency hiding
- N+1 query avoidance
- capacity planning
Observability Architecture
Designing systems to be understandable from their external outputs. Covers structured logging, distributed tracing, metrics, the three pillars of observability, and alerting strategy that avoids alert fatigue.
Objectives
- Design a distributed tracing strategy for a microservices system
- Define alerting thresholds using SLO-based burn rate alerts
Key concepts
- structured logging
- distributed tracing
- metrics (RED / USE method)
- correlation ID propagation
- alerting strategy
- cardinality in metrics
- sampling in tracing
4 · Distributed Systems Design5 topics
CAP Theorem and Consistency Models
Understanding the CAP theorem and its implications for distributed data stores. Covers consistency models (strong, eventual, causal), PACELC extension, and how to choose the right consistency level for a given use case.
Objectives
- Apply the CAP theorem to justify a data store choice
- Design a system that tolerates network partitions with acceptable consistency
Key concepts
- CAP theorem
- consistency vs availability
- partition tolerance
- PACELC extension
- eventual consistency
- causal consistency
- strong consistency
Service Mesh and Network Topology
Managing service-to-service communication in microservices with a dedicated infrastructure layer. Covers sidecar proxies, control plane vs data plane, mTLS, traffic management, and when a service mesh adds value versus adds complexity.
Objectives
- Explain what a service mesh provides that a load balancer does not
- Design an mTLS strategy for service-to-service authentication
Key concepts
- sidecar proxy
- control plane
- data plane
- mutual TLS
- traffic shaping
- load balancing strategies
- service discovery
API Gateway Patterns
Using an API gateway as the single entry point for external clients. Covers gateway responsibilities (auth, rate limiting, routing, aggregation), backends-for-frontends (BFF) pattern, and gateway vs service mesh boundaries.
Objectives
- Design a BFF gateway layer for mobile and web clients with different data needs
- Explain when to put auth logic in the gateway vs the downstream service
Key concepts
- API gateway
- backend-for-frontend (BFF)
- rate limiting
- request aggregation
- authentication at the edge
- gateway vs service mesh
- fan-out aggregation
Data Architecture in Distributed Systems
Managing data across service boundaries. Covers database-per-service, shared database anti-pattern, saga pattern for distributed transactions, data mesh concepts, and polyglot persistence.
Objectives
- Design a saga for a distributed transaction that spans three services
- Justify database-per-service and explain the eventual consistency tradeoff
Key concepts
- database-per-service
- shared database anti-pattern
- saga pattern
- choreography-based saga
- orchestration-based saga
- polyglot persistence
- data mesh
Asynchronous Messaging Patterns
Decoupling services through message brokers and async communication. Covers at-least-once vs exactly-once delivery, idempotency, message ordering, competing consumers, and the outbox pattern for reliable event publishing.
Objectives
- Implement the outbox pattern to guarantee event publishing with database commits
- Design an idempotent consumer that handles duplicate messages safely
Key concepts
- at-least-once delivery
- exactly-once delivery
- idempotency
- outbox pattern
- message ordering guarantees
- competing consumers
- dead-letter queue
5 · Architectural Decisions4 topics
Architecture Decision Records
Documenting significant architectural decisions and their context, options considered, and consequences. Covers ADR format, when to write one, how to maintain an ADR log, and using ADRs to onboard new engineers.
Objectives
- Write a complete ADR for a real architectural decision including rejected alternatives
- Explain why ADRs reduce 'why did we build it this way?' questions
Key concepts
- ADR format
- decision context
- options considered
- decision consequences
- ADR log maintenance
- superseding ADRs
- decision archaeology
Trade-off Analysis
Systematically evaluating architectural options against competing quality attribute requirements. Covers ATAM (Architecture Tradeoff Analysis Method), quality attribute scenarios, utility trees, and sensitivity/tradeoff points.
Objectives
- Construct a utility tree for a system with competing quality attribute requirements
- Identify sensitivity and tradeoff points in an architecture under evaluation
Key concepts
- ATAM
- quality attribute scenario
- utility tree
- sensitivity point
- tradeoff point
- risk and non-risk identification
- stakeholder priorities
Fitness Functions
Defining automated tests that validate architectural characteristics over time. Covers structural fitness functions (dependency rules), process fitness functions (deployment pipeline gates), and holistic fitness functions for system-wide properties.
Objectives
- Define a structural fitness function that enforces layer dependency rules
- Design a chaos engineering experiment as a holistic fitness function
Key concepts
- fitness function
- structural fitness function
- process fitness function
- holistic fitness function
- ArchUnit
- chaos monkey
- architecture runway
Evolutionary Architecture
Designing systems that can change incrementally over time while preserving fitness. Covers guided change via fitness functions, incremental change patterns, architectural coupling and evolvability, and the relationship between modularity and evolvability.
Objectives
- Apply branch-by-abstraction to replace a component without a flag day
- Explain how modularity directly enables evolvability
Key concepts
- incremental change
- guided change
- architectural coupling
- evolvability
- feature toggles
- branch by abstraction
- expand-contract pattern
6 · Architecture Leadership2 topics
Architecture Governance
Establishing processes and guardrails that guide architecture decisions across teams. Covers architecture review boards, lightweight governance models, architecture principles, tech radar, and avoiding governance becoming a bottleneck.
Objectives
- Design a lightweight governance model that enables team autonomy
- Introduce a tech radar process to align technology choices across teams
Key concepts
- architecture review board
- architecture principles
- tech radar
- governance lightweight models
- paved road pattern
- inner source
- enabling team model
Technology Strategy
Defining and communicating the long-term technical direction that serves business goals. Covers platform thinking, build vs buy decisions, technology debt portfolio management, architecture vision documents, and aligning engineering investment to business strategy.
Objectives
- Write an architecture vision document aligned to a 3-year business strategy
- Build a business case for addressing technology debt as a strategic investment
Key concepts
- platform thinking
- build vs buy decision framework
- technology debt portfolio
- architecture vision
- technical due diligence
- north star architecture
- investment horizon model
Levels: Junior, Mid, Senior, and Expert
Explain it in your own words
Graded by AI · no account · 1 questionNo options to guess from: you write, the AI grades against the topic's rubric and tells you what level your answer reads at.
Already studying Software Architecture Fundamentals?
The assessment measures topic by topic, and your plan skips what you already know.
Open to read. An account is only needed to be measured.
Frequently asked questions
Where should I start studying Software Architecture Fundamentals?
Start with Architecture Foundations: Architectural Thinking, Layered Architecture, and Modularity. The map orders topics by what they depend on, so each one prepares the next.
How long does a full Software Architecture Fundamentals assessment take?
A full assessment of this path takes about 60 minutes. Study time depends on where you start; a diagnostic shows which topics you can skip.
Do I need an account to use this page?
No. The map, objectives and key concepts are open. You only need an account to be measured, get your gap by topic and receive a plan.