Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sivaprasadreddy/spring-boot-microservices-course
YouTube Spring Boot Microservices Course Application
https://github.com/sivaprasadreddy/spring-boot-microservices-course
alpinejs docker-compose grafana keycloak loki maven microservices oauth2 postgresql prometheus rabbitmq spring-boot spring-cloud-gateway testcontainers thymeleaf
Last synced: about 4 hours ago
JSON representation
YouTube Spring Boot Microservices Course Application
- Host: GitHub
- URL: https://github.com/sivaprasadreddy/spring-boot-microservices-course
- Owner: sivaprasadreddy
- License: apache-2.0
- Created: 2024-04-03T03:04:50.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-10-14T02:47:27.000Z (3 months ago)
- Last Synced: 2024-10-15T04:05:33.798Z (3 months ago)
- Topics: alpinejs, docker-compose, grafana, keycloak, loki, maven, microservices, oauth2, postgresql, prometheus, rabbitmq, spring-boot, spring-cloud-gateway, testcontainers, thymeleaf
- Language: Java
- Homepage:
- Size: 3.17 MB
- Stars: 60
- Watchers: 7
- Forks: 26
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Spring Boot Microservices Course
This repository contains the source code for the [Spring Boot Microservices Course](https://www.youtube.com/playlist?list=PLuNxlOYbv61g_ytin-wgkecfWDKVCEDmB).![Spring Boot Microservices course](docs/youtube-thumbnail.png)
We will build a BookStore application using Spring Boot, Spring Cloud, and Docker.
![BookStore Microservices Architecture](docs/bookstore-spring-microservices.png)
## Modules
* **catalog-service**:
This services provides REST API for managing catalog of products(books).
**TechStack:** Spring Boot, Spring Data JPA, PostgreSQL* **order-service**:
This service provides the REST API for managing orders and publishes order events to the message broker.**TechStack:** Spring Boot, Spring Security OAuth2, Keycloak, Spring Data JPA, PostgreSQL, RabbitMQ
* **notification-service**:
This service listens to the order events and sends notifications to the users.
**TechStack:** Spring Boot, RabbitMQ* **api-gateway**:
This service is an API Gateway to the internal backend services (catalog-service, order-service).**TechStack:** Spring Boot, Spring Cloud Gateway
* **bookstore-webapp**:
This is the customer facing web application where customers can browse the catalog, place orders, and view their order details.**TechStack:** Spring Boot, Spring Security OAuth2, Keycloak, Thymeleaf, Alpine.js, Bootstrap
## Learning Objectives
* Building Spring Boot REST APIs
* Database Persistence using Spring Data JPA, Postgres, Flyway
* Event Driven Async Communication using RabbitMQ
* Implementing OAuth2-based Security using Spring Security and Keycloak
* Implementing API Gateway using Spring Cloud Gateway
* Implementing Resiliency using Resilience4j
* Job Scheduling with ShedLock-based distributed Locking
* Using RestClient, Declarative HTTP Interfaces to invoke other APIs
* Creating Aggregated Swagger Documentation at API Gateway
* Local Development Setup using Docker, Docker Compose and Testcontainers
* Testing using JUnit 5, RestAssured, Testcontainers, Awaitility, WireMock
* Building Web Application using Thymeleaf, Alpine.js, Bootstrap
* Monitoring & Observability using Grafana, Prometheus, Loki, Tempo (Membership)
* Kubernetes Basics (Membership)
* Deployment to Kubernetes (Membership)## Local Development Setup
* Install Java 21. Recommend using [SDKMAN](https://sdkman.io/) for [managing Java versions](https://youtu.be/ZywEiw3EO8A).
* Install [Docker Desktop](https://www.docker.com/products/docker-desktop/)
* Install [IntelliJ IDEA](https://www.jetbrains.com/idea) or any of your favorite IDE
* Install [Postman](https://www.postman.com/) or any REST Client## Other Learning Resources
* [SivaLabs Blog](https://sivalabs.in)
* [Spring Boot Tutorials](https://www.sivalabs.in/spring-boot-tutorials/)
* [Kubernetes Tutorials](https://www.sivalabs.in/getting-started-with-kubernetes/)
* [Spring Security OAuth 2.0 Tutorials](https://www.sivalabs.in/spring-security-oauth2-tutorial-introduction/)
* [A Pragmatic Approach to Software Design](https://www.sivalabs.in/tomato-architecture-pragmatic-approach-to-software-design/)
* [SivaLabs YouTube Channel](https://www.youtube.com/c/SivaLabs)
* [Spring Boot Tips Series](https://www.youtube.com/playlist?list=PLuNxlOYbv61jFFX2ARQKnBgkMF6DvEEic)
* [Spring Boot + Kubernetes Series](https://www.youtube.com/playlist?list=PLuNxlOYbv61h66_QlcjCEkVAj6RdeplJJ)
* [Spring Boot : The Missing Guide](https://www.youtube.com/playlist?list=PLuNxlOYbv61jZL1IiciTgWezZoqEp4WXh)
* [Java Testing Made Easy: Learn writing Unit, Integration, E2E & Performance Tests](https://www.youtube.com/playlist?list=PLuNxlOYbv61jtHHFHBOc9N7Dg5jn013ix)