From 4a2286fff5c520d516781a305c14f98306479eb8 Mon Sep 17 00:00:00 2001 From: MohamedAdelElwekel Date: Mon, 27 Jul 2026 21:06:33 +0300 Subject: [PATCH] Q4: Answer --- q4-scalability/architecture.png | Bin 0 -> 8435 bytes q4-scalability/calculations.md | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 q4-scalability/architecture.png create mode 100644 q4-scalability/calculations.md diff --git a/q4-scalability/architecture.png b/q4-scalability/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..7f91bb8215132d9d0e858a5997ad0631b3afacb9 GIT binary patch literal 8435 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 literal 0 HcmV?d00001 diff --git a/q4-scalability/calculations.md b/q4-scalability/calculations.md new file mode 100644 index 0000000..6df37f1 --- /dev/null +++ b/q4-scalability/calculations.md @@ -0,0 +1,25 @@ +# Scalability & Load Balancing Design + +## 2. Capacity Planning (Container Calculation) + +To handle 15,000 req/s efficiently with a safety buffer to prevent server overload during spikes: + +- **Base Requirement:** 15,000 req/s ÷ 500 req/s per container = **30 Containers**. +- **Safety Buffer (30%):** 30 × 0.30 = **9 Containers**. +- **Total Required Containers:** 30 + 9 = **39 Containers**. + +## 3. Cold Start Strategy + +To minimize the "Cold Start" delay when new containers are provisioning under sudden load, we will implement two main solutions: + +1. **Pre-baked Images:** Instead of downloading heavy dependencies at runtime, we install and package all core dependencies directly into the Docker image during the build stage. This ensures the container has everything it needs and starts up instantly. +2. **Proactive Auto-scaling (Early Alarms):** Configure the autoscaler to trigger at an earlier threshold (e.g., 75%-85% utilization). This provides a time buffer, giving new containers enough time to start and become fully ready before the existing containers hit their absolute limits and crash. + +## 4. Stateful Workloads & Ghaymah Block Storage + +Containers are "Stateless" by nature, meaning if a container restarts or dies, all its internal data is permanently lost. For "Stateful" applications like databases, this behavior is unacceptable. +To solve this, we use **Ghaymah Block Storage** (which acts exactly like Docker Volumes): + +- We create an independent, external Block Storage disk. +- We mount this disk directly to the database container. +- All data is written to this external volume. If the database container crashes, the Block Storage remains safe and intact. When a new container spins up, it simply reconnects to the same volume, ensuring zero data loss and maintaining the state.