Modern applications are moving towards microservices architecture. Microservices are a way to scale development, improve release time, and simplify the process from ideas to deployment.
The “Introduction to microservice architecture” workshop (3-day) goes over the main principles, from design, to code and to process that help organizations move from monolith development to microservices. The workshop includes many hands-on exercises, that help illustrate how the principles apply in day-to-day work.
The workshop presents the methodology and reasoning, benefits, and challenges of moving to microservices. It starts with the principles of what makes good architecture, explains how Domain Driven Design tackles these aspects and how microservices apply them. It covers both service data and communication, along with testing and deployment.
Target audience
Developers, architects, testers.
Workshop goals
Following the workshop attendees, will be able to:
- Describe the principles of good architecture
- Apply domain-driven design principles to services
- Break down monoliths and big services into micro services
- Choose the right communication patterns between services
- Design and implement a development, testing and deployment processes around microservices
Workshop agenda
All the topics include both presentation and hands on exercises.
Good architecture
- Properties of good architecture
- The cost of change
- Managing complexity
- Metrics for architecture effectiveness
Domain-Driven Design basics
- Ubiquitous language
- Bounded contexts
- Modeling objects
Microservices architecture
- From monolith to microservices
- Properties of microservices
- Surface area and interface-as-contract
- APIs
- Model translation across services
- Breaking a monolith into services
- Ports and adapters
- Isolation and concurrency
- Composition patterns
Service data
- Data storage and consistency
- Splitting monolithic data
- Distributed transaction management
- Two-phase commit
- Saga pattern
- CQRS
Service Communication
- Sync and async communication
- Event sourcing
- Service registration and discovery
- Orchestration and choreography
- Stream processing
Development process of microservices
- Mono-repo and Multi-repo
- CI / CD processes
- Containers and environment configuration
- Infrastructure-as-code
- Versioning services
- Documentation
- Dark and canary releases
- Rollback and roll-forward
Good practices
- Repeatability
- Testability
- Fault tolerance and resiliency patterns
- Observability and monitoring
Prerequisites
- 1-year experience in software development (in any role)