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: 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

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 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

M9 DevSecOps

  • DevOps and their benefits in distributed contexts
  • Automating security tests before deployment

M10 MLOps

  • MLOps and their benefits in distributed contexts
  • Automating model observability with EvidentlyAI