From 176915001e027902d8ecbe449d0fbe4efefa0129 Mon Sep 17 00:00:00 2001 From: Abdelaiz Hassan Date: Mon, 27 Jul 2026 19:32:26 -0400 Subject: [PATCH] Complete Q4: Scalability --- q4-scalability/architecturee.png | Bin 0 -> 63655 bytes q4-scalability/calculations.md | 55 +++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 q4-scalability/architecturee.png diff --git a/q4-scalability/architecturee.png b/q4-scalability/architecturee.png new file mode 100644 index 0000000000000000000000000000000000000000..76b84da5e085a9dab5eb75fe8e9b29a481dd8122 GIT binary patch literal 63655 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 literal 0 HcmV?d00001 diff --git a/q4-scalability/calculations.md b/q4-scalability/calculations.md index e69de29..1bf0e3e 100644 --- a/q4-scalability/calculations.md +++ b/q4-scalability/calculations.md @@ -0,0 +1,55 @@ +# Scalability and Load Balancing + +## 1. Required Number of Containers + +### Given + +- Incoming traffic = **15,000 requests/second** +- One container can handle = **500 requests/second** +- Safety margin = **30%** + +### Calculation + +Required containers without margin: + +15000 ÷ 500 = **30 containers** + +Adding a 30% safety margin: + +30 × 1.30 = **39 containers** + +Rounded up: + +**40 containers** + +--- + +## 2. Cold Start Strategy + +To reduce startup delays during traffic spikes, the following strategy is recommended: + +- Keep at least 2 containers always running. +- Enable Horizontal Pod Autoscaler (HPA). +- Cache container images on cluster nodes. +- Use lightweight Docker images. +- Configure Readiness Probes before sending traffic to new containers. +- Scale gradually to avoid resource spikes. + +--- + +## 3. Using Ghaymah Block Storage + +Ghaymah Block Storage should be used for stateful workloads that require persistent storage. + +Examples include: + +- PostgreSQL +- MySQL +- MongoDB + +Benefits: + +- Data persists even if a container restarts. +- High reliability. +- Easy storage expansion. +- Suitable for production databases.