يا جماعة الخير، السلام عليكم ورحمة الله وبركاته.
أذكر جيداً ذلك الصباح في بداية كل شهر، كان يوماً أشبه بيوم الحساب في شركتنا الناشئة. نجتمع كلنا، فريق التطوير والإدارة، حول طاولة واحدة، والكل يتجنب النظر في عيني الآخر. على الشاشة الكبيرة، رقم واحد فقط يفرض صمتاً رهيباً على الغرفة: فاتورة الخدمات السحابية للشهر الماضي. رقم كبير، أكبر من المتوقع كالعادة، ومثل كل شهر، يطرح المدير نفس السؤال: “يا شباب، وين راحت كل هالمصاري؟”.
كنا نشعر وكأننا في قارب مثقوب وسط البحر، نسكب الماء للخارج باستمرار لكننا لا نعرف من أين يأتي الثقب. هل هو مشروع العميل “س” الذي يستهلك موارد الذكاء الاصطناعي بكثافة؟ أم هي بيئة الاختبار التي نسيها أحد المطورين تعمل طوال عطلة نهاية الأسبوع؟ أم ربما تلك الميزة الجديدة التي أطلقناها للتو؟ لا أحد كان يملك إجابة دقيقة. كنا “مش عارفين راسنا من رجلينا”، واللوم يتطاير في الهواء كالغبار.
في أحد هذه الاجتماعات، وبعد نقاش حاد لم يؤدِّ إلى نتيجة، ضربتُ على الطاولة (بشكل خفيف طبعاً!) وقلت: “يا جماعة، الحل مش باللوم، الحل بالتنظيم. لازم نعرف كل قرش وين بروح بالضبط. لازم نعلّم كل إشي بنعمله على السحابة”. ومن هنا، بدأت رحلتنا مع منقذنا الصامت: علامات تخصيص التكلفة أو الـ Cost Allocation Tags.
ما هي ‘علامات تخصيص التكلفة’ (Cost Allocation Tags)؟
ببساطة شديدة، تخيل أنك دخلت سوبر ماركت ضخم وملأت عربة التسوق بكل ما لذ وطاب. عندما تصل إلى الكاشير، يعطيك فاتورة واحدة برقم إجمالي. الآن، كيف ستعرف كم كلفك قسم الألبان، وكم كلفك قسم الخضروات، وكم كلفتك الحلويات التي اشتريتها خلسة؟
علامات التخصيص هي بمثابة وضع “ملصق سعر” أو “بطاقة تعريف” على كل عنصر تضعه في عربتك السحابية. هي عبارة عن زوج من المفتاح والقيمة (Key-Value Pair) يمكنك إرفاقها بأي مورد سحابي (مثل السيرفرات، قواعد البيانات، مساحات التخزين، وغيرها).
على سبيل المثال:
Project: PhoenixEnvironment: ProductionTeam: AI-R&DOwner: AbuOmar
عندما تقوم بـ “توسيم” أو “Tagging” جميع مواردك بهذه الطريقة، فإن فاتورتك السحابية تتحول من رقم واحد غامض إلى تقرير مفصل ومنظم يخبرك بالضبط من أنفق ماذا ولماذا.
لماذا كانت فاتورتنا لغزاً محيراً؟ (المشكلة بالتفصيل)
قبل تطبيق العلامات، كانت بيئتنا السحابية مثل سوق شعبي في ساعة الذروة، فوضى عارمة. كانت أبرز المشاكل التي نواجهها هي:
- الموارد المشتركة: قاعدة بيانات واحدة تخدم ثلاثة مشاريع مختلفة. من المسؤول عن تكلفتها؟ لا أحد يعلم.
- بيئات التطوير المنسية (Zombie Environments): كان المطورون ينشئون بيئات للاختبار والتجربة ثم ينسون إغلاقها أو حذفها، فتبقى تعمل وتستهلك المال في الخلفية.
- صعوبة حساب الربحية: كيف يمكننا تحديد ما إذا كان مشروع العميل “ص” مربحاً إذا كنا لا نعرف تكلفة البنية التحتية التي يستهلكها؟
* القفزات غير المبررة: أحياناً، كنا نرى قفزة هائلة في التكلفة بسبب خدمة معينة، لكننا لا نعرف أي فريق أو ميزة هي السبب الرئيسي وراء هذا الاستخدام المكثف.
كان الوضع أشبه بمحاولة إدارة ميزانية عائلة كبيرة دون معرفة مصاريف كل فرد. كانت النتيجة حتمية: إنفاق زائد، قرارات خاطئة، والكثير من التوتر غير الضروري.
‘التاجات’ في الميدان: كيف بدأنا رحلة التنظيم؟
التحول لم يحدث بين ليلة وضحاها، بل كان عملية مدروسة ومنظمة. اتبعنا ثلاث خطوات أساسية لوضع الأمور في نصابها.
الخطوة الأولى: الاتفاق على استراتيجية التوسيم (Tagging Strategy)
قبل كتابة أي سطر كود أو تعديل أي مورد، عقدنا اجتماعاً واتفقنا على مجموعة موحدة من العلامات الإلزامية لكل مورد سيتم إنشاؤه مستقبلاً، بالإضافة إلى خطة لتوسيم الموارد الحالية.
نصيحة أبو عمر: هذه هي أهم خطوة على الإطلاق. الاتساق هو مفتاح النجاح. إذا قام فريق بتسمية علامته
projectوفريق آخرProjectName، فستفقد كل قيمة هذه العلامات. اتفقوا على أسماء موحدة واجعلوها مكتوبة كسياسة رسمية للشركة.
استقررنا على مجموعة أساسية من العلامات:
project: اسم المشروع أو المنتج (e.g., crm-system, public-api).environment: بيئة العمل (e.g., production, staging, development, testing).team: الفريق المسؤول (e.g., backend, frontend, data-science).owner: الشخص المسؤول عن المورد (e.g., abu.omar@example.com).cost-center: مركز التكلفة المحاسبي (e.g., R&D, Operations, Marketing).
الخطوة الثانية: التطبيق العملي (مع أمثلة)
بعد وضع الاستراتيجية، بدأنا بالتطبيق. أفضل طريقة لضمان الالتزام هي من خلال الأتمتة واستخدام البنية التحتية ككود (Infrastructure as Code – IaC).
بدلاً من إنشاء الموارد يدوياً عبر الواجهة الرسومية، اعتمدنا على أدوات مثل Terraform. هذا يسمح لنا بفرض العلامات المطلوبة في كل مرة يتم فيها إنشاء مورد جديد.
على سبيل المثال، هذا مقطع كود Terraform لإنشاء خادم EC2 مع العلامات الإلزامية:
variable "project" {
description = "Project name"
type = string
}
variable "environment" {
description = "Environment (e.g., prod, staging)"
type = string
}
resource "aws_instance" "web_server" {
ami = "ami-0c55b159cbfafe1f0" # Amazon Linux 2 AMI
instance_type = "t2.micro"
tags = {
Name = "${var.project}-web-${var.environment}"
Project = var.project
Environment = var.environment
Team = "Backend"
Owner = "abu.omar@example.com"
}
}
بهذه الطريقة، لا يمكن لأي مطور إنشاء خادم جديد دون تحديد قيم لعلامتي Project و Environment، مما يضمن أن كل شيء يتم تتبعه من لحظة ولادته.
الخطوة الثالثة: تفعيل العلامات في لوحة تحكم الفواتير
وهنا تكمن خدعة صغيرة يغفل عنها الكثيرون. مجرد إضافة العلامات إلى مواردك لا يكفي! يجب عليك أن تخبر مزود الخدمة السحابية (سواء كان AWS, Azure, أو GCP) بأنك تريد استخدام هذه العلامات لتحليل التكاليف.
في AWS على سبيل المثال، يجب عليك الذهاب إلى خدمة Billing and Cost Management Dashboard، ثم إلى Cost Allocation Tags، وتفعيل العلامات التي أنشأتها (مثل Project, Environment, Team) كعلامات تخصيص تكلفة. قد يستغرق الأمر 24 ساعة حتى تبدأ البيانات بالظهور في تقاريرك، فلا تقلق.
النتائج المذهلة: من الفوضى إلى السيطرة الكاملة
بعد شهر واحد فقط من تطبيق هذه الاستراتيجية، كان اجتماع الفاتورة الشهرية مختلفاً تماماً. بدلاً من رقم واحد غامض، كان لدينا الآن رسوم بيانية وتقارير مفصلة:
- تقرير التكلفة حسب المشروع: أصبحنا نعرف بالضبط كم يكلفنا كل مشروع، مما ساعدنا في تسعير خدماتنا بشكل أفضل.
- تقرير التكلفة حسب البيئة: اكتشفنا أن بيئة Staging تستهلك 30% من الفاتورة! قمنا على الفور بوضع سياسات لإغلاقها تلقائياً خارج ساعات العمل، مما وفر آلاف الدولارات.
- تحديد الموارد اليتيمة: أي مورد لا يحمل علامة
ownerأوprojectكان يظهر في تقرير خاص، مما سهل علينا تعقبه وحذفه إن كان غير ضروري. - تمكين الفرق: أصبح كل فريق مسؤولاً عن تكاليفه. تحولت المحادثة من “لماذا الفاتورة مرتفعة؟” إلى “فريق الـ AI، كيف يمكننا تحسين تكلفة نماذجكم بنسبة 10% هذا الشهر؟”.
لقد تحولنا من رد الفعل إلى الفعل الاستباقي. أصبحنا ندير تكاليفنا بوعي وثقة، بدلاً من أن تكون هي من تديرنا.
نصائح أبو عمر الذهبية لإدارة التكاليف السحابية
من خلال هذه التجربة وغيرها، تعلمت بعض الدروس التي أود أن أشاركها معكم:
- ابدأ بسيطاً ولكن ابدأ الآن: لا تنتظر لوضع استراتيجية مثالية. ابدأ بعلامتين أو ثلاث علامات أساسية (مثل Project و Environment) وطبقها فوراً.
- الأتمتة هي صديقك الوفي: لا تعتمد على الذاكرة البشرية. استخدم سياسات (Policies) وأدوات IaC لفرض إضافة العلامات ومنع إنشاء أي موارد “مجهولة الهوية”.
- اجعلها ثقافة فريق: إدارة التكاليف ليست وظيفة شخص واحد أو قسم واحد. إنها مسؤولية الجميع. قم بتدريب الفرق على كيفية قراءة تقارير التكلفة الخاصة بهم وشجعهم على تحسينها.
- راجع بانتظام: العلامات ليست شيئاً تضعه وتنساه. قم بمراجعة تقارير التكلفة أسبوعياً أو شهرياً، وابحث عن الأنماط الغريبة أو الفرص المتاحة للتوفير.
الخلاصة: لا تدع الفاتورة السحابية تديرك، بل قم أنت بإدارتها
في عالم الحوسبة السحابية، من السهل جداً أن تفقد السيطرة على الإنفاق. لكن بأدوات بسيطة ومنطقية مثل “علامات تخصيص التكلفة”، يمكنك تحويل الفوضى إلى نظام، والغموض إلى وضوح. لقد كانت هذه العلامات بمثابة الكشاف الذي أنار لنا الطريق في نفق التكاليف المظلم.
فيا صديقي المطور والمهندس، لا تكن ضحية للفاتورة الشهرية. كن سيدها. ابدأ اليوم، ضع أول “تاغ”، وسترى كيف أن خطوة صغيرة ومنظمة يمكن أن تنقذ شركتك من جحيم الإنفاق المجهول. شغل مرتب، أليس كذلك؟ 😉