Continuous integration and continuous Delivery of a Multi-tier Cloud-native Web application on AWS with Advance Monitoring Capabilities using Prometheus
A simple employee directory web application built with ReactJS for the frontend and NodeJS for the backend logic. It features a Postgres database for storing employee credentials. The application demonstrates my in-depth knowledge of continuous integration and continuous delivery (CICD) by building an automated CICD pipeline using CircleCI to build the linted and properly tested code into a Docker image and deploying it to a development environment on AWS, with the help of Ansible for configuration management and Prometheus and Alert Manager for enhancing the monitoring capabilities of the infrastructure.
- CircleCI - Cloud-based CI/CD service
- Amazon AWS - Cloud services
- AWS CLI - Command-line tool for AWS
- CloudFormation - Infrastructure as code
- Ansible - Configuration management tool
- Prometheus - Monitoring tool
- AWS CLI - Command-line tool for AWS
- Docker - Containerization platform
- Node.js - JavaScript runtime
- Postgres - Open-source relational database
-
Clone the repository
-
Install the dependencies
cd employee-directory
npm install
-
Build the Docker image
docker build -t employee-directory .
-
Run the Docker container
docker run -p 3000:3000 employee-directory
-
Access the application in your browser at http://localhost:3000
-
Login to your AWS account, Create an IAM user with Programmatic access permissions and configure the AWS CLI
-
Create a CloudFormation stack using the provided template
aws cloudformation create-stack --stack-name employee-directory --template-body file://infrastructure.yml
-
Use Ansible to configure the EC2 instances
ansible-playbook -i inventory.ini deploy.yml
-
Deploy the application to the development environment
-
Access Prometheus at http://<your_ec2_instance_ip>:9090
-
Access Alert Manager at http://<your_ec2_instance_ip>:9093
- Uviekugbere Theophilus - Github
This project is licensed under the MIT License - see the LICENSE file for details