A comprehensive 6-week program for learning microservices architecture through building a calendar management system.
This hands-on learning program guides you through building a complete calendar application, starting from a monolithic architecture and progressively decomposing it into microservices. You'll learn essential skills including service decomposition, contract testing, integration testing, and external service integration.
- Microservices architecture principles and patterns
- Service decomposition strategies
- Inter-service communication (REST APIs, message queues)
- Contract testing with Spring Cloud Contract
- Integration testing with Testcontainers
- External service integration
- Docker and Docker Compose for local development
- OpenAPI/Swagger documentation
- Spring Boot configuration management
Week | Topic | Focus |
---|---|---|
Week 1 | Monolithic Foundation | Spring Boot basics, REST APIs, Simple UI |
Week 2 | Testing & Documentation | Unit testing, OpenAPI, Configuration |
Week 3 | Service Extraction | First microservice, Docker Compose |
Week 4 | Contract Testing & External APIs | Spring Cloud Contract, Payment integration |
Week 5 | Integration Testing | Testcontainers, End-to-end testing |
Week 6 | System Completion | Final integration, Documentation |
- Java 17 or higher
- Maven 3.6+
- Docker & Docker Compose
- IDE (IntelliJ IDEA, Eclipse, or VS Code)
- Git
-
Clone this repository
git clone https://github.com/your-org/microservices-calendar-learning.git cd microservices-calendar-learning
-
Start with Week 1
cd week-1-monolithic-foundation
-
Follow the instructions in each week's README.md
- Complete Curriculum - Full 6-week curriculum
- API Specifications - Complete REST API documentation
- Setup Guide - Development environment setup
- Resources - Additional learning materials
By the end of this program, you'll be able to:
- Design and implement microservices architectures
- Write comprehensive tests for distributed systems
- Integrate with external APIs securely
- Set up local development environments with Docker
- Document APIs professionally with OpenAPI
- Handle data consistency across services
- While it's very tempting to use AI coding assistants to generate the code, try to minimize this as much as possible. Using AI assistants like Github Copilot or ChatGPT will likely help you solve the problems faster, but you will learn much less. So start by writing the code yourself and use documentation before asking assistants for help.
- Try to commit often in your working copy. In this way, if something doesn't work well you can go back one commit and try again.
- In general, try to work in small steps
- Simplify the code as much as possible. The goal of this program is not to implement the full application, but to learn as much as possible. You learn more if you are mindful and go slowly and in a very deliberate way.
This is a learning repository. If you find issues or have suggestions for improvements, please open an issue or submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.