تصميم البنية للتحكم في التكلفة
تصميم البنية للتحكم في التكلفة
كل قرار معماري يحمل تكلفةً تتراكم على مدى حياة النظام. المهندس الذي يختار استدعاء API متزامناً عبر المناطق بدلاً من طابور انتظار غير متزامن، أو يخزن بيانات التحليلات الدافئة في S3 Standard بدلاً من Intelligent-Tiering، يتخذ قراراً يؤثر في التكلفة — عادةً دون أن يدرك ذلك. عند إنفاق 5 ملايين دولار شهرياً على الحوسبة السحابية، يُشكّل الهدر المعماري عادةً 20–40% من الفاتورة، وهو أكبر بكثير مما تُحقّقه إعادة ضبط حجم الأجهزة الافتراضية. يتناول هذا الدرس الرافعات الثلاث الأكثر تأثيراً: التصميم الواعي بتكاليف نقل البيانات، وتدرّج التخزين، واقتصاديات الحوسبة بلا خوادم.
التصميم الواعي بتكاليف النقل
رسوم نقل البيانات هي البند الأكثر استهانةً في فاتورة السحابة. تُحصّل AWS لا شيئاً على البيانات الداخلة إلى المنطقة، لكنها تُحصّل $0.09 لكل GB خارج المنطقة إلى الإنترنت، و$0.02 لكل GB بين المناطق، و$0.01 لكل GB بين مناطق التوافر في الاتجاهين. بنية ميكروخدمات تُنتج 50 TB يومياً من حركة مرور تعبر مناطق التوافر تُكلّف نحو 15,000 دولار شهرياً في رسوم النقل وحدها.
- تجميع البيانات والحوسبة في مناطق التوافر ذاتها. قراءة EC2 من نسخة RDS في نفس منطقة التوافر لا تُكلّف شيئاً. القراءة ذاتها عبر منطقة توافر مختلفة تُكلّف $0.01/GB في كل اتجاه. استخدم التوجيه بالقرب (
topologyKey: topology.kubernetes.io/zoneفي Kubernetes) لإبقاء المسارات الساخنة محلية. - استبدال NAT Gateway بنقاط نهاية VPC. تمتلك S3 وDynamoDB Gateway Endpoints مجانية توجّه حركة المرور بصورة خاصة داخل AWS — لا رسوم معالجة NAT ($0.045/GB). NAT gateway تعالج 100 TB شهرياً من حركة S3 تُكلّف $4,500؛ نفس حركة المرور عبر Gateway Endpoint تُكلّف $0.
- دفع البيانات نحو الحافة لا نحو الأصل. معدلات إصابة ذاكرة التخزين المؤقت في CloudFront تبلغ 80–95%، مما يعني أن الأصل لا يُقدّم تلك البيانات أصلاً. خدمة تبث 1 PB شهرياً مباشرة من S3 تُكلّف ~$23,000 في النقل؛ عبر CloudFront بمعدل إصابة 85% تُكلّف ~$8,500.
- تصغير أحجام الحمولات بين الخدمات. أنماط التشعّب — حدث واحد يُشغّل 10 استدعاءات تُعيد كل منها 200 KB من JSON — تُضاعف حركة النقل بصمت. استخدم Protobuf أو Avro للتواصل الداخلي (أصغر 5–10 أضعاف من JSON) وأعد الحقول المختارة فقط.
تدرّج التخزين
يُسعَّر التخزين السحابي على أساس الطبقة، وأغلب الفرق تستخدم طبقة واحدة فقط — Standard — لكل شيء. النتيجة دفع زائد كبير للبيانات نادرة الوصول. تتراوح أسعار S3 بين $0.023/GB/شهر في Standard وحتى $0.004/GB/شهر في Glacier Deep Archive — فارق 6 أضعاف. مجموعة بيانات حجمها 1 PB لم يُصل إليها منذ 180 يوماً لكنها في Standard تُكلّف $23,000 شهرياً دون داعٍ.
- S3 Standard: $0.023/GB. للبيانات النشطة التي يُصل إليها عدة مرات شهرياً.
- S3 Intelligent-Tiering: $0.023/GB + رسوم مراقبة $0.0025/1,000 كائن. ينقل الكائنات تلقائياً بين طبقتَي الوصول المتكرر والنادر بناءً على أنماط 30 يوماً. هذا هو الافتراضي المثالي لأي بيانات غير محدد نمط وصولها.
- S3 Standard-IA: $0.0125/GB تخزيناً لكن $0.01/GB استرجاعاً. مناسب للنسخ الاحتياطية التي يُصل إليها بضع مرات سنوياً.
- S3 Glacier Instant Retrieval: $0.004/GB. وقت استرجاع بالميلي ثانية. مناسب لأرشيفات الامتثال التي يُصل إليها مرة كل ربع سنة.
- S3 Glacier Deep Archive: $0.00099/GB. استرجاع خلال 12 ساعة. للأرشيفات التنظيمية التي يجب الاحتفاظ بها 7 سنوات وتكاد لا تُستخدم.
اقتصاديات الحوسبة بلا خوادم
تحوّل Lambda والخدمات المدارة نموذج التكلفة من الطاقة الاستيعابية إلى الاستهلاك الفعلي. هذا نموذج اقتصادي مختلف جذرياً، وله وجهان: عند الاستخدام المنخفض أو المتذبذب يكون بلا خوادم أرخص بكثير من الأجهزة المحجوزة؛ وعند الاستخدام المستدام العالي يصبح أغلى بكثير.
نقطة التعادل بين Lambda وأجهزة EC2 المحجوزة تقع عند حوالي 20–30% من الاستخدام. دون ذلك تفوز Lambda بالتكلفة؛ فوقه تفوز Reserved Instance أو Savings Plan. الأسئلة التحليلية الجوهرية:
- ما معدل الاستدعاء عند p50 وp99 خلال 24 ساعة؟ الأعباء ذات نسبة نهار/ليل 10:1 هي مرشحات Lambda المثالية؛ الأعباء ذات الاستخدام الثابت 24/7 ليست كذلك.
- ما مدة تنفيذ الدالة؟ Lambda تُحصّل رسوماً لكل GB-ثانية تنفيذ. دالة تستخدم 512 MB لمدة 200 ميلي ثانية تُكلّف $0.000001667 لكل استدعاء. عند مليار استدعاء شهرياً ذلك $1,667 مقابل ~$800 لعنقود Fargate مكافئ.
- ما تكلفة تأخير البداية الباردة على تجربة المستخدم؟ تتراوح بدايات Lambda الباردة من 100 ميلي ثانية (Python/Node) إلى 3 ثوانٍ (JVM). Provisioned Concurrency تُلغيها لكن بتكلفة ~$0.015/ساعة لكل وحدة تزامن.
قائمة التحقق المعماري للتكلفة
قبل أي مراجعة معمارية أو فحص جاهزية للإنتاج، اطرح هذه الأسئلة:
- هل كل استدعاء بين الخدمات يعبر منطقة توافر أو منطقة جغرافية؟ هل ذلك مبرر بمتطلبات المرونة أم مجرد طوبولوجيا عرضية؟
- هل توجد NAT gateway في المسار لحركة مرور يمكن توجيهها عبر VPC endpoint بدلاً منها؟
- هل توجد بيانات في S3 Standard لم يُصل إليها منذ 30 يوماً؟ هل توجد قاعدة دورة حياة؟
- هل جرى قياس استخدام ذاكرة دوال Lambda؟ هل مجموعات السجلات مضبوطة على الانتهاء؟
- هل تُستخدم الحوسبة بلا خوادم لأعباء عالية ومستدامة حيث تكون الحوسبة المحجوزة أرخص؟
- هل يجري قياس معدلات إصابة ذاكرة CDN؟ هل وقت صلاحية الذاكرة المؤقتة محدد بقصد أم مترك للإعداد الافتراضي؟