Skip to content

eiakoji-me/smsws

Repository files navigation

Shell Script Gradle Java Spring IO Hibernate Docker Postgres GitHub Actions AWS Terraform

School Management App

In this project, our primary focus is to explore the core concepts of microservices architecture, leveraging the robust capabilities of the Spring Boot framework in tandem with the Spring Cloud project and associated tools. At the heart of our endeavor lies the demonstration of fundamental microservice principles within the context of a School Management application. Throughout our journey, we delve into a myriad of essential concepts, encompassing diverse areas such as service discovery (utilizing Netflix Eureka), proficiently handling rest clients through openfeign, RestTemplate, Java Reactive WebClient, and GraphQL.

Additionally, we delve into advanced topics including distributed tracing, metrics collection, configuration management with config servers, API gateway implementation, and the circuit breaker pattern integrated with resilience4j. Moreover, our exploration extends to incorporate pivotal elements like message brokering with RabbitMQ, event streaming utilizing Kafka, OAuth2 authentication for secure access, GraalVM for building native images, Swagger OpenAPI documentation for REST endpoints, and much more. Through this comprehensive endeavor, we aim to gain a profound understanding of microservices architecture and its practical application, equipping ourselves with the tools and knowledge necessary to architect resilient and scalable distributed systems.

Services

Setting up Zipkin Server with docker image

The Docker Zipkin project is able to build docker images, provide scripts and a docker-compose.yml for launching pre-built images. The quickest start is to run the latest image directly:

docker run -d -p 9411:9411 openzipkin/zipkin

Snipets

Add a new service

spring init --java-version=21 \
--build=gradle \
--packaging=jar \
--type=gradle-project \
--artifact-id=school-service \
--group-id=com.github.eiakojime \
--dependencies=actuator,data-jdbc,postgresql,web \
--extract school-service

Environment variables

PROJECT_ROOT = 

Dependencies

  • Docker-compose
  • Fault tolerance with Resilence4j
  • GraalVM
  • OpenFeign
  • PostgreSQL
  • Rest Template with load balancing
  • Spring Actuator
  • Spring cloud Gateway
  • Spring cloud Config Server
  • Spring GraphQL
  • Spring cloud Eureka
  • Zipkin distributed tracing

Useful resources