Software Architecture: The Hard Parts Scenarios

Format: Live Virtual Training
Duration: Half-Day Workshop
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 1/2 day virtual live class is scenario-based, with each topic asking and answering some of the harder questions in software architecture. Students will undergo hands-on exercises (scenarios) after each topic area to exercises the concepts learned in that hard part.

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. 

Public Training Dates

There are no public dates scheduled for this training class.

Course Agenda (1/2-Day Virtual Workshop)

We address the following questions in this workshop, with exercises following each scenario:

  • How do I choose an appropriate architecture?  
  • How do I determine the appropriate level of service granularity?
  • How do I automate architectural governance?
  • How do I choose between choreography and orchestration for my workflow?
  • How do I create systems with high semantic coupling but low syntactic coupling?
  • How do I access data I don’t own in a distributed system?
  • How do I achieve high levels of scalability and elasticity in a system?
©2020 DeveloperToArchitect