diff --git a/README.md b/README.md index e69de29..8be6670 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,310 @@ +# Ghaymah SRE Technical Assessment + +A complete solution for the Ghaymah Site Reliability Engineering (SRE) technical assessment. + +This repository demonstrates practical SRE and DevOps skills including containerization, monitoring, incident response, CI/CD automation, scalability planning, cloud architecture, and infrastructure documentation. + +--- + +# Repository Structure + +```text +. +├── README.md +│ +├── q1-deploy-monitor/ +│ ├── Dockerfile +│ ├── app.py +│ ├── requirements.txt +│ ├── health-check.sh +│ ├── dashboard.html +│ ├── update_monitor.py +│ └── monitoring-data.json +│ +├── q2-postmortem/ +│ └── postmortem-report.md +│ +├── q3-cicd/ +│ ├── workflow.yml +│ └── README.md +│ +├── q4-scalability/ +│ ├── architecture-diagram.png +│ └── calculations.md +│ +├── q5-mithal-monitor/ +│ ├── monitor.py +│ ├── dashboard.html +│ ├── monitoring-data.json +│ └── requirements.txt +│ +├── common-mortakaz/ +│ ├── integration-1.md +│ └── integration-2.md +│ +└── common-qabilah/ + └── qabilah-profile.txt +``` + +--- + +# Project Overview + +The repository contains implementations for the following SRE topics: + +| Question | Topic | Status | +|----------|-------|--------| +| Q1 | Container Deployment & Monitoring | ✅ | +| Q2 | Incident Postmortem & Auto Scaling | ✅ | +| Q3 | CI/CD Pipeline | ✅ | +| Q4 | Scalability & Load Balancing | ✅ | +| Q5 | Monitoring Dashboard | ✅ | +| Bonus A | Mortakaz Integration Proposals | ✅ | +| Bonus B | Qabilah Profile | ✅ | + +--- + +# Technologies Used + +- Python +- Flask +- Docker +- GitHub Actions +- HTML +- CSS +- JavaScript +- Chart.js +- Bash +- JSON +- Git +- Ghaymah Platform +- mithal.space + +--- + +# Question 1 — Deploy & Monitor an API + +Implemented: + +- Dockerized Python API +- `/health` endpoint +- Monitoring script +- Simple monitoring dashboard +- Response time tracking +- Request counting + +Features + +- Docker container +- Health endpoint +- Automatic health checks +- Live dashboard +- JSON-based monitoring storage + +--- + +# Question 2 — Incident Postmortem + +Created a complete production-style postmortem including: + +- Executive Summary +- Timeline +- Root Cause Analysis +- Corrective Actions +- Preventive Actions +- Auto-scaling Policy +- Monitoring Strategy +- Lessons Learned + +--- + +# Question 3 — CI/CD Pipeline + +Implemented a GitHub Actions workflow that includes: + +- Docker image build +- Push to Ghaymah Container Registry +- Staging deployment +- Manual approval before production +- Production deployment +- Docker layer caching + +Pipeline Flow + +``` +Push + │ + ▼ +Build Docker Image + │ + ▼ +Push Image + │ + ▼ +Deploy to Staging + │ + ▼ +Manual Approval + │ + ▼ +Deploy to Production +``` + +--- + +# Question 4 — Scalability Design + +Designed an architecture capable of handling: + +- **15,000 requests/second** + +Included: + +- High-level architecture +- Container sizing calculations +- Auto Scaling strategy +- Cold-start optimization +- Load balancing +- Block Storage usage + +Result: + +- **39 application containers** + +--- + +# Question 5 — Monitoring Dashboard + +Implemented a monitoring solution for **mithal.space**. + +Collected metrics include: + +- HTTP Latency +- Uptime +- HTTP Status +- DNS Resolution Time +- SSL Certificate Status +- SSL Expiration +- Search Response Time + +Dashboard Features + +- 24-hour uptime +- Response time graph +- SSL health +- Recent checks table +- Live status indicator + +--- + +# Mortakaz Integration + +Prepared two integration proposals demonstrating how products from Mortakaz can integrate with the Ghaymah ecosystem. + +Included: + +- Product overview +- Integration architecture +- Business value +- Technical challenges +- Architecture diagrams + +--- + +# Qabilah + +Qabilah profile: + +**Profile** + +https://qabilah.com/profile/noransalm/posts + +The profile link is also included in: + +``` +common-qabilah/qabilah-profile.txt +``` + +--- + +# Running the Project + +## Q1 + +```bash +cd q1-deploy-monitor + +docker build -t api . + +docker run -p 5000:5000 api +``` + +--- + +## Monitoring Script + +```bash +bash health-check.sh +``` + +or + +```bash +python monitor.py +``` + +--- + +## Dashboard + +Open: + +``` +dashboard.html +``` + +or serve locally: + +```bash +python -m http.server 8000 +``` + +--- + +# Best Practices Applied + +- Dockerized applications +- Health endpoints +- Automated monitoring +- Infrastructure documentation +- Production-style incident analysis +- GitHub Actions CI/CD +- Manual production approval +- Auto Scaling recommendations +- Persistent monitoring data +- Separation of environments +- Lightweight container design +- Cloud-native architecture + +--- + +# References + +- Docker Documentation +- GitHub Actions Documentation +- Flask Documentation +- Chart.js Documentation +- Ghaymah Platform Documentation +- mithal.space + +--- + +# Author + +**Noran Salm** + +Computer and Systems Engineering Student + +Qabilah Profile + +https://qabilah.com/profile/noransalm/posts \ No newline at end of file diff --git a/common-mortakaz/README.md b/common-mortakaz/README.md new file mode 100644 index 0000000..667a416 --- /dev/null +++ b/common-mortakaz/README.md @@ -0,0 +1,15 @@ +## Mortakaz Integration + +### Integration Proposals + +- **integration-1.md** — Nazel × Ghaymah Cloud +- **integration-2.md** — Hifz × Ghaymah & Mithal + +### Recommended Integration + +**Hifz** is the stronger candidate because: + +- It is a complete web application. +- It naturally fits containerized deployment. +- It benefits directly from monitoring, persistent storage, and Auto Scaling. +- It can easily be delivered as a managed SaaS solution. \ No newline at end of file diff --git a/common-mortakaz/integration-1.md b/common-mortakaz/integration-1.md index e69de29..166b9ff 100644 --- a/common-mortakaz/integration-1.md +++ b/common-mortakaz/integration-1.md @@ -0,0 +1,65 @@ +# Integration Proposal 1 + +# Nazel × Ghaymah Cloud + +## Product Overview + +**Nazel** is an Arabic platform for uploading, sharing, and downloading files. It enables developers and individuals to distribute applications and digital content securely and efficiently. + +--- + +# Proposed Integration + +## Ghaymah Services + +- Ghaymah Block Storage +- Ghaymah Container Registry + +### Integration Idea + +Replace local file storage with **Ghaymah Block Storage** to provide scalable and persistent storage. + +For application uploads, integrate with **Ghaymah Container Registry**, allowing developers to publish container images directly after uploading their applications. + +--- + +# Architecture + +```mermaid +flowchart LR + +User --> Web +Web --> API + +API --> BlockStorage["Ghaymah Block Storage"] +API --> Registry["Ghaymah Container Registry"] + +Registry --> Deploy["Deploy on Ghaymah"] +BlockStorage --> CDN["Content Delivery"] +``` + +--- + +# Benefits + +- Persistent cloud storage +- Faster file delivery +- Automatic scalability +- One-click application deployment +- Improved reliability + +--- + +# Challenges + +| Challenge | Solution | +|-----------|----------| +| Large storage costs | Storage quotas and premium plans | +| Existing data migration | Incremental migration strategy | +| Data compliance | Regional infrastructure and encryption | + +--- + +# Conclusion + +Integrating Nazel with Ghaymah would improve scalability, reliability, and developer experience while reducing operational complexity. \ No newline at end of file diff --git a/common-mortakaz/integration-2.md b/common-mortakaz/integration-2.md index e69de29..a3f8fb5 100644 --- a/common-mortakaz/integration-2.md +++ b/common-mortakaz/integration-2.md @@ -0,0 +1,76 @@ +# Integration Proposal 2 + +# Hifz × Ghaymah & Mithal + +## Product Overview + +**Hifz** is an open-source platform for managing Quran memorization centers. It connects administrators, teachers, students, and parents through a centralized web application. + +--- + +# Proposed Integration + +## Ghaymah Services + +- Ghaymah Container Platform +- Ghaymah Block Storage +- Mithal Monitoring + +### Integration Idea + +Deploy the application on Ghaymah containers while storing persistent data on Block Storage. + +Use Mithal to monitor availability, latency, logs, and application health. + +--- + +# Architecture + +```mermaid +flowchart TB + +Users --> App + +subgraph Ghaymah +App --> Database +App --> Storage["Block Storage"] +end + +subgraph Mithal +Metrics +Alerts +Logs +end + +App -.-> Metrics +Metrics --> Alerts +Metrics --> Logs +``` + +--- + +# Benefits + +- High availability +- Automatic scaling +- Persistent storage +- Continuous monitoring +- Faster incident detection +- Better operational visibility + +--- + +# Challenges + +| Challenge | Solution | +|-----------|----------| +| Sensitive data | Encryption and IAM | +| Infrastructure cost | Auto Scaling | +| Database migration | Staged migration | +| Container compatibility | Testing before deployment | + +--- + +# Conclusion + +Deploying Hifz on Ghaymah with Mithal monitoring creates a reliable, scalable, and production-ready platform suitable for educational organizations. \ No newline at end of file diff --git a/common-qabilah/qabilah-profile.txt b/common-qabilah/qabilah-profile.txt index e69de29..ffb11a7 100644 --- a/common-qabilah/qabilah-profile.txt +++ b/common-qabilah/qabilah-profile.txt @@ -0,0 +1,6 @@ +Qabilah Profile + +Name: Noran Salm + +Profile: +https://qabilah.com/profile/noransalm/posts \ No newline at end of file