فهم فواتير السحابة
فهم فواتير السحابة
فواتير السحابة ليست عشوائية. كل دولار في تقرير AWS Cost Explorer أو GCP Billing أو Azure Cost Management يُقابل حدثاً مُقاساً محدداً: ثانية معالج مُستهلكة، غيغابايت مُخزَّنة، بايت منقول خارج منطقة. المشكلة أن مزودي الخدمة السحابية يعرضون تلك الأحداث عبر مئات وحدات SKU وعشرات أبعاد التسعير وفخاخ الحد المجاني التي تجعل الإجمالي يبدو معتماً. يُعلّمك هذا الدرس قراءة الفاتورة كما يفعل مهندس FinOps في Netflix أو Lyft — من خلال تحديد محرّكات التكلفة الثلاثة الأساسية (الحوسبة والتخزين والنقل الخارجي) والجناة المعتادين الذين يُضخّمون كل منها.
الحوسبة: المحرّك الرئيسي للتكلفة
لتكلفة الحوسبة ثلاثة أبعاد فرعية يسعّرها مزودو الخدمة السحابية دائماً بشكل منفصل: ساعات الاستخدام (وقت vCPU + RAM)، وترخيص نظام التشغيل (رسوم إضافية لـ Windows/RHEL فوق تكلفة العتاد)، وإضافات التسريع (GPU أو FPGA أو إنتاجية Elastic Network Adapter). قراءة بنود EC2 دون فهم الثلاثة يعطيك صورة ناقصة.
الجناة المعتادون الذين يُضخّمون فواتير الحوسبة:
- الخوادم الزومبي: الخوادم المُتركة تعمل بعد اختبار الحمل أو العرض التوضيحي أو البيئة التطويرية التي لم تُحذف قط. بسعر $0.096 في الساعة لـ m5.xlarge، يُكلّف الخادم المنسي $840 سنوياً. اضرب هذا في 15–30 خادماً تتركها فرق الهندسة عادةً خلفها، وسيكون لديك تسرّب بقيمة $15–25 ألف دون أي قيمة تجارية.
- عائلات الخوادم المُفرطة في الموارد: اختيار
m5.2xlargeلأنه كان الإعداد الافتراضي في Terraform ولم يطعن فيه أحد. في كبرى الشركات التقنية، يبلغ متوسط استخدام المعالج عبر الحوسبة التي تُدفع عند الطلب 12–25%. تحجيم الموارد (الدرس 4) يسترد كثيراً من هذا، لكنك لا تستطيع تحجيم ما لا تستطيع رؤيته. - غياب Savings Plans أو Reserved Instances: التسعير عند الطلب هو السعر الإرشادي — السقف لا الحد الأدنى. تمنح AWS Compute Savings Plans خصماً 40–60% عن الأسعار الفورية مقابل التزام بسنة أو ثلاث سنوات. تشغيل EC2 بقيمة $200 ألف شهرياً عند الطلب حين يمكن استخدام Savings Plan هو تسرّب بقيمة $80–120 ألف سنوياً. (يتناول الدرس 5 الالتزامات بعمق.)
- سوء تهيئة Auto-Scaling: سياسات التوسع التي تُضيف طاقة أسرع مما تُزيلها سياسات التقليص، أو الحجج الدنيا للأسطول المضبوطة بتحفظ مبالغ فيه لحركة المرور خارج ساعات الذروة. حدٌّ أدنى من 10 خوادم يجب أن يكون 3 خلال الليالي وعطلات نهاية الأسبوع يُكلّف أموالاً حقيقية 168 ساعة أسبوعياً.
- بوابات NAT وموازنات التحميل الخاملة: تُكلّف كل بوابة AWS NAT $0.045 في الساعة (~$390 سنوياً) بالإضافة إلى $0.045 لكل غيغابايت مُعالَج، بصرف النظر عن حركة المرور. البيئات المُنشأة لفترة سبرينت ولم تُحذف قط تُبقي هذه الموارد تعمل إلى أجل غير مسمى.
التخزين: صامت لكنه يتراكم
تكاليف التخزين خادعة لأنها تنمو تدريجياً ولا تُولّد تنبيهاً أبداً. فريق لا يحذف شيئاً يُضيف غيغابايتات في كل سبرينت — صور حاويات قديمة، ونسخ احتياطية لقواعد بيانات مُتجاوَزة، وأقراص EBS غير مُستخدمة مرتبطة بخوادم مُنهاة، وأدلة S3 تحوّلت إلى مكان إلقاء للسجلات.
الفئات الرئيسية لتكاليف التخزين:
- أقراص EBS المنفصلة عن الخوادم المُنهاة: عند إنهاء خادم EC2 دون تفعيل
DeleteOnTermination: trueعلى قرصه الجذر، يستمر قرص EBS ويُقدّم الفاتورة بسعر $0.08–$0.10 للغيغابايت شهرياً. قرص بسعة 500 غيغابايت يُكلّف $40 شهرياً دون أي نشاط. قسّم هذا على فريق يُنهي عشرات الخوادم شهرياً ولا يتحقق أبداً من الأقراص المُهملة. - عدم تطابق فئة تخزين S3: S3 Standard بسعر $0.023 للغيغابايت شهرياً مقابل S3 Glacier Instant Retrieval بسعر $0.004 للغيغابايت شهرياً للبيانات التي يُصل إليها مرة كل ربع سنة. السجلات والنسخ الاحتياطية ومجموعات بيانات تدريب ML الجالسة في Standard لأن أحداً لم يُهيّئ سياسة دورة حياة هو دفع زائد بمقدار 5–6 أضعاف.
- انتشار اللقطات الفوضوي: تُنشئ النسخ الاحتياطية الآلية لـ RDS لقطات يومية تُحتفظ بها لمدة 7 أيام افتراضياً — وهو أمر مقبول. لكن اللقطات اليدوية المُنشأة خلال نافذة الصيانة والتي لم تُحذف قط تتراكم إلى أجل غير مسمى. خادم RDS بسعة 2 تيرابايت مع 18 شهراً من اللقطات الأسبوعية اليدوية لديه ~70 تيرابايت من تخزين اللقطات بسعر $0.095 للغيغابايت شهرياً = $6,650 شهرياً في تكاليف اللقطات وحدها، وهو ما يتجاوز تقريباً تكلفة الخادم نفسه.
- انتفاخ سجل الحاويات: كل
docker pushإلى ECR أو GCR يُخزّن بياناً جديداً. فريق نشيط يدفع 20 بناءً يومياً بصورة حجمها 1 غيغابايت ودون سياسة دورة حياة يتراكم لديه 7,200 طبقة صور سنوياً. تُقيّد ECR $0.10 للغيغابايت شهرياً بعد الحصة المجانية.
نقل البيانات الصادر: الضريبة الخفية التي تُفاجئ الفرق
تسعير نقل البيانات غير متماثل عمداً: الوارد (البيانات القادمة إلى السحابة) مجاني؛ أما الصادر (البيانات المُغادِرة) فمكلف. تفرض AWS تقريباً $0.09 للغيغابايت لأول 10 تيرابايت شهرياً من الخروج عبر الإنترنت، تنخفض إلى $0.085 في النطاق الواسع. تفرض GCP $0.08 للغيغابايت لأول 10 تيرابايت. تفرض Azure $0.087 للغيغابايت. تبدو هذه الأرقام صغيرة حتى تدير منصة بيانات تنقل تيرابايتات يومياً.
فئات تكاليف النقل الصادر التي تُفاجئ الفرق:
- حركة المرور عبر مناطق التوافر: تفرض AWS $0.01 للغيغابايت على البيانات التي تعبر مناطق التوافر. هذا غير مرئي في التطوير (منطقة توافر واحدة) لكنه يُصبح جوهرياً في النشر الإنتاجي متعدد مناطق التوافر. بنية خدمات مصغّرة تُجري 100,000 استدعاء متزامن عبر الخدمات في الثانية، يُعيد كل منها 5 كيلوبايت، تعبر حدود مناطق التوافر في نحو 50% من تلك الاستدعاءات في إعداد 3 مناطق — أي 15 غيغابايت في الساعة أو $130 شهرياً من زوج خدمة واحد. اضرب في 50 خدمة مصغّرة.
- النسخ المتماثل عبر المناطق الجغرافية: نسخ دلو S3 أو قراءة نسخة متماثلة من RDS عبر المناطق يُكلّف كلاً من التخزين ونقل البيانات. نسخ 5 تيرابايت من us-east-1 إلى eu-west-1 يُكلّف $0.02 للغيغابايت = $100 لكل تيرابايت لمرة واحدة، بالإضافة إلى حركة النسخ المتماثل المستمرة.
- معالجة بيانات بوابة NAT: كل بايت من شبكة فرعية خاصة يعبر بوابة NAT يُقيَّد بـ $0.045 للغيغابايت فوق التكلفة الساعية للبوابة. وظائف Lambda في VPC تصل إلى S3 عبر NAT (بدلاً من نقطة نهاية VPC) هو مثال كلاسيكي للدفع $0.045 للغيغابايت مقابل بيانات يمكن أن تكون مجانية.
- واجهة برمجة تطبيقات مباشرة مقابل CloudFront: تقديم الأصول الكبيرة (الصور، مقاطع الفيديو، الملفات القابلة للتنزيل) مباشرة من أصل EC2 أو S3 يُكلّف $0.09 للغيغابايت. وضع CloudFront أمامه يُكلّف $0.0085 للغيغابايت من حافة CDN — انخفاض 10 أضعاف لحركة المرور التي تُصاب في الكاش.
قراءة الفاتورة بشكل منهجي: سير عمل FinOps
كل مراجعة FinOps يجب أن تتبع نفس التحليل من الأعلى إلى الأسفل. ابدأ من الإجمالي، وقسّمه إلى فئات خدمات، ثم أدخل في أعلى المتحركات والشذوذات. يدعم AWS Cost Explorer وGCP Billing Reports وواجهة ce CLI جميعها هذا النمط.
team وservice وenvironment وcost-center وقت الإنشاء، يُفرض بواسطة SCP (سياسة التحكم في الخدمة) التي ترفض إنشاء الموارد غير الموسومة. بدون وسوم، لا يمكنك توزيع التكلفة على فريق، ولا تحديد ميزانيات لكل خدمة، ولا معرفة أي خدمة مصغّرة تمتلك دلو S3 الذي يُكلّف $4,000 شهرياً. العمود الرابع في أي نقاش FinOps هو دائماً "من يمتلك هذا؟" — والوسوم هي البنية التحتية التي تجعل هذا السؤال قابلاً للإجابة.
ترجمة وحدات SKU إلى سلوكيات
تستخدم بنود تقديم الخدمة السحابية أوصاف SKU مختصرة تُخفي السلوك الأساسي. تعلّم جدول الترجمة هو مهارة FinOps أساسية:
DataTransfer-Out-Bytes— خروج الإنترنت من EC2 أو ELB؛ $0.09/GBAPN1-DataTransfer-Regional-Bytes— عبر مناطق التوافر داخل منطقة واحدة؛ $0.01/GB (تسمية "Regional" هي التلميح)USE1-NatGateway-Bytes— معالجة بيانات بوابة NAT؛ $0.045/GBEBS:VolumeUsage.gp3— تخزين EBS المُحجوز بصرف النظر عن حالة الارتباط؛ $0.08/GB-monthRDS:StorageIOUsage— رسوم I/O على خوادم RDS القديمة المستندة إلى gp2؛ صفر على gp3 المُحجوزة IOPSBoxUsage:m5.xlarge— ساعات خادم EC2 عند الطلب؛ بند الحوسبة الأكثر شيوعاًHeavyUsage:m5.xlarge— استخدام Reserved Instance الموروث؛ يظهر في الحسابات القديمة المستمرة على RI بدلاً من Savings Plans
عند ظهور SKU غير مألوف، الحل الأسرع هو AWS Pricing API أو كتالوج GCP SKU — كلاهما قابل للاستعلام ويُعيد أوصافاً مقروءة للإنسان. لا تخمّن أبداً ما يعنيه SKU بناءً على اسمه؛ البعد السعري المخفي بداخله (لكل ساعة أو لكل غيغابايت أو لكل طلب) يُحدد رافعة التحسين.