General Architecture Lessons
Software Architecture Monday with Mark Richards is a free bi-weekly software architecture lesson containing a short video about some aspect of software architecture. These lessons contain tips, techniques, and advice to help you in your journey from developer to architect. New lessons will be posted every other Monday.
All Lessons
Microservices Lessons
General Architecture Lessons
Event-Driven Architecture Lessons
Soft Skills Lessons
Integration Architecture Lessons
Enterprise Architecture Lessons
- Lesson 6 - Classifying Architecture Patterns (posted Feb 26, 2018)
- Lesson 7 - Analyzing Architecture: Structural Decay (posted Mar 5, 2018)
- Lesson 8 - Analyzing Architecture: Components (posted Mar 12, 2018)
- Lesson 9 - Analyzing Architecture: Macro Techniques (posted Mar 19, 2018)
- Lesson 10 - Analyzing Architecture: Microservices (posted Mar 26, 2018)
- Lesson 11 - Analyzing Architecture: Code Metrics (posted April 2, 2018)
- Lesson 12 - CQRS and Microservices (posted April 9, 2018)
- Lesson 14 - Refactoring Patterns: Migration vs. Adaptation (posted April 23, 2018)
- Lesson 15 - Refactoring: Business Justification (posted April 30, 2018)
- Lesson 16 - The Challenges of Architecture Teams (posted May 7, 2018)
- Lesson 17 - Architecture Tradeoffs (posted May 14, 2018)
- Lesson 18 - The Fallacies of Distributed Computing (posted May 21, 2018)
- Lesson 23 - Orchestration vs. Choreography (posted June 25, 2018)
- Lesson 24 - Lean Modeling Concepts (posted July 2, 2018)
- Lesson 25 - Architectural Abstraction (posted July 9, 2018)
- Lesson 26 - Agile Architecture Review Boards (posted July 16, 2018)
- Lesson 27 - Circuit Breaker Pattern (posted July 23, 2018)
- Lesson 29 - Component and Service Coupling (posted August 6, 2018)
- Lesson 30 - Agile and Software Architecture (posted August 13, 2018)
- Lesson 31 - Presenting Software Architecture (posted August 20, 2018)
- Lesson 32 - Diagramming Architecture (posted September 10, 2018)
- Lesson 35 - Watch Notification Pattern (posted October 1, 2018)
- Lesson 37 - Translating Quality Attributes to Business Concerns (posted October 15, 2018)
- Lesson 46 - Reactive Architecture Patterns Introduction (posted January 28, 2019)
- Lesson 47 - Channel Monitoring Pattern (posted February 4, 2019)
- Lesson 48 - Thread Delegate Pattern (posted February 11, 2019)
- Lesson 53 - Distributed Transactions Using Sagas (posted March 18, 2019)
- Lesson 54 - The Software Architects Bookshelf (posted March 25, 2019)
- Lesson 55 - Architecture Decision Records (posted April 1, 2019)
- Lesson 56 - The Ambulance Pattern (posted April 8, 2019)
- Lesson 57 - Loose Coupling and the Law of Demeter (posted April 15, 2019)
- Lesson 58 - Architecture Certification (posted April 22, 2019)
- Lesson 59 - The Tradeoffs of Loose Coupling (posted May 6, 2019)
- Lesson 61 - Extensibility Using Pub/Sub Messaging (posted June 3, 2019)
- Lesson 68 - Automating Architectural Governance (posted September 9, 2019)
- Lesson 71 - Measuring Scalability (posted October 21, 2019)
- Lesson 73 - Architecture Fitness Functions (posted November 18, 2019)
- Lesson 74 - Elephant Migration AntiPattern (posted December 2, 2019)
- Lesson 76 - Caching Topologies: Single In-Memory Data Grid (posted December 30, 2019)
- Lesson 77 - Caching Topologies: Distributed Cache (posted January 13, 2020)
- Lesson 78 - Caching Topologies: Replicated Cache(posted January 27, 2020)
- Lesson 79 - Caching Topologies: Near Cache Hybrid(posted February 10, 2020)
- Lesson 80 - Choosing the Right Caching Topology(posted February 24, 2020)
- Lesson 82 - Defining Testability (posted March 23, 2020)
- Lesson 83 - Defining Performance and Responsiveness (posted April 6, 2020)
- Lesson 84 - Defining Deployability (posted April 20, 2020)
- Lesson 85 - Defining Scalability and Elasticity (posted May 4, 2020)
- Lesson 86 - Becoming A Software Architect (Part 1) (posted May 18, 2020)
- Lesson 87 - Becoming A Software Architect (Part 2) (posted May 25, 2020)
- Lesson 88 - Becoming A Software Architect (Part 3) (posted June 1, 2020)
- Lesson 89 - Becoming A Software Architect (Part 4) (posted June 8, 2020)
- Lesson 90 - Becoming A Software Architect (Part 5) (posted June 15, 2020)
- Lesson 91 - Becoming A Software Architect (Part 6) (posted June 22, 2020)
- Lesson 92 - Understanding Hybrid Architectures (posted July 6, 2020)
- Lesson 93 - What is Software Architecture? (posted July 20, 2020)
- Lesson 94 - Guidelines for Architecture Diagrams(posted August 3, 2020)
- Lesson 95 - Guidelines for Architecture Diagrams Revisited (posted August 31, 2020)
- Lesson 100 - My Architecture Journey: Lessons Learned (posted November 9, 2020)
- Lesson 101 - Components and Root Namespaces (posted November 23, 2020)
- Lesson 102 - Architecture Characteristics FAQ (posted December 7, 2020)
- Lesson 103 - Balancing Architecture and Hands-On Coding (posted December 21, 2020)
- Lesson 104 - Architecture Styles FAQ #1 (posted January 4, 2021)
- Lesson 105 - Stamp Coupling (posted January 18, 2021)
- Lesson 106 - Architecture Stories (posted February 1, 2021)
- Lesson 108 - The Role of a Software Architect (posted March 1, 2021)
- Lesson 111 - CAP Theorem Illustrated (posted April 12, 2021)
- Lesson 112 - Architecture Characteristics Worksheet (posted April 26, 2021)
- Lesson 113 - Cart Before The Horse Anti-Pattern (posted May 10, 2021)
- Lesson 115 - Email-Driven Architecture (posted June 7, 2021)
- Lesson 117 - Accidental Complexity AntiPattern (posted July 5, 2021)
- Lesson 118 - Limiting Assumptions (posted July 19, 2021)
- Lesson 120 - Domain vs. Technical Partitioning (posted August 16, 2021)
- Lesson 122 - When Should You Replace Your Architecture? (posted September 13, 2021)
- Lesson 123 - Composite Architecture Characteristics (posted September 27, 2021)
- Lesson 124 - The Challenges of Distributed Architectures (posted October 11, 2021)
- Lesson 126 - Is SOA Dead? (posted November 8, 2021)
- Lesson 127 - Assessing Architectural Risk (Part 1) (posted November 22, 2021)
- Lesson 128 - Assessing Architectural Risk (Part 2) (posted December 6, 2021)
- Lesson 129 - Assessing Architectural Risk (Part 3) (posted December 20, 2021)
- Lesson 130 - The Frozen Caveman AntiPattern (posted January 17, 2022)
- Lesson 132 - Architecture by Implication AntiPattern (posted February 14, 2022)
- Lesson 133 - Stovepipe Architecture AntiPattern (posted February 28, 2022)
- Lesson 134 - What is a Service? (posted March 14, 2022)
- Lesson 135 - Scalability Revisited (posted March 28, 2022)
- Lesson 136 - Managing Shared Database Changes (posted April 11, 2022)
- Lesson 137 - REST vs Messaging (posted April 25, 2022)
- Lesson 138 - Dynamic Quantum Entanglement (posted May 9, 2022)
- Lesson 139 - Triggered vs Continuous Fitness Functions (posted May 23, 2022)
- Lesson 141 - Managing Architecture Decisions (posted August 1, 2022)
- Lesson 143 - Problem Solving Checklist (posted August 29, 2022)
- Lesson 144 - Using Redirection to Solve Problems (posted September 12, 2022)
- Lesson 145 - Analyzing Tradeoffs (posted September 26, 2022)
- Lesson 146 - The Out-of-Context Scorecard AntiPattern (posted October 10, 2022)
- Lesson 149 - Caching and CAP Theorem (posted November 21, 2022)
- Lesson 150 - Quantitative vs. Qualitative Analysis (posted December 4, 2022)
- Lesson 151 - Software Architecture Roles and Titles (posted December 19, 2022)
- Lesson 152 - Modeling Distributed Workflows (posted January 16, 2023)
- Lesson 153 - Service-Based Architecture vs. SOA (posted January 30, 2023)
- Lesson 155 - The Infinity Architecture AntiPattern (posted February 27, 2023)
- Lesson 157 - Incorporating ADRs Into Existing Systems (posted March 27, 2023)
- Lesson 158 - Layered Architecture (posted April 10, 2023)
- Lesson 159 - Modular Monolith Architecture (posted April 24, 2023)
- Lesson 160 - Microkernel Architecture (posted May 8, 2023)
- Lesson 161 - Agility and Monolithic Architectures (posted May 22, 2023)
- Lesson 162 - Microservices Architecture (posted June 5, 2023)
- Lesson 163 - Service-Based Architecture (posted June 19, 2023)
- Lesson 164 - Service-Oriented Architecture (posted July 3, 2023)
- Lesson 165 - Event-Driven Architecture (posted July 17, 2023)
- Lesson 166 - Space-Based Architecture (posted July 31, 2023)
- Lesson 167 - Architecture vs. Design (posted August 14, 2023)
- Lesson 168 - ADRs and Architecture Stories (posted August 28, 2023)
- Lesson 171 - Producer Control Flow Pattern (posted October 9, 2023)
- Lesson 172 - TOGAF in 10 Minutes (posted October 23, 2023)
- Lesson 173 - Leveraging Checklists (posted November 6, 2023)
- Lesson 174 - Replicated Caching and Data Collisions (posted November 20, 2023)
- Lesson 177 - Logical Architecture Components (posted January 1, 2024)
- Lesson 179 - Domain to Architecture Isomorphism Part 1 (posted January 29, 2024)
- Lesson 180- Domain to Architecture Isomorphism Part 2 (February 12, 2024)
- Lesson 181 - Feasibility and Questioning Requirements (February 26, 2024)
- Lesson 182 - Domain to Architecture Isomorphism Part 3 (March 11, 2024)
- Lesson 183 - Head First Software Architecture Book (March 25, 2024)
- Lesson 184 - Running an Architecture Kata Session (April 8, 2024)
- Lesson 185 - Residuality Theory (April 22, 2024)
- Lesson 186 - Fallacy #11: Observability is Optional (May 6, 2024)
- Lesson 187 - Categorizing Architectural Characteristics (May 20, 2024)
- Lesson 188 - Identifying Architectural Characteristics (June 3, 2024)
- Lesson 189 - Architectural Quantum Tradeoffs (June 17, 2024)
- Lesson 190 - Logical vs. Physical Architecture (July 1, 2024)
- Lesson 191 - The Entity Trap (July 15, 2024)
- Lesson 192 - Identifying Components: The Workflow Approach (July 29, 2024)
- Lesson 193 - Identifying Components: The Actor/Action Approach (August 12, 2024)
- Lesson 194 - Architecture as Code (August 26, 2024)
- Lesson 195 - Sacrificial Architecture (September 9, 2024)
- Lesson 196 - Modularity and Architectural Styles (September 23, 2024)