This repository contains all the DevOps files needed for Qwitter (X clone). I have used various tools on this project, and it was deployed on Azure, and the database was hosted on AWS (RDS).
Docker was used to containerize both the backend and frontend projects, making it easy to deploy them on hosted servers.
Jenkins was employed to automate the process of pushing changes to GitHub. Instead of manually pulling these changes, building the Docker image, and then pushing it to Docker Hub, Jenkins handled the entire process automatically
In this project, I implemented a total of four pipelines: two for backend (Development and Production), and two for frontend (Development and Production).
Backend Development pipeline has the following stages:
Backend Production pipeline has the following stages:
Frontend Development pipeline has the following stages:
Frontend Production pipeline has the following stages:
I have also used a mailing service that sends an email to the team leader whenever a pipeline fails and when it returns to normal operation.
Prometheus is an open-source monitoring tool tailored for dynamic infrastructures. With a robust querying language and alerting features, Prometheus enables real-time insights into system performance. All Prometheus configuration files can be found here.
Grafana is an open-source analytics and monitoring platform that integrates with Prometheus, allowing users to visualize and understand their metrics through dynamic and customizable dashboards. Its user-friendly interface and extensive plugin ecosystem make it a versatile tool for creating insightful and interactive visualizations to monitor and analyze data across different domains.
I have monitored my three servers: Backend, Frontend, and Jenkins.
I utilized AWS to obtain a hosted relational database (RDS).
I employed Azure to host the backend, frontend, and Jenkins, as well as to acquire Azure Storage for storing static files.
Watchtower is an application that monitors running containers for changes to their images. When someone pushes an update to Docker Hub, Watchtower detects the changes, pulls down the new image, and subsequently restarts the container using the updated image with the same start options as the original.
I utilized clouDNS to obtain the domain name for Qwitter (qwitter.cloudns.org) and a sub-domain for the backend server (back.qwitter.cloudns.org).
Name | |
---|---|
Fares Atef | [email protected] |