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 buildIf you modified the .env file and changed the image registry, you need to push the images to that registry
$ docker-compose pushTo 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 .


