added readme for root directory
هذا الالتزام موجود في:
198
README.md
Normal file
198
README.md
Normal file
@@ -0,0 +1,198 @@
|
||||
# 🌩️ Ghaymah SRE Exam — Amir Kasseb
|
||||
|
||||
> **Site Reliability Engineering** technical exam submission on the [Ghaymah Cloud](https://ghaymah.systems) platform.
|
||||
|
||||
**Candidate:** Amir Mohamed Kasseb
|
||||
|
||||
**Profile:** [qabilah.com/profile/amir-m-kasseb](https://qabilah.com/profile/amir-m-kasseb/professional-profile)
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Live Deployments
|
||||
|
||||
| Service | URL | Description |
|
||||
|---|---|---|
|
||||
| 🖥️ **API App** | [gheyma-app-2b88268529f9.hosted.ghaymah.systems](https://gheyma-app-2b88268529f9.hosted.ghaymah.systems) | Go REST API — `/health`, `/metrics` endpoints |
|
||||
| 📊 **SRE Dashboard** | [gheyma-dashboard-f50eaa0b0517.hosted.ghaymah.systems](https://gheyma-dashboard-f50eaa0b0517.hosted.ghaymah.systems) | Live monitoring dashboard for the API |
|
||||
| 🔭 **Mithal Monitor** | [ghaymah-mithal-monitor-9e02b47e8af8.hosted.ghaymah.systems](https://ghaymah-mithal-monitor-9e02b47e8af8.hosted.ghaymah.systems) | Uptime & latency monitor for mithal.space |
|
||||
|
||||
---
|
||||
|
||||
## 📁 Repository Structure
|
||||
|
||||
```
|
||||
ghaymah-exam-amirkasseb-sre/
|
||||
│
|
||||
├── q1-deploy-monitor/ # Q1: Container deployment & SRE monitoring
|
||||
│ ├── app/ # Go REST API (main.go, Dockerfile)
|
||||
│ ├── dashboard/ # SRE monitoring dashboard (HTML/CSS/JS + Nginx)
|
||||
│ ├── health-check.sh # Bash health monitoring daemon (30s interval)
|
||||
│ ├── monitor.log # Health check output log
|
||||
│ └── README.md
|
||||
│
|
||||
├── q2-postmortem/ # Q2: Incident postmortem report
|
||||
│ └── postmortem-report.md # OOMKilled outage analysis & recommendations
|
||||
│
|
||||
├── q3-cicd/ # Q3: CI/CD Pipeline
|
||||
│ ├── workflow.yml # GitHub Actions workflow definition
|
||||
│ └── readme.md # Pipeline design explanation (Arabic)
|
||||
│
|
||||
├── q4-scalability/ # Q4: Scalability & load balancing
|
||||
│ ├── calculations.md # Container count calculations & cold-start strategy
|
||||
│ └── architecture.png # Scalability architecture diagram
|
||||
│
|
||||
├── q5-mithal-monitor/ # Q5: mithal.space full-stack monitor
|
||||
│ ├── monitor.py # Python monitoring script (uptime, latency, SSL, DNS)
|
||||
│ ├── index.html # Interactive monitoring dashboard
|
||||
│ ├── data.jsonl / data.csv # Collected monitoring data
|
||||
│ ├── Dockerfile # Container definition
|
||||
│ └── README.md
|
||||
│
|
||||
├── common-mortakaz/ # Mortakaz integration proposals
|
||||
│ ├── integration-1.md # Qumra × Ghaymah integration proposal
|
||||
│ └── integration-2.md # Second integration proposal
|
||||
│
|
||||
└── common-qabilah/ # Candidate profile
|
||||
└── qabilah-profile.txt # Link to professional profile
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 Questions Summary
|
||||
|
||||
### Q1 — Container Deployment & SRE Monitoring
|
||||
|
||||
Deployed a **Go REST API** to Ghaymah Cloud with:
|
||||
|
||||
- **Multi-stage Dockerfile** (Alpine Linux, non-root user, port 8080)
|
||||
- **3 endpoints**: `GET /` · `GET /health` · `GET /metrics`
|
||||
- **Bash monitoring daemon** (`health-check.sh`) — probes every 30 seconds, logs HTTP status & response time
|
||||
- **Live SRE dashboard** — real-time latency chart, uptime timeline, request count, auto-refresh every 15s
|
||||
|
||||
```bash
|
||||
# Verify live endpoints
|
||||
curl https://gheyma-app-2b88268529f9.hosted.ghaymah.systems/health
|
||||
curl https://gheyma-app-2b88268529f9.hosted.ghaymah.systems/metrics
|
||||
```
|
||||
|
||||
📂 [`q1-deploy-monitor/`](./q1-deploy-monitor/) · 📊 [Live Dashboard](https://gheyma-dashboard-f50eaa0b0517.hosted.ghaymah.systems)
|
||||
|
||||
---
|
||||
|
||||
### Q2 — Incident Postmortem
|
||||
|
||||
Authored a full postmortem for a **45-minute OOMKilled outage**:
|
||||
|
||||
- **Root cause**: Container memory limit set below actual working-set (in-memory cache was never accounted for)
|
||||
- **Timeline**: Pod crash loop from 10:53 → resolved at 11:28 after limit increase
|
||||
- **Recommendations**: Memory-based HPA, 75–80% threshold alerts, restart-count circuit breaker, load testing after stateful changes
|
||||
- **Ghaymah-specific**: Detection flow using Ghaymah Usage Dashboard & application logs
|
||||
|
||||
📂 [`q2-postmortem/postmortem-report.md`](./q2-postmortem/postmortem-report.md)
|
||||
|
||||
---
|
||||
|
||||
### Q3 — CI/CD Pipeline
|
||||
|
||||
Designed a **GitHub Actions CI/CD pipeline** deploying to Ghaymah Cloud:
|
||||
|
||||
```
|
||||
develop → Build & Test → Deploy to Staging
|
||||
main → Build & Test → Manual Approval → Deploy to Production
|
||||
```
|
||||
|
||||
- **Build**: Docker image built & health-tested on every push
|
||||
- **Staging**: Auto-deployed from `develop` branch
|
||||
- **Production**: Requires manual approval via GitHub Environments before deploy
|
||||
- **Ghaymah CLI**: Used to authenticate (`gy auth login`) and deploy (`gy resource app launch`)
|
||||
- **Secrets**: `GHAYMAH_EMAIL` and `GHAYMAH_PW` stored in GitHub Secrets
|
||||
|
||||
📂 [`q3-cicd/workflow.yml`](./q3-cicd/workflow.yml)
|
||||
|
||||
---
|
||||
|
||||
### Q4 — Scalability & Load Balancing
|
||||
|
||||
Calculated infrastructure requirements for **15,000 req/s** with a 30% safety margin:
|
||||
|
||||
```
|
||||
Effective load = 15,000 × 1.3 = 19,500 req/s
|
||||
Containers needed = 19,500 ÷ 500 = 39 containers
|
||||
→ ~77% capacity utilization per container
|
||||
```
|
||||
|
||||
**Cold-start strategies covered:**
|
||||
| Strategy | Description |
|
||||
|---|---|
|
||||
| Predictive Scaling | Spin up containers before threshold is reached |
|
||||
| Warm Pool | 2–3 standby containers always ready |
|
||||
| Golden Images | Pre-baked optimized images to cut init time |
|
||||
| Gradual Traffic Ramp-up | Route load gradually to new containers |
|
||||
| Readiness Probe | Don't add to load balancer until healthy |
|
||||
|
||||
Also covered **Ghaymah Block Storage** for stateful workloads (persistence, snapshots, low-latency I/O).
|
||||
|
||||
📂 [`q4-scalability/calculations.md`](./q4-scalability/calculations.md)
|
||||
|
||||
---
|
||||
|
||||
### Q5 — Mithal.space Monitor & Dashboard
|
||||
|
||||
Built a **full-stack monitoring application** for `mithal.space`:
|
||||
|
||||
- **Python monitoring script** (`monitor.py`) collecting: Uptime, Latency, SSL certificate expiry, DNS resolution time, Search latency
|
||||
- **Interactive dashboard** (`index.html`) with real-time charts (Chart.js)
|
||||
- **Data persistence** in `data.jsonl` and `data.csv`
|
||||
- **Dockerized**: Single-container deployment with volume mounts for data persistence
|
||||
|
||||
```bash
|
||||
# Run with Docker Compose
|
||||
docker compose up -d
|
||||
# → Available at http://localhost:8080
|
||||
|
||||
# Or directly
|
||||
pip install -r requirements.txt
|
||||
python monitor.py
|
||||
```
|
||||
|
||||
📂 [`q5-mithal-monitor/`](./q5-mithal-monitor/) · 🔭 [Live Monitor](https://ghaymah-mithal-monitor-9e02b47e8af8.hosted.ghaymah.systems)
|
||||
|
||||
---
|
||||
|
||||
### Common — Mortakaz Integration Proposals
|
||||
|
||||
Two integration proposals connecting Arabic SaaS products with Ghaymah Cloud:
|
||||
|
||||
- **Integration 1**: [**Qumra × Ghaymah**](./common-mortakaz/integration-1.md) — Store/website builder using Ghaymah as cloud infrastructure layer, monitored via mithal.space
|
||||
- **Integration 2**: [`integration-2.md`](./common-mortakaz/integration-2.md) — Second integration proposal
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Tech Stack
|
||||
|
||||
| Layer | Technology |
|
||||
|---|---|
|
||||
| **API** | Go (Golang), Alpine Linux |
|
||||
| **Containerization** | Docker (multi-stage builds) |
|
||||
| **CI/CD** | GitHub Actions + Ghaymah CLI |
|
||||
| **Monitoring Script** | Bash, Python (requests, ssl, dns) |
|
||||
| **Dashboard** | HTML5, Vanilla CSS, Vanilla JavaScript, Chart.js |
|
||||
| **Cloud Platform** | [Ghaymah Cloud](https://ghaymah.systems) |
|
||||
|
||||
---
|
||||
|
||||
## ✅ Verification
|
||||
|
||||
```bash
|
||||
# API health check
|
||||
curl -i https://gheyma-app-2b88268529f9.hosted.ghaymah.systems/health
|
||||
# Expected: HTTP/1.1 200 OK {"status":"healthy"}
|
||||
|
||||
# API metrics
|
||||
curl -i https://gheyma-app-2b88268529f9.hosted.ghaymah.systems/metrics
|
||||
# Expected: HTTP/1.1 200 OK {"requests":<count>}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> Made with ☁️ on [Ghaymah Cloud](https://ghaymah.systems)
|
||||
المرجع في مشكلة جديدة
حظر مستخدم