AIM of the project is to show how different technologies can be integrated to build an application.
Application provides basic catalog\shopping cart functionality with the followin features:
- user can register or login
- anonymous user can view list of products in a catalog
- authenticated user can add a product to favorites list
- authenticated user can remove products from list of favorites
Design mock: https://ninjamock.com/s/LVD5BTx
Project has monorepo structure.
- ✅ Gitlab CI with ❓ Review Apps support
- ✅ K8S Gitlab Runner
- ✅ Managed Kubernetes instance in Google Cloud
- ✅ Terraform scripts to create Kubernetes cluster
- ✅ Ambassador API gateway
- Istio service mesh
- NATS event bus
- ✅ CockroachDB relation database
- Prometheus and Grafana metric based monitoring
- Sentry application error monitoring
- ELK logs viewer
- ✅ React based ✅ micro frontends
- ✅ Webpack
- ✅ Lerna
- ✅ Material UI styles
- ✅ GRPC Web communication layer with backend
- GRPC communication layer between services
- ✅ GRPC Healthcheck for K8S readiness and liveness probes
- ✅ Java microservices based on ✅ Spring Boot
- ✅ Gradle
- Golang microservices
- Go Modules
Configure kubectl:
PROJECT_ID=`gcloud projects list --filter="name=catalog" --format="get(project_id)"`
gcloud config set project ${PROJECT_ID}
ZONE=`gcloud container clusters list --filter="name=gke-cluster" --format="get(zone)"`
gcloud config set compute/zone ${ZONE}
gcloud container clusters get-credentials gke-cluster