Software Architecture: The Hard Parts (2 Day)

Format: Live Virtual Training
Duration: 2-Day Class
Instructors: Mark Richards and Neal Ford

Software architects have no clean, easy decisions: everything is a terrible tradeoff. Architecture has lots of difficult problems, which this platform-agnostic class highlights by investigating what makes architecture so hard. This hands-on, platform-agnostic architecture class goes beyond the fundamentals of software architecture and focuses on the really hard problems. This class focuses primarily on aspects of distributed architectures and on areas surrounding modularity versus granularity, the challenges of event-driven architectures (including difficult error handing issues), distributed architecture patterns and how to decouple services to achieve proper granularity. Architecture is full of hard parts; by attending this workshop you can gain the insights and techniques to make it just a little softer.

This class is divided into 2 main parts:

  • Part 1: Pulling Things Part (Modularity and Building Blocks)
  • Part 2: Putting Them Back Together (Patterns and Tradeoffs)

Pulling things apart (Part 1) focuses on how to break up systems and identify levels of modularity. However, once you’ve broken apart your systems, how do you tie them back together?  Putting them back together (Part 2) focuses on just this - the techniques of how to do orchestration, workflows, and transactions, while keeping parts decoupled from one another. Part 2 also covers the stitching of the parts, where you will learn the patterns and solutions used within distributed architecture to keep everything loosely tied together and running smoothly.

For more information about the pricing and availability of this course for private (corporate) training, please contact me at For public training offerings for this course, please see my public schedule at my upcoming events page. 

Course Agenda (2-Day Virtual Class)

Part 1: Pulling Things Apart

  • Architectural modularity
  • Components as building blocks
  • Architectural Quantum
  • Hands-on exercises
  • Domain vs. technical partitioning
  • Tradeoffs for distributed architectures
  • Granularity vs. modularity
  • Hands-on exercises
  • Breaking apart transactional data
  • Hands-on exercises
  • Breaking apart analytical data

Part 2: Putting Them Back Together 

  • Synchronous vs. async communication
  • Contract management
  • Hands-on exercises
  • Domain vs. technical partitioning
  • Orchestration and workflow
  • Case Study: Complex orchestration using a DSL
  • Hands-on exercises
  • Communication Patterns
  • Data mesh for analytical data

Class Summary

  • Final Words of Advice

©2020 DeveloperToArchitect