Architecture Fundamentals
Core principles, styles, and patterns every solution architect must command
System Design BasicsScalability, reliability, availability, maintainability fundamentals›CAP TheoremConsistency vs availability vs partition tolerance, choosing the right trade-off›PACELC TheoremExtending CAP with latency vs consistency in normal operation›ACID vs BASEStrong consistency (relational) vs eventual consistency (distributed)›Architectural StylesMonolith, modular monolith, SOA, microservices, serverless, event-driven›Domain-Driven DesignBounded contexts, aggregates, entities, value objects, ubiquitous language›Microservices PatternsAPI Gateway, Sidecar, Ambassador, BFF, service mesh›Event-Driven ArchitectureChoreography vs orchestration, event sourcing, event schema versioning›Architectural PatternsCQRS, event sourcing, hexagonal, clean architecture, onion architecture›Design Patterns (GoF)Creational, structural, behavioral patterns with examples›Distributed PatternsSaga, outbox, circuit breaker, bulkhead, retry, idempotency›Twelve-Factor AppMethodology for building scalable, maintainable cloud-native apps›UML & ModelingSequence, component, deployment diagrams, state machines›C4 ModelContext, container, component, code diagrams for architecture communication›Architecture Decision RecordsCapturing decisions, context, consequences, and alternatives›Strangler Fig PatternIncremental migration from legacy monolith to modern architecture›Layered ArchitecturePresentation, business logic, data access; pitfalls and when to break layers›