Taught by Chris Richardson, an experienced software architect, author and serial entrepreneur.
Chris works with clients around the world helping them adopt the microservice architecture.
Chris also writes code regularly.
new
new
Designing microservices: responsibilities, APIs and collaborations
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.
Audience
Technology leaders, architects and experienced developers who want to learn how to design a microservice architecture. The architecture and design exercises are on paper and are independent of any particular technology stack.
Format
This workshop is delivered as a mixture of online and offline activities:
- online (e.g. Zoom) lectures, discussions, and kata reviews
- offline kata exercises
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 an microservice architecture and identify architectural smells
- Refactor and improve an architecture
- Document a microservice architecture
Outline
- Lecture: 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
- Lecture: Discovering and defining system operations
- Kata (design exercise): Define system operations
- Lecture: Discovering and defining subdomains
- Kata: Define subdomains
- Lecture: Overview of designing system operations
- Lecture: Designing system commands
- Partitioning subdomains to form services
- Applying the command collaboration patterns: Saga and Command-side replica
- Kata: Designing commands and designing services
- Lecture: Designing queries
- Partitioning subdomains to form services
- Applying the query collaboration patterns: API composition and CQRS
- Kata: Designing queries and designing services
- Lecture: Evaluating microservices and identifying architectural smells
- Kata: Evaluating an architecture
- Lecture: Refactoring a microservice architecture
- Kata: Refactor a microservice architecture