The course requires a decent understanding of Java. A dedicated course can be found here.
- JDK Development Kit 21
- IntelliJ IDEA [Plugins: Envfile]
- Apache Maven
- Apache JMeter
- EvidentlyAI
- Docker Desktop
- Microservices Patterns; Richardson
- Spring Microservices in Action; Carnell, Sánchez
- Microservices with Spring Boot 3 and Spring Cloud; Larsson
Your pull requests are very welcome! To contribute, please refer to this guide. For a more general introduction to GitHub, refer to this page. By contributing to this repository, you agree that your contributions will be licensed under the LICENSE file in the root directory of this source tree.
- Monolithic and distributed architectural styles
- The transition towards microservices architectures
M2 Tools: Java, Maven, Spring Boot, JMeter
- Java recap: generics, functional programming
- Building a basic layered microservice with Spring Boot
- Project packaging with Maven (one or multiple services per project)
- Testing microservices with JMeter
M3 Containerization and orchestration
- Containerization vs virtualization
- Building docker images (single-layer, multi-layer, Buildpacks, Jib)
- Container orchestration with docker compose
- Synchronous communications and their limitations (Rest/GraphQL/Protobuf)
- Asynchronous messaging systems (RabbitMQ)
- Spring Cloud Stream and its abstraction over messaging systems
- Service discovery
- Service routing
- Centralized configuration
- What is resiliency and why it is relevant
- Client-side resiliency patterns
- Server-side resiliency patterns
- Resilience4j and its integration with Spring Boot
- What is observability and why it is relevant for microservices
- Metrics aggregation with Micrometer, Prometheus and Grafana
- Distributed tracing with Micrometer and Zipkin
- Log aggregation with the ELK Stack
M8 Distributed transaction management
- Issues of database transactions in distributed contexts
- The SAGA pattern
- The Conductor orchestration framework
- DevOps and their benefits in distributed contexts
- Automating security tests before deployment
- MLOps and their benefits in distributed contexts
- Automating model observability with EvidentlyAI