Current deployment: ShareWise.com
ShareWise is a web-based platform that connects schools with organisations willing to donate surplus tech supplies that would otherwise be destroyed/end up in landfills.
This project demonstrates the complete end-to-end deployment of a containerized application using a modern DevOps toolchain. It covers everything from continuous integration to provisioning infrastructure and automating deployments in the cloud.
The goal of this project was to build a scalable, secure, and automated infrastructure for a web application using best practices in Cloud & DevOps. It simulates a real-world production environment with a full CI/CD pipeline and cloud hosting using AWS.
- Code Repository: GitHub
- CI/CD Automation: Jenkins
- Containerization: Docker
- Image Registry: Docker Hub
- Infrastructure as Code (IaC): Terraform
- Configuration Management: Ansible
- Cloud Provider: AWS
- VPC with Subnets
- Public Subnet: Hosts API servers (EC2 instances)
- Private Subnet: Hosts database servers (EC2 instance)
- Elastic Load Balancer (ELB): Routes traffic to the API instances
- EC2 Instances: Used for API and Database layers
- Code Push: Developer pushes code to GitHub
- CI Trigger: Jenkins is triggered and:
- Builds the Docker image
- Pushes the image to Docker Hub
- Infrastructure Provisioning: Terraform sets up AWS resources
- Deployment: Ansible pulls the Docker image from Docker Hub and deploys the containers to EC2 instances
- Traffic Management: ELB distributes traffic across API instances
| Category | Tool / Service |
|---|---|
| Version Control | GitHub |
| CI/CD | Jenkins |
| Containerization | Docker |
| Image Registry | Docker Hub |
| IaC | Terraform |
| Configuration Management | Ansible |
| Cloud Provider | AWS (EC2, ELB, VPC) |
- Fully automated build, test, and deployment pipeline
- Infrastructure created and managed as code
- Decoupled architecture with scalability and security in mind
- Hands-on experience with DevOps tools in a real-world scenario
To test or deploy the project:
- Clone the repository
- Update AWS credentials and backend config in
terraform/ - Run
terraform applyto provision infrastructure - Trigger Jenkins pipeline manually or via GitHub push
- Use Ansible to deploy containers to provisioned EC2 instances
