Final Project for CMPT 756 Distributed & Cloud Systems.
This application is a marketplace for the sale and purchase of Non-Fungible Tokens (NFTs). The application utilizes a highly decoupled microservice architecture with five core services, each of which are Flask applications. Load testing, metric recording, and dashboarding is implemented for scalability analysis. Continuous Integration and Delivery are provided by workflows in GitHub Actions.
- Python
- Flask
- Prometheus
- Grafana
- Gatling
- Docker
- Amazon EC2, EKS, and DynamoDB
- After cloning the repository, access the tool container via the command:
tools/shell.sh
- Setup the templates using the command:
make -f k8s-tpl.mak templates
- Provision the EKS cluster using the command:
make -f eks.mak start
- Install Istio and configure the other services using the command
tools/setup.sh
- The cluster is now setup. Access Grafana via the command
make -f k8s.mak grafana-url
- Prometheus can be accessed using the command
make -f k8s.mak prometheus-url
- Kiali can be accessed using the command
make -f k8s.mak kiali-url
- Gatling tests can be performed in the following manner:
- To perform gatling user test scenario use the command
tools/gatling-user-test.sh $(NUMBER_OF_USERS)
- To perform gatling image test scenario use the command
tools/gatling-user-test.sh $(NUMBER_OF_USERS)
- To perform gatling transaction test scenario use the command
tools/gatling-user-test.sh $(NUMBER_OF_USERS)
- To perform gatling user test scenario use the command
- The K9s service can be accessed via the command
k9s