Description
Training objectives:
- Learn an overview of the aspects and practices that should be addressed/used when planning and designing a microservices architecture;
- Learn the architectural patterns and practices used throughout the entire development phases;
- Learn the patterns and practices used to monitor, troubleshoot and maintain a microservices architecture;
Structure and presentations:
The training duration is 5 days, organized in 6 hours per day. The day consists of several sessions, and each session will consist in a theoretical and (where applicable) practical (hands-on) part. Depending on the presented topic, the ratio between the theoretical and the practical parts varies between ~70/30% and ~50/50%. We will have a break at each ~50 minutes. Some sessions may take more or less than 50 minutes, depending on their complexity and on the questions and discussions.
Disclaimer:
If the discussions and the hands-on sessions will prolong more than anticipated, some sessions will be postponed on the following day. The training intent is to cover the sessions thoroughly, not in a rushed mode. Please note that the specified durations include just the hands-on examples performed by the trainer. In case you want the participants to work in a hands-on mode, the duration of the training will be approximately 30% longer.
Course outline:
An overview of the training sessions, organized in 6 hours/day:
Day 1
○ Training overview
○ Planning and design
- Project life-stages overview
- Project influences overview
- Start with the end in mind
- The ‘project map’ – zoomable business domain & architecture overview
○ From monoliths to microservices
- Enterprise architectures overview
- Migrating to microservices
- Microservices architecture – high level overview, architectural patterns, deployment environments
○ Microservices patterns overview
○ Services decomposition
- Decomposing an application into microservices, architectural styles
- Defining an application’s microservices architecture
- Designing APIs first → defining & using a schema for the business domain model
Day 2
○ Inter-process communication
- Overview of interprocess communication in a microservices architecture
- Communicating using the synchronous ‘Remote Procedure Invocation’ pattern
- Using service discovery and registry
- Communicating using the ‘Asynchronous messaging’ pattern
- Creating an API specification for a messaging-based service API
- Choosing a messaging technology
○ Application patterns
- Database architecture – shared and individual
- Maintaining data consistency – Sagas, consistency types (strong, eventual &
- causal)
- Sagas in depth
- Data querying – API composition and CQRS
- Transactional messaging patterns
Day 3
○ Testing
- Testing overview, strategy, types of tests
- Consumer driven contract testing
- Unit and integration tests
- Component tests
- End-to-end tests
- Load tests
○ Deployment
- CI & CD flow – deployment pipelines and environments
Day 4
○ Application infrastructure patterns
- Overview – security, services configurability and observability
- Securing a microservices architecture
- Externalized configuration – using the Spring Cloud Config Server
- Cross cutting concerns – logging, metrics, health-checks, distributed tracing
- Stability and reliability patterns
- Retry
- Circuit breaking
- Bulkheads
- Client-side load balancing
Day 5
○ Microservices hands-on workshop: The attendees will be invited to work in teams of 3 persons (each one with their own role), for either half or the entire 5th day. We prefer & recommend this approach, as it lets attendees work and research for a longer period, without a constant context switch from presentation to coding.
○ Training wrap-up & retrospective