Chris Richardson 2-Day Workshop
Tue-Wed, Mar 12-13

When applying the microservice architecture pattern, the most important design decisions that you must make do not involve technology choices, such as Kubernetes vs. Serverless or REST vs. gRPC. Instead, what’s critical to your success is correctly identifying services, defining their responsibilities, APIs and collaborations. That’s because if you design your services badly, you risk creating a fragile, distributed monolith where every service is a potential point of failure, and services regularly change in lock step.

Through a combination of lectures, discussions, and kata exercises, Chris will walk you through distilling your application’s requirements into a collection of loosely coupled, appropriately-sized services.

What you will learn

Learn how to:

  • Identify and define services
  • Design operations that span multiple services using patterns such as Saga and CQRS
  • Evaluate a microservice architecture and identify architectural smells
  • Refactor and improve an architecture
  • Document a microservice architecture


  • How to define a microservice architecture
    • The architecture definition process overview
    • Using the dark energy and dark matter forces to define services
    • Documenting a microservice architecture
  • Discovering and defining system operations
  • Discovering and defining subdomains
  • Overview of designing system operations
  • Designing system commands
    • Partitioning subdomains to form services
    • Applying the command collaboration patterns: Saga and Command-side replica
  • Designing queries
    • Partitioning subdomains to form services
    • Applying the query collaboration patterns: API composition and CQRS
  • Evaluating microservices and identifying architectural smells
  • Refactoring a microservice architecture