Sakila REST API Microservices (Sample Project)
❗ This project is work in progress.
This project provides rental operations for the Sakila DVD Rental Store using microservices architecture. It is implemented with hexagonal architecture(ports and adapters architecture) and reactive programming. It's based on the Sakila sample database and serves as a example resource.
Monolith version is go to: https://github.com/codejsha/spring-rest-sakila
- Kotlin 1.8
- Java 17
- Gradle 8
- MySQL 8
For a complete list, see the gradle/libs.versions.toml
file.
- Spring WebFlux
- Spring Data R2DBC
- Google gRPC
The following diagram shows the architecture of the Sakila DVD Rental Store. The diagram is based on the C4 model.
Each service has its own database.
- Implement all services
- Add gRPC, Kafka communication
- Add tests for REST Docs and OpenAPI spec
- Add Netflix Conductor for orchestration
- Add Helm charts for each service
- Add Tekton CI/CD pipeline
- Add Argo CD resources for GitOps
- Add Istio service mesh
- Add ServiceMonitor and PrometheusRule for monitoring
- Add security
The sample data comes from the Sakila sample database by MySQL and is intended for learning and testing purposes. It features a relational database model for a DVD rental store company that contains data related to films, actors, customers, rentals, and more.