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

These topics assume a decent understanding of both Java and Spring Boot 3. Dedicated courses can be found:

Software

Books

  • Microservices Patterns; Richardson
  • Spring Microservices in Action; Carnell, Sánchez
  • Microservices with Spring Boot 3 and Spring Cloud; Larsson
  • Microservices AntiPatterns and Pitfalls; Richards
  • Cloud Native DevOps with Kubernetes; Arundel, Domingus
  • Modern DevOps Practices; Agarwal
  • Practical MLOps: Operationalizing Machine Learning Models; Gift, Deza; O'Reilly

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] Introduction to microservices

  • Monolithic and distributed architectural styles
  • The transition towards microservices architectures
  • The Twelve Factor App
  • #8 Fallacies of distributed computing

[M2] Reactive microservices

  • The dangers of one-thread-per-request design pattern
  • What is a reactive microservice ?
  • Java virtual threads and the Reactor pattern
  • Implementing reactive microservice with Project Reactor's Mono and Flux

[M3] Event-driven async architectures

  • Issues of synchronous communications
  • Asynchronous messaging systems, their advantages and limitations
  • Introduction to Kafka and RabbitMQ messaging systems
  • Spring Cloud Stream and its abstraction over messaging systems

[M4] Service discovery

  • DNS-based vs cloud-native service discovery
  • Server-side vs client-side load-balancing
  • Implementing service discovery with Netflix Eureka
  • Implementing client-side load-balancing with Spring WebClient

[M5] Service routing

  • Implementing cross-cutting concerns with a library or gateway service
  • Spring Cloud Gateway and its architecture
  • Spring Cloud Gateway routing rules

[M6] Centralized configuration

  • Configuration management architecture
  • Key principles behind configuration management
  • Centralize microservices configuration with Spring Cloud Config

[M7] Microservices resiliency

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

[M8] Microservices 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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Languages