Note: The whole workflow is in TypeScript
For Development
git clone https://github.com/TikZSZ/microservices-ticket-app.git
cd ./microservices-ticket-app
# Make sure minikube is running to start minikube
minikube start
skaffold dev
To access the ingress-nginx we need to set minikube ip in hosts because its configured to have a hostName of ticketing.dev On Linux
sudo echo "$(minikube ip) ticketing.dev" >> /etc/hosts
and now all routes are available to access.
For Production infra/k8s includes all configuration that can be used on cloud
Note: ticketing.dev is assumed to be set in /etc/hosts as minikube ip read getting started to set it up
- https://ticketing.dev/ -> frontend App
- https://ticketing.dev/api/users -> auth service
- https://ticketing.dev/api/tickets -> tickets service
- https://ticketing.dev/api/orders -> orders service
- https://ticketing.dev/api/payments -> payments service
-
Async communication no inter service dependence and JWT as auth mechanism
-
Events driven architecture using Nats-Streaming with atleast once guarantee
-
Kubernetes workflow with skaffold to make development easy.
All k8s configuration is in infra/k8s
-
MongoDB as database with database for each resource and optimistic concurrency control and Versioning for concurrency issues with some nitty-gritty features of mongoose