Built to demonstrate a microservices application running on Kubernetes. It is composed of 10 microservices written in different languages that talk to each other over http.
Service | Language | Description |
---|---|---|
Frontend | Next.js | Exposes an HTTP server to serve the website. |
Movies Api | C# | Provides a list of movies. |
Basket Api | Go | Saves basket in Redis. |
Recommendation Api | Python | Recommends other movies |
Advertisement Api | Go | Api to display advertisement on the frontend |
Checkout Api | C# | 1 click-checkout api. Grabs basket from Redis and puts orders message in a queue |
Order Processor | Go | Processes orders. Stores orders in database and emits order processed event |
Notification Service | Go | Listens to Order processed and Shipped events and sends notifications |
Shipping Service | C# | Listens to order processed events, updates database and emits shipped events |
Load Testing | Python | Locust load testing |
Workshop and tutorials available here (TODO)
On the root folder of the project you will find the docker-compose.yaml file.
To optionally build from source (you will need a newish version of Docker to do this) use Docker Compose. Optionally edit the .env
file to specify an alternative image registry and version tag; see the official documentation for more information.
$ docker-compose build
If you modified the .env
file and changed the image registry, you need to push the images to that registry
$ docker-compose push
To run the simple example on the kubernetes-manifests/simple folder.
On the root folder of the project run kubectl apply -f /src/kubernetes-manifests/simple
. Or on the kubernetes-manifests/simple folder run kubectl apply -f .