Skip to content

Advanced course on tools and practices aiming at designing, developing, deploying and maintain in production microservice architectures.

License

Notifications You must be signed in to change notification settings

nbicocchi/learn-microservices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learn Microservices

Prerequisites

The course requires a decent understanding of Java. A dedicated course can be found here.

Software

Books

  • Microservices Patterns; Richardson
  • Spring Microservices in Action; Carnell, Sánchez
  • Microservices with Spring Boot 3 and Spring Cloud; Larsson

Videos

Contributing

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.

Modules

M1 Software architectures

  • Monolithic and distributed architectural styles
  • The transition towards microservices architectures

M2 Tools: Maven, Spring Boot

  • Introduction to Spring Boot as microservice chassis
  • Building a basic layered microservice with Spring Boot
  • Packaging a project with Maven

M3 Containerization and orchestration

  • Containerization vs virtualization
  • Building docker images (single-layer, multi-layer, Buildpacks, Jib)
  • Container orchestration with docker compose

M4 Communication

  • Synchronous communications and their limitations (Rest/GraphQL/Protobuf)
  • Asynchronous messaging systems (RabbitMQ)
  • Spring Cloud Stream and its abstraction over messaging systems

M5 Infrastructure

  • Service discovery
  • Service routing
  • Centralized configuration

M6 Resiliency

  • What is resiliency and why it is relevant
  • Client-side resiliency patterns
  • Server-side resiliency patterns
  • Resilience4j and its integration with Spring Boot

M7 Observability

  • What is observability and why it is relevant
  • Instrumentation and maintenance costs
  • Key observability stacks: ELK, Grafana, Jaeger/Zipkin
  • Zero-code instrumentation with OpenTelemetry

M8 Distributed transaction management

  • Issues of database transactions in distributed contexts
  • The SAGA pattern
  • The Conductor orchestration framework

M9 DevSecOps

  • The DevSecOps model and its benefits in distributed contexts
  • Automating code linting, security testing, and deployment with GitHub Actions

M10 MLOps

  • The MLOps model and its benefits in distributed contexts
  • Tracking ML experiments with MLFlow
  • Observing ML models in production with EvidentlyAI