تحديد الحجم المناسب وCompute Optimizer
استخدم توصيات AWS Compute Optimizer لتقليل أحجام مثيلات EC2 ووظائف Lambda ووحدات EBS التي تتجاوز احتياجاتها، بهدف خفض التكاليف
تحديد الحجم المناسب وCompute Optimizer درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
مشكلة الإفراط في تخصيص الموارد
من أكثر الأخطاء شيوعًا وتكلفةً في هندسة السحابة الإفراط في تخصيص الموارد — أي تخصيص موارد تفوق ما يحتاج إليه workload فعليًا. غالبًا ما تفرط فرق تكنولوجيا المعلومات في تخصيص الموارد بسبب عادات البيئات المحلية (شراء سعة تكفي لأقصى حمل)، أو الخوف من تراجع الأداء، أو عدم مراجعة قرارات تحديد الحجم الأولية أصلًا. في AWS، تهدر مثيلات EC2 ووحدات تخزين EBS ووظائف Lambda ذات الموارد الزائدة المال في كل دقيقة تعمل فيها. وتحديد الحجم المناسب هو العملية المنهجية لاكتشاف هذا الهدر والتخلص منه.
# Common over-provisioning symptoms:
# EC2: average CPU < 10%, memory < 20%
# RDS: storage auto-grow never triggered
# Lambda: allocated memory rarely exceeds 40%
# EBS: provisioned IOPS consistently unused
# Cost impact example:
# Over-provisioned r5.8xlarge at $1.92/hr: $1,382/month
# Correct size r5.xlarge at $0.252/hr: $181/month
# Savings: $1,201/month per instanceنظرة عامة على AWS Compute Optimizer
يحلّل AWS Compute Optimizer مقاييس الاستخدام السابقة من CloudWatch، ويستخدم تعلّم الآلة للتوصية بموارد الحوسبة المثلى في AWS. وهو يغطي مثيلات EC2 وEC2 Auto Scaling Groups ووحدات تخزين EBS ووظائف Lambda وAmazon ECS on Fargate. يتطلب Compute Optimizer سجلًا للمقاييس لمدة 30 يومًا على الأقل لإنشاء توصيات موثوقة. ويمكن تفعيله مجانًا، كما يقدم توصيات تتضمن التوفير الشهري المقدّر وتقييمًا لمخاطر التغيير.
# Opt in to Compute Optimizer
aws compute-optimizer update-enrollment-status \
--status Active
# Get EC2 recommendations
aws compute-optimizer get-ec2-instance-recommendations \
--query 'instanceRecommendations[].{Instance:currentInstanceType,Recommended:recommendationOptions[0].instanceType,Savings:recommendationOptions[0].estimatedMonthlySavings.value,Risk:recommendationOptions[0].performanceRisk}'
# Get Lambda recommendations
aws compute-optimizer get-lambda-function-recommendationsتحديد حجم EC2 المناسب باستخدام Compute Optimizer
يحلّل Compute Optimizer استخدام وحدة المعالجة المركزية في EC2، واستخدام الذاكرة (عبر CloudWatch agent)، وإنتاجية الشبكة، وعمليات الإدخال والإخراج في الثانية (IOPS) لوحدات EBS خلال الأيام الثلاثة أو الأربعة عشر الماضية أو أكثر من 30 يومًا. ثم يوصي بإحدى أربع نتائج: Optimized (الحجم الحالي مناسب)، أو Over-provisioned (يمكن تصغير الحجم)، أو Under-provisioned (ينبغي تكبير الحجم)، أو Not optimized (البيانات غير كافية). راجعوا دائمًا مخاطر الأداء — إذ يعيّن Compute Optimizer مستوى مخاطرة VeryLow, Low, Medium, High لكل توصية.
# EC2 recommendation findings:
# Finding: OVER_PROVISIONED
# CurrentInstanceType: m5.4xlarge
# RecommendedInstanceType: m5.xlarge
# CPU utilisation: P99 = 22%, P50 = 4%
# Memory utilisation: P99 = 18%, P50 = 8%
# EstimatedMonthlySavings: $380
# PerformanceRisk: VeryLow
# Always check:
# - Does current instance have burstable credits? (T3)
# - Are there workload spikes not captured in averages?
# - Is there seasonality to consider?تحديد حجم Lambda المناسب
تُحاسَب وظائف Lambda لكل مللي ثانية من وقت التنفيذ مضروبةً في الذاكرة المخصصة. فتخصيص ذاكرة تفوق الحاجة يهدر المال، لكن الذاكرة الأكبر تعني أيضًا وحدة معالجة مركزية أقوى — لذلك يكون التوازن المناسب عند إعداد الذاكرة الذي يقلل التكلفة لكل استدعاء إلى أدنى حد. يحلل Compute Optimizer مدة استدعاءات Lambda ومعدل الأخطاء ومقاييس انتهاء المهلة للتوصية بإعداد الذاكرة الأمثل. ويمكن لأداة Lambda Power Tuning مفتوحة المصدر أيضًا استدعاء وظيفتكم بإعدادات ذاكرة مختلفة للعثور تجريبيًا على التهيئة الأقل تكلفة.
# Compute Optimizer Lambda recommendations
aws compute-optimizer get-lambda-function-recommendations \
--function-arns arn:aws:lambda:us-east-1:123:function:my-function
# Response shows:
# currentMemorySize: 1024 MB
# recommendedMemorySize: 256 MB
# utilizationMetrics:
# - type: MEMORY_MAXIMUM, value: 89 (MB)
# estimatedMonthlySavings: $45
# 89 MB actual vs 1024 MB allocated = 935 MB wastedتحديد حجم وحدات EBS المناسب
غالبًا ما تكون وحدات EBS مخصصة بسعة زائدة من حيث الحجم (مساحة قرص غير مستخدمة) ومن حيث IOPS (عمليات إدخال وإخراج مخصصة لا تُستهلك مطلقًا). يحلل Compute Optimizer مقاييس VolumeReadOps, VolumeWriteOps, VolumeReadBytes, VolumeWriteBytes. ومن التوصيات الشائعة الانتقال من gp2 إلى gp3 (الذي يفصل بين الحجم وIOPS) — إذ يمكنكم تحديد IOPS المناسب بشكل مستقل، مع توفير يبلغ غالبًا 20%. حدّدوا أيضًا وحدات EBS غير المرفقة (أي المثيلات التي أُنهيت وبقيت وحداتها) ثم أنشئو لها snapshots أو احذفوها.
# Get EBS volume recommendations
aws compute-optimizer get-ebs-volume-recommendations \
--volume-arns arn:aws:ec2:us-east-1:123:volume/vol-12345
# Common finding: gp2 -> gp3 migration
# gp2: 500 GB = 500 GB * $0.10 = $50/month
# IOPS: 1,500 (3 IOPS/GB, not configurable)
# gp3: 500 GB = $40/month + 3,000 IOPS free
# Save $10/month plus get MORE baseline IOPS
# Find unattached EBS volumes
aws ec2 describe-volumes \
--filters Name=status,Values=available \
--query 'Volumes[].{VolumeId:VolumeId,Size:Size,Created:CreateTime}'توصيات Auto Scaling Group
يحلّل Compute Optimizer استخدام ASG عبر جميع مثيلات المجموعة، ويوصي بتغييرات في launch template لنوع المثيل. فإذا كانت جميع المثيلات في ASG مخصصة بموارد زائدة باستمرار، فإن الانتقال إلى نوع مثيل أصغر يقلل التكلفة على نطاق واسع. على سبيل المثال، إذا كان ASG يستخدم في المتوسط 10 مثيلات من m5.large، فإن الانتقال إلى m5.medium يوفر 50% لكل مثيل. ويوصي Compute Optimizer أيضًا بـ مثيلات تستند إلى Graviton عندما يكون برنامجكم متوافقًا معها، مما يوفر تحسينًا في الأداء وخفضًا في التكلفة.
# Get ASG recommendations
aws compute-optimizer get-auto-scaling-group-recommendations \
--auto-scaling-group-arns arn:aws:autoscaling:us-east-1:123:autoScalingGroup:abc:autoScalingGroupName/my-asg
# If recommendation is to switch to Graviton:
# Current: m5.large (x86, $0.096/hr)
# Recommended: m6g.large (Graviton2, $0.077/hr)
# Savings: 20% per instance
# ASG at 10 instances average = $220/month savingsTrusted Advisor للحصول على رؤى التكلفة
يُعد AWS Trusted Advisor أداة أخرى توفر رؤى لتحسين التكلفة إلى جانب فحوصات الأمان والأداء وتحمل الأعطال وحدود الخدمات. ومن أهم فحوصات التكلفة: Low Utilization EC2 Instances (استخدام وحدة المعالجة المركزية أقل من 10% لمدة 4 أيام أو أكثر)، وUnassociated Elastic IP Addresses (تُفرض عليها رسوم عندما لا تكون مرفقة)، وUnderutilized EBS Volumes، وIdle Load Balancers (لا توجد أهداف سليمة)، وUnused Reserved Instances. الفحوصات الأساسية في Trusted Advisor مجانية، أما المجموعة الكاملة فتتطلب Business Support أو Enterprise Support.
# Trusted Advisor: get cost optimisation checks
aws support describe-trusted-advisor-checks \
--language en \
--query 'checks[?category==`cost_optimizing`].{Name:name,Id:id}'
# Key checks:
# Qkj5MU5fNp: Low utilisation EC2 instances
# Z4AUBRNSmh: Unassociated Elastic IP addresses
# DAvU99Dc4C: Underutilized EBS volumes
# hjLMh88uM8: Idle load balancers
# 1e93e4c0b5: Unused reserved instancesترقية أجيال المثيلات
تصدر AWS بانتظام أجيالًا جديدة وأكثر كفاءة من مثيلات EC2، توفر أداءً أفضل بتكلفة أقل أو مساوية. ويمكن أن يوفر الانتقال من الجيل الخامس (m5 وc5 وr5) إلى الجيل السابع (m7g وc7g وr7g) أداء حوسبة أفضل بنسبة 40% بتكلفة مماثلة أو أقل. ويحدد Compute Optimizer تحديدًا فرص الترقية إلى الأجيال الأحدث، بما في ذلك المثيلات المستندة إلى Graviton. وغالبًا ما تكون ترقية المثيل أبسط إجراء لتحديد الحجم المناسب — فالإعداد نفسه، والعتاد أحدث، والأداء أفضل، والتكلفة أقل.
# EC2 instance generation comparison (same price tier):
# m5.large: 2 vCPU, 8 GB, $0.096/hr (2019)
# m6i.large: 2 vCPU, 8 GB, $0.096/hr (2021, ~10% faster)
# m7i.large: 2 vCPU, 8 GB, $0.1008/hr (2023, ~15% faster)
# m7g.large: 2 vCPU, 8 GB, $0.0808/hr (2023, Graviton3, cheapest)
# Upgrade path for Linux workloads:
# m5 -> m7g (Graviton): best price/performance
# m5 -> m7i: same architecture, no code changesتحديد حجم مثيلات RDS المناسب
تُعد مثيلات RDS مكلفة وغالبًا ما تكون مخصصة بموارد زائدة. استخدموا مقاييس CloudWatch لتقييم استخدام RDS: CPUUtilization وFreeableMemory وReadIOPS وWriteIOPS. فإذا ظل استخدام CPU أقل من 20% وبقيت الذاكرة المتاحة مرتفعة باستمرار، ففكّروا في تصغير الحجم. وبالنسبة إلى قواعد بيانات الإنتاج التي تستخدم Multi-AZ، يتضاعف التوفير الناتج عن تحديد الحجم المناسب، لأن التغيير يشمل المثيل الأساسي والاحتياطي. فكّروا أيضًا في الانتقال من RDS MySQL/PostgreSQL إلى Aurora، إذ يوفر غالبًا أداءً أفضل بتكلفة مماثلة، ويكون أكثر كفاءة من حيث التكلفة على نطاق واسع.
# Monitor RDS utilisation for right-sizing
aws cloudwatch get-metric-statistics \
--namespace AWS/RDS \
--metric-name CPUUtilization \
--dimensions Name=DBInstanceIdentifier,Value=mydb \
--start-time 2026-05-21T00:00:00Z \
--end-time 2026-06-21T00:00:00Z \
--period 86400 \
--statistics Maximum Average
# If 30-day P99 CPU < 30%, consider downsizing
# If P99 CPU > 80%, consider upsizingتحويل تحديد الحجم المناسب إلى ممارسة تشغيلية
ينبغي أن يكون تحديد الحجم المناسب عملية مستمرة، لا إجراءً يُنفّذ مرة واحدة. حدّدوا وتيرة مراجعة شهرية أو ربع سنوية: استخرجوا توصيات Compute Optimizer، وقيّموا التوصيات الآمنة للتطبيق، ونفّذوا التغييرات خلال نافذة صيانة، ثم قيسوا مقدار التوفير. أتمتوا الإجراءات السهلة: إذ يمكن برمجة تنظيف وحدات EBS غير المرفقة، وتحرير عناوين Elastic IP غير المستخدمة، وإزالة موازنات التحميل الخاملة. أنشئوا لوحة معلومات لتحسين التكلفة في CloudWatch، تتتبع الإنفاق الشهري حسب الخدمة وتبرز الزيادات غير المعتادة.
# Script to release unassociated Elastic IPs
aws ec2 describe-addresses \
--query 'Addresses[?!AssociationId].AllocationId' \
--output text | xargs -I {} \
aws ec2 release-address --allocation-id {}
# Script to delete unattached EBS volumes (careful!)
# First check if snapshots exist before deleting
aws ec2 describe-volumes \
--filters Name=status,Values=available \
--query 'Volumes[].VolumeId' \
--output textتحديد الحجم المناسب مقابل تغييرات البنية
يعالج تحديد الحجم المناسب الإفراط في تخصيص الموارد ضمن البنى الحالية، لكن قد تكون البنية نفسها هي المشكلة أحيانًا. فقد يحتاج مثيل EC2 كبير واحد يشغّل عدة تطبيقات إلى تفكيك معماري (microservices على Fargate)، بدلًا من الاكتفاء بمثيل أصغر. وقد تحتاج قاعدة بيانات monolithic إلى التجزئة أو التخزين المؤقت، بدلًا من تصغير حجم المثيل فقط. تحديد الحجم المناسب هو الخطوة الأولى والأسرع. أما تحسين البنية (serverless والحاويات والتخزين المؤقت) فيوفر توفيرًا أعمق وأكثر استدامة، لكنه يتطلب جهدًا أكبر. وتوصي ركيزة تحسين التكلفة باتباع النهجين معًا.
# Cost optimisation hierarchy:
# Level 1: Right-sizing (quick wins, days)
# - Compute Optimizer recommendations
# - Delete unused resources
# - Elastic IP, EBS cleanup
# Level 2: Purchasing model (weeks)
# - Reserved Instances / Savings Plans
# - Spot for eligible workloads
# Level 3: Architecture (months)
# - Serverless migration
# - Container consolidation
# - Caching layer addition
# - Database optimisationاختبار سريع
اختبروا فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.
مراجعة الدرس
تعلّمتم في هذا الدرس أن AWS Compute Optimizer يستخدم تعلّم الآلة مع مقاييس CloudWatch للتوصية بموارد حوسبة ذات حجم مناسب، وأن تحديد الحجم المناسب ينطبق على EC2 وLambda وEBS وASGs وECS on Fargate، وأن الترقية إلى أجيال أحدث من المثيلات (وخاصة Graviton) توفر تحسينات في التكلفة والأداء معًا. اجعلوا تحديد الحجم المناسب ممارسة دورية، لا إجراءً يُنفّذ مرة واحدة. بعد ذلك سنستكشف نماذج الشراء Reserved Instances وSavings Plans وSpot.
الأسئلة الشائعة
هل درس «تحديد الحجم المناسب وCompute Optimizer» مجاني؟
نعم — نص درس «تحديد الحجم المناسب وCompute Optimizer» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
ماذا ستتعلم في «تحديد الحجم المناسب وCompute Optimizer»؟
استخدم توصيات AWS Compute Optimizer لتقليل أحجام مثيلات EC2 ووظائف Lambda ووحدات EBS التي تتجاوز احتياجاتها، بهدف خفض التكاليف تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟
لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «تحديد الحجم المناسب وCompute Optimizer»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟
نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تحديد الحجم المناسب وCompute Optimizer
- المثيلات المحجوزة وخطط التوفير وSpot
- Cost Explorer والميزانيات وعلامات تخصيص التكلفة
- تحسين تكلفة S3 ونقل البيانات