310 أسطر
4.9 KiB
Markdown
310 أسطر
4.9 KiB
Markdown
# 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 |