I've decided to learn some system design principles, patterns and actually build some stuff and put it here.
Couple of a simple python/flask app instances with an nginx as a load balancer in front, everything runs in docker
containers. Here nginx
operates as a load balancer and is using Round Robin
principle, to change that you have
to change it's configuration file (./nginx/nginx.conf
) according to this link
http://nginx.org/en/docs/http/load_balancing.html
- Python/Flask
- Nginx
- Docker/Docker-Compose
Run command: docker-compose up
A simple server with one endpoint receiving commands for asynchronous execution which puts messages to the Rabbit MQ, and a worker app which is listening to the Rabbit MQ and executes command once it's received. This examples is copied from this source: https://medium.com/better-programming/background-processing-with-rabbitmq-python-and-flask-5ca62acf409c // TODO add frontend app for receiving async results
- Python/Flask
- RabbitMQ
- Docker/Docker-Compose
Run command: docker-compose up
A server with external IP on request save it in the database and sends a message to the RabbitMQ, a simple micro-service (MailSender) listening to the RabbitMQ receives the message and sends according mail to someone
- Python/FastAPI
- RabbitMQ
- Docker/Docker-Compose
- Kubernetes
- Setup Kubernetes with docker desktop
- Run
kubectl apply -f .
in thek8
folder - Destroy
kubectl delete all --all
Spring Boot server connected to a postgres DB and Reddis caching retrieved data to redis
- Redis
- Java/Spring Boot
- Docker/Docker-Compose
- Run
docker compose up