Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/codejsha/sakila-microservices
Microservices sample application for Sakila DVD Rental Store
https://github.com/codejsha/sakila-microservices
microservices spring-boot spring-r2dbc spring-webflux
Last synced: 26 days ago
JSON representation
Microservices sample application for Sakila DVD Rental Store
- Host: GitHub
- URL: https://github.com/codejsha/sakila-microservices
- Owner: codejsha
- License: apache-2.0
- Created: 2023-04-15T16:35:07.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-04T02:44:45.000Z (about 1 year ago)
- Last Synced: 2023-11-04T03:25:06.934Z (about 1 year ago)
- Topics: microservices, spring-boot, spring-r2dbc, spring-webflux
- Language: Kotlin
- Homepage:
- Size: 1.13 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# sakila-microservices
Sakila REST API Microservices (Sample Project)
:exclamation: This project is work in progress.
![Gradle Build](https://github.com/codejsha/sakila-microservices/actions/workflows/gradle.yml/badge.svg)
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
## Table of Contents
- [Table of Contents](#table-of-contents)
- [Getting Started](#getting-started)
- [Requirements](#requirements)
- [Libraries and Plugins](#libraries-and-plugins)
- [Architecture](#architecture)
- [Services](#services)
- [Roadmap](#roadmap)
- [Sample Data](#sample-data)
- [References](#references)## Getting Started
### Requirements
- Kotlin 1.8
- Java 17
- Gradle 8
- MySQL 8### Libraries and Plugins
For a complete list, see the `gradle/libs.versions.toml` file.
- Spring WebFlux
- Spring Data R2DBC
- Google gRPC## Architecture
The following diagram shows the architecture of the Sakila DVD Rental Store. The diagram is based on the [C4 model](https://c4model.com/).
![sakila-container](diagram/sakila-container.svg)
Each service has its own database.
![sakila-db-container](diagram/sakila-db-container.svg)
### Services
![customer-application](diagram/component/customer-application.svg)
![payment-application](diagram/component/payment-application.svg)
![rental-application](diagram/component/rental-application.svg)
![store-application](diagram/component/store-application.svg)
![catalog-application](diagram/component/catalog-application.svg)
![location-application](diagram/component/location-application.svg)## Roadmap
- [ ] 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## Sample Data
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.
## References
- [MySQL Sakila sample database](https://dev.mysql.com/doc/sakila/en/)