انتقل إلى المحتوى الرئيسي

تحسين عملي لتكاليف AWS

مقدمة​

تحسين تكاليف AWS ليس حدثًا لمرة واحدة ولكنه عملية مستمرة. يقدم هذا الفصل تقنيات عملية وفورية لتقليل فواتير AWS الخاصة بك.

7 روافع للتحسين​

┌─────────────────────────────────────────────────────────────────┐
│ 7 روافع للتحسين AWS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. RIGHTSIZING ضبط حجم الموارد │
│ 2. SCHEDULING إيقاف عند عدم الاستخدام │
│ 3. RESERVED/SAVINGS الالتزام للحصول على خصومات │
│ 4. SPOT INSTANCES استخدام السعة الفائضة │
│ 5. STORAGE TIERING النقل إلى تخزين أرخص │
│ 6. DATA TRANSFER تحسين التحويلات │
│ 7. ARCHITECTURE التصميم من أجل التكلفة │
│ │
└─────────────────────────────────────────────────────────────────┘

1. Rightsizing (الضبط)​

تحديد الموارد ذات الحجم الزائد​

┌─────────────────────────────────────────────────────────────────┐
│ تحليل RIGHTSIZING │
├─────────────────────────────────────────────────────────────────┤
│ │
│ المثيل الحالي : m5.xlarge (4 vCPU, 16 GB RAM) │
│ التكلفة : $140/شهر │
│ │
│ الاستخدام الملاحظ (30 يومًا) : │
│ ┌────────────────────────────────────────────┐ │
│ │ CPU ████░░░░░░░░░░░░░░░░ 20% متوسط │ │
│ │ RAM ██████░░░░░░░░░░░░░░ 30% متوسط │ │
│ └────────────────────────────────────────────┘ │
│ │
│ التوصية : t3.medium (2 vCPU, 4 GB RAM) │
│ التكلفة الجديدة : $30/شهر │
│ التوفير : $110/شهر (78%) │
│ │
└─────────────────────────────────────────────────────────────────┘

المقاييس التي يجب مراقبتها​

الموردالمقياسعتبة الحجم الزائد
EC2متوسط CPU< 40% على مدى 14 يومًا
EC2الذاكرة< 40% على مدى 14 يومًا
RDSمتوسط CPU< 40% على مدى 14 يومًا
RDSالاتصالات< 20% من الحد الأقصى
Lambdaالذاكرة المستخدمة< 50% المخصصة

الإجراءات الموصى بها​

حجم زائد (CPU < 40%)     → تقليل الحجم
حجم مناسب (40-80%) → الاحتفاظ
حجم ناقص (> 80%) → زيادة أو Auto Scale

2. Scheduling (الجدولة)​

البيئات غير الإنتاجية​

┌─────────────────────────────────────────────────────────────────┐
│ SCHEDULING NON-PROD │
├─────────────────────────────────────────────────────────────────┤
│ │
│ بيئة DEV/TEST : │
│ │
│ ساعات العمل : 8ص - 6م (10 ساعات/يوم) │
│ أيام العمل : الإثنين - الجمعة (5 أيام) │
│ │
│ ساعات التشغيل : 10س × 5ي = 50س/أسبوع │
│ ساعات الإيقاف : 168س - 50س = 118س/أسبوع │
│ │
│ التوفير المحتمل : 70% ! │
│ │
│ التنفيذ : │
│ • AWS Instance Scheduler │
│ • Lambda + CloudWatch Events │
│ • Tags : Schedule=office-hours │
│ │
└─────────────────────────────────────────────────────────────────┘

سكربت جدولة بسيط​

# Lambda لإيقاف مثيلات DEV في المساء
import boto3

def lambda_handler(event, context):
ec2 = boto3.client('ec2')

# العثور على المثيلات مع tag Environment=dev
instances = ec2.describe_instances(
Filters=[
{'Name': 'tag:Environment', 'Values': ['dev', 'test']},
{'Name': 'instance-state-name', 'Values': ['running']}
]
)

instance_ids = []
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
instance_ids.append(instance['InstanceId'])

if instance_ids:
ec2.stop_instances(InstanceIds=instance_ids)
print(f"تم إيقاف {len(instance_ids)} مثيلات")

3. Reserved Instances وSavings Plans​

مقارنة الخيارات​

┌─────────────────────────────────────────────────────────────────┐
│ خيارات الالتزام │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ON-DEMAND (بدون التزام) │
│ └── سعر كامل، مرونة قصوى │
│ مثالي لـ : الأحمال غير المتوقعة │
│ │
│ RESERVED INSTANCES (1 أو 3 سنوات) │
│ └── حتى -72% مقابل On-Demand │
│ مرتبط بـ : نوع المثيل + المنطقة │
│ مثالي لـ : الأحمال المستقرة والمتوقعة │
│ │
│ SAVINGS PLANS (1 أو 3 سنوات) │
│ └── حتى -72% مقابل On-Demand │
│ أكثر مرونة من RI │
│ Compute SP : EC2, Fargate, Lambda │
│ EC2 SP : عائلة المثيل في منطقة واحدة │
│ │
│ SPOT INSTANCES │
│ └── حتى -90% مقابل On-Demand │
│ يمكن أن يتم إيقافها بإشعار 2 دقيقة │
│ مثالي لـ : الدفعات، CI/CD، الأحمال المتسامحة │
│ │
└─────────────────────────────────────────────────────────────────┘

استراتيجية التغطية​

┌─────────────────────────────────────────────────────────────────┐
│ استراتيجية التغطية │
├─────────────────────────────────────────────────────────────────┤
│ │
│ السعة الإجمالية المطلوبة : 100 وحدة │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │████████████████████████████████████████░░░░░░░░░░░░░░░░░░░│ │
│ │ Reserved/Savings (60%) │ On-Demand │ Spot │ │
│ │ -60% │ (20%) │ (20%) │ │
│ │ قاعدة مستقرة │ متغير │ -90% │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ التوفير الإجمالي : ~50% │
│ │
└─────────────────────────────────────────────────────────────────┘

4. تحسين التخزين​

فئات تخزين S3​

┌─────────────────────────────────────────────────────────────────┐
│ فئات تخزين S3 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ S3 STANDARD $0.023/GB وصول متكرر │
│ ↓ بعد 30 يومًا │
│ S3 INFREQUENT ACCESS $0.0125/GB وصول < 1x/شهر │
│ ↓ بعد 90 يومًا │
│ S3 GLACIER IR $0.004/GB أرشيف، وصول سريع │
│ ↓ بعد 180 يومًا │
│ S3 GLACIER DA $0.00099/GB أرشيف طويل الأمد │
│ │
│ التوفير : حتى 95% مع سياسات دورة الحياة │
│ │
└─────────────────────────────────────────────────────────────────┘

تحسين EBS​

مشاكل شائعة :
• وحدات غير متصلة (يتيمة) → حذف
• لقطات قديمة → سياسة دورة الحياة
• gp2 بدلاً من gp3 → ترحيل (أرخص بنسبة 20%)
• وحدات ذات حجم زائد → تقليل

5. تحسين Lambda​

┌─────────────────────────────────────────────────────────────────┐
│ تحسين LAMBDA │
├─────────────────────────────────────────────────────────────────┤
│ │
│ قبل : 1024 MB، 500ms متوسط │
│ التكلفة : 1M استدعاءات × 0.5s × 1GB = $8.33/شهر │
│ │
│ بعد : 512 MB، 600ms متوسط (CPU أبطأ) │
│ التكلفة : 1M استدعاءات × 0.6s × 0.5GB = $5.00/شهر │
│ │
│ التوفير : 40% │
│ │
│ أو │
│ │
│ بعد : 2048 MB، 200ms متوسط (CPU أسرع) │
│ التكلفة : 1M استدعاءات × 0.2s × 2GB = $6.67/شهر │
│ │
│ التوفير : 20% + أداء أفضل │
│ │
│ → اختبر تكوينات مختلفة! │
│ │
└─────────────────────────────────────────────────────────────────┘

6. قائمة تحقق للتحسين السريع​

إجراءات فورية (Quick Wins)​

الإجراءالتوفير المحتملالجهد
حذف الموارد غير المستخدمة10-30%منخفض
إيقاف مثيلات DEV ليلاً/عطلة نهاية الأسبوع70% على DEVمنخفض
حذف وحدات EBS اليتيمةمتغيرمنخفض
حذف اللقطات القديمةمتغيرمنخفض
ترحيل gp2 إلى gp320% على EBSمتوسط

إجراءات متوسطة المدى​

الإجراءالتوفير المحتملالجهد
Rightsizing EC2/RDS20-50%متوسط
Reserved Instances/Savings Plans30-60%متوسط
سياسات دورة حياة S350-90% على التخزينمتوسط
Spot Instances للدفعات60-90%متوسط

إجراءات طويلة المدى​

الإجراءالتوفير المحتملالجهد
بنية serverless30-70%عالي
تحسين متعدد المناطقمتغيرعالي
الحاويات (Fargate)20-40%عالي

أدوات AWS للتحسين​

┌─────────────────────────────────────────────────────────────────┐
│ أدوات AWS FINOPS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ AWS COST EXPLORER │
│ └── تصور التكاليف، الاتجاهات، التوقعات │
│ │
│ AWS BUDGETS │
│ └── تنبيهات عند تجاوز الميزانية │
│ │
│ AWS TRUSTED ADVISOR │
│ └── توصيات تلقائية │
│ │
│ AWS COMPUTE OPTIMIZER │
│ └── Rightsizing EC2, Lambda, EBS │
│ │
│ AWS COST ANOMALY DETECTION │
│ └── اكتشاف تلقائي للشذوذات │
│ │
│ SAVINGS PLANS RECOMMENDATIONS │
│ └── توصيات الالتزام │
│ │
└─────────────────────────────────────────────────────────────────┘

تمرين عملي​

سيناريو : تحسين هذه الفاتورة​

الفاتورة الشهرية الحالية : $5,000

التوزيع :
• EC2 (10 مثيلات m5.xlarge 24/7) : $1,400
• RDS (db.r5.large Multi-AZ) : $400
• EBS (500 GB gp2) : $50
• S3 (10 TB Standard) : $230
• نقل البيانات (500 GB) : $45
• Lambda (50M استدعاءات) : $100
• أخرى : $2,775

الملاحظات :
• 5 مثيلات EC2 هي لـ DEV/TEST
• متوسط CPU EC2 PROD : 35%
• 3 TB من بيانات S3 عمرها > 1 سنة
• 100 GB EBS غير متصلة
عرض التوصيات

التحسينات الموصى بها :

  1. جدولة DEV/TEST : 5 مثيلات × 70% OFF = -$490/شهر

  2. Rightsizing PROD : m5.xlarge → m5.large = -$350/شهر

  3. Reserved Instances PROD : 5 مثيلات 1 سنة = -$280/شهر

  4. EBS اليتيمة : حذف 100 GB = -$10/شهر

  5. gp2 → gp3 : 500 GB = -$10/شهر

  6. S3 Lifecycle : 3 TB إلى Glacier = -$60/شهر

الإجمالي الموفر : ~$1,200/شهر (24%)

الفاتورة الجديدة : ~$3,800/شهر

ملخص​

  • Rightsizing : ضبط الموارد للاستخدام الفعلي
  • Scheduling : إيقاف الموارد غير الإنتاجية
  • الالتزام : Reserved Instances أو Savings Plans للاستقرار
  • Spot : الاستخدام للأحمال المتسامحة مع الانقطاعات
  • التخزين : سياسات دورة الحياة لـ S3، حذف اليتيمة
  • المراقبة : استخدام أدوات AWS (Cost Explorer, Trusted Advisor)

القسم التالي : اختبار التحقق