بصراحة تامة — إذا كنت تدفع الأسعار الكاملة لـ On-Demand مقابل كل حمل حسابي في AWS، فأنت تترك مبالغ ضخمة على الطاولة. AWS Spot Instances تتيح لك الوصول إلى نفس قدرة الحوسبة بخصومات تصل إلى 90% مقارنةً بأسعار الطلب العادي — وهي، في رأيي الشخصي، أحد أقوى أدوات تحسين التكاليف التي تقدمها AWS اليوم.
في هذا الدليل، ستتعلم كيف تعمل Spot Instances في 2026، ومتى تستخدمها، وكيف تتعامل مع مخاطر الانقطاع بذكاء، مع أمثلة عملية وأكواد جاهزة للتطبيق الفوري. دعنا نبدأ.
ما هي AWS Spot Instances؟
AWS Spot Instances هي نسخ EC2 تعمل على الطاقة الحسابية الفائضة غير المستخدمة في مراكز بيانات Amazon. عندما تكون هناك طاقة حسابية زائدة، تعرضها AWS بأسعار مخفضة جداً كـ "Spot Instances" بدلاً من تركها معطلة. المنطق بسيط ومنطقي جداً.
النقطة الجوهرية هنا — والتي يجب أن تفهمها قبل كل شيء: يمكن لـ AWS استرداد هذه النسخ بإشعار مدته دقيقتان فقط عندما تحتاج إلى الطاقة الحسابية لتلبية طلبات On-Demand الاعتيادية. هذا هو مقابل الخصم الضخم — أنت توفر كثيراً لأن استخدامك مرن وقابل للانقطاع.
منذ إصلاح نظام التسعير عام 2017، أصبحت Spot Instances أكثر استقراراً وقابلية للتنبؤ. وفقاً لبيانات AWS، يقل معدل الانقطاع التاريخي عن 5% لمعظم أنواع النسخ في معظم المناطق — مما يجعلها موثوقة بشكل مفاجئ لكثير من حالات الاستخدام (والحقيقة أن هذا الرقم فاجأني شخصياً عندما بدأت أتعمق في الموضوع).
كيف يعمل نظام تسعير Spot Instances في 2026؟
النموذج الحديث لتسعير Spot يختلف جوهرياً عن نموذج المزايدة القديم — ولحسن الحظ، أصبح أبسط بكثير:
- السعر الحالي (Spot Price): يتغير بناءً على العرض والطلب في كل منطقة وكل نوع نسخة، لكنه أكثر استقراراً مما كان عليه سابقاً
- أنت تدفع السعر الحالي فقط: بغض النظر عن الحد الأقصى الذي حددته
- الانقطاع يعتمد على توفر الطاقة: وليس على حروب الأسعار كما في النموذج القديم
- إشعار مسبق: تحصل على تحذير بدقيقتين قبل أي انقطاع
الخلاصة: نموذج Spot الحديث يمنحك تكاليف منخفضة مع قابلية توقع أفضل وأدوات للتعامل الأنيق مع الانقطاعات.
مقارنة شاملة: Spot مقابل خيارات التسعير الأخرى
لاتخاذ القرار الصحيح، يجب فهم الفروقات بين خيارات التسعير المختلفة في AWS:
| نوع التسعير |
الخصم مقارنةً بـ On-Demand |
الالتزام المطلوب |
خطر الانقطاع |
الأنسب لـ |
| On-Demand |
المرجع (لا خصم) |
لا يوجد |
معدوم |
الأحمال غير المتوقعة |
| Savings Plans |
حتى 66% |
1-3 سنوات |
معدوم |
الأحمال الثابتة والمتوقعة |
| Reserved Instances |
حتى 72% |
1-3 سنوات |
معدوم |
الأحمال الثابتة مع حجز الطاقة |
| Spot Instances |
حتى 90% |
لا يوجد |
منخفض (<5%) |
الأحمال المرنة والمتقطعة |
الاستراتيجية الذكية هي دمج هذه النماذج: On-Demand للقاعدة الثابتة، Savings Plans للأحمال المتوقعة، وSpot لكل شيء مرن. للمزيد حول الاختيار بين Savings Plans وReserved Instances للقاعدة الثابتة، راجع دليلنا المفصل حول AWS Savings Plans مقابل Reserved Instances في 2026.
أفضل حالات الاستخدام لـ Spot Instances
Spot Instances ليست مناسبة لكل حمل عمل. فهم أين تناسب بالضبط هو مفتاح النجاح — وهذا ما يفوّت كثير من المهندسين عند البداية:
حالات الاستخدام المثالية
- معالجة الدفعات (Batch Processing): معالجة الصور، تحويل الفيديو، استخراج البيانات وتحويلها (ETL)
- تحليلات البيانات الكبيرة: Apache Spark، Hadoop، Presto على Amazon EMR
- تدريب نماذج الذكاء الاصطناعي: خاصة التدريب الطويل الذي يدعم التقطيع (checkpointing)
- بنى CI/CD: بناء الكود واختباره في خطوط الإنتاج
- خوادم الويب القابلة للتوسع: في Auto Scaling Groups مع On-Demand baseline
- بيئات التطوير والاختبار: وفر ضخم على البيئات غير الإنتاجية
- عُقد Kubernetes (Worker Nodes): توفير هائل على حُزم EC2 في EKS
- معالجة ملفات الوسائط: ترميز الفيديو، توليد الصور المصغرة
حالات يجب تجنب Spot فيها
- قواعد البيانات بدون آليات تجاوز الفشل (failover) المتقدمة
- الخدمات الحيوية التي تحتاج وقت تشغيل مضمون 100%
- التطبيقات ذات الحالة (stateful) التي لا تحفظ حالتها خارجياً
- المعالجة الآنية الحساسة للتأخير مع متطلبات SLA صارمة
استراتيجيات التعامل مع انقطاعات Spot
السر الحقيقي في استخدام Spot Instances بنجاح هو التصميم للانقطاع من البداية، وليس معاملته كحادث طارئ. إليك الاستراتيجيات الأساسية التي أثبتت فعاليتها:
1. التنويع عبر أنواع النسخ ومناطق التوفر
أكبر خطأ هو الاعتماد على نوع نسخة واحد في منطقة توفر واحدة. الحل الصحيح — وهو ما يفرّق بين المبتدئ والمحترف:
- استخدم 6 أنواع نسخ أو أكثر في نفس طلب Spot Fleet أو Auto Scaling Group
- وزّع عبر جميع Availability Zones المتاحة في منطقتك
- استخدم استراتيجية
price-capacity-optimized التي تختار أفضل تركيبة تلقائياً
2. التعامل الذكي مع إشعار الدقيقتين
قبل أن تسترد AWS النسخة، ترسل إشعاراً مسبقاً بدقيقتين عبر instance metadata. يمكنك استثمار هذا الوقت للحفاظ على البيانات وإيقاف الخدمة بأناقة (دقيقتان تبدو قليلة لكنها كافية تماماً إذا صممت الكود بشكل صحيح):
#!/bin/bash
# Handle Spot Instance interruption notice gracefully
IMDS_TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
TERMINATION=$(curl -s \
-H "X-aws-ec2-metadata-token: $IMDS_TOKEN" \
http://169.254.169.254/latest/meta-data/spot/termination-time 2>/dev/null)
if [ -n "$TERMINATION" ]; then
echo "Spot interruption notice: $TERMINATION"
# Save job checkpoint to S3
aws s3 cp /tmp/job-checkpoint.json s3://my-bucket/checkpoints/$(hostname).json
# Drain load balancer and shutdown gracefully
systemctl stop my-application
echo "Graceful shutdown complete."
fi
3. تفعيل Capacity Rebalancing
عند تفعيل هذه الميزة في Auto Scaling Groups، تقوم AWS بإطلاق نسخة بديلة قبل إيقاف النسخة الأصلية عند اكتشاف احتمال انقطاع وشيك — مما يحافظ على طاقة الخدمة المطلوبة دون انقطاع ملحوظ.
4. تصميم بلا حالة (Stateless Design)
خزّن الحالة دائماً خارج النسخة لضمان عدم فقدان البيانات عند الانقطاع:
- البيانات الدائمة: Amazon S3 أو Amazon EFS
- حالة الجلسة والذاكرة المؤقتة: ElastiCache (Redis)
- قواعد البيانات: Amazon RDS أو Aurora في طبقة منفصلة ثابتة
- قوائم المهام: Amazon SQS لضمان معالجة كل رسالة مرة واحدة على الأقل
البدء العملي: إعداد Spot Instances خطوة بخطوة
الخيار 1: إطلاق Spot Instance منفردة عبر AWS CLI
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type m6g.xlarge \
--instance-market-options MarketType=spot \
--key-name my-key-pair \
--security-group-ids sg-0123456789abcdef0 \
--subnet-id subnet-0123456789abcdef0 \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=spot-worker}]"
الخيار 2: Auto Scaling Group مع مزيج ذكي من Spot وOn-Demand
هذا هو الإعداد المُوصى به للإنتاج — يضمن قاعدة ثابتة من On-Demand مع تعظيم استخدام Spot للباقي. صدقني، هذا الإعداد يغير قواعد اللعبة:
# CloudFormation - Mixed Instances Policy
MixedInstancesPolicy:
InstancesDistribution:
OnDemandBaseCapacity: 2
OnDemandPercentageAboveBaseCapacity: 20
SpotAllocationStrategy: price-capacity-optimized
SpotInstancePools: 4
LaunchTemplate:
LaunchTemplateSpecification:
LaunchTemplateId: !Ref MyLaunchTemplate
Version: !GetAtt MyLaunchTemplate.LatestVersionNumber
Overrides:
- InstanceType: m6g.large
- InstanceType: m6g.xlarge
- InstanceType: m5.large
- InstanceType: m5.xlarge
- InstanceType: c6g.large
- InstanceType: c6g.xlarge
الخيار 3: AWS Batch مع Spot للمعالجة الدُفعية
aws batch create-compute-environment \
--compute-environment-name spot-batch-prod \
--type MANAGED \
--state ENABLED \
--compute-resources type=SPOT,\
allocationStrategy=SPOT_CAPACITY_OPTIMIZED,\
minvCpus=0,maxvCpus=512,\
instanceTypes=m5.xlarge,m6g.xlarge,c5.xlarge,c6g.xlarge,r5.xlarge,\
bidPercentage=70,\
subnets=subnet-aaaa,subnet-bbbb,subnet-cccc,\
securityGroupIds=sg-xxxx
Spot Instances مع Kubernetes على EKS
إذا كنت تشغّل Kubernetes على AWS عبر EKS، فإن Spot Nodes تمثل فرصة توفير هائلة تصل إلى 60-70% على تكلفة Worker Nodes. لمزيد من التفاصيل حول تحسين التكاليف الشاملة في بيئات الحاويات، راجع دليلنا الشامل لتحسين تكاليف Kubernetes في 2026.
إعداد EKS Node Group مع Spot عبر eksctl:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: us-east-1
managedNodeGroups:
- name: system-nodes
instanceType: m6g.large
desiredCapacity: 2
minSize: 2
maxSize: 4
labels:
node-lifecycle: on-demand
- name: spot-nodes
instanceTypes:
- m6g.large
- m6g.xlarge
- m5.large
- m5.xlarge
- c6g.large
- c6g.xlarge
spot: true
desiredCapacity: 5
minSize: 0
maxSize: 50
labels:
node-lifecycle: spot
taints:
- key: spot
value: "true"
effect: NoSchedule
استخدام AWS Spot Instance Advisor لاختيار أفضل النسخ
قبل اختيار أنواع النسخ، استخدم AWS Spot Instance Advisor المتاح في وحدة تحكم AWS. يوفر هذا الأداة:
- معدل الانقطاع التاريخي لكل نوع نسخة في كل منطقة، مصنفاً بوضوح (أقل من 5%، 5-10%، إلخ)
- نسبة التوفير الفعلية الحالية مقارنةً بـ On-Demand
- إمكانية الفلترة حسب المنطقة ونظام التشغيل وحجم النسخة
القاعدة الذهبية: اختر النسخ ذات معدل الانقطاع أقل من 5% لأحمال الإنتاج، ويمكن قبول حتى 10-15% لبيئات الاختبار والمهام الدُفعية المرنة. لا تتجاوز هذه النسب إذا كنت جاداً في الموثوقية.
حساب التوفير المحتمل: مثال حسابي واقعي
لنفترض أن لديك مهمة معالجة بيانات تحتاج 50 نسخة من نوع m6g.2xlarge لمدة 10 ساعات يومياً (22 يوم عمل شهرياً):
| نموذج التسعير |
السعر/ساعة للنسخة |
التكلفة الشهرية |
التوفير السنوي |
| On-Demand (المرجع) |
$0.308 |
$3,388 |
— |
| Spot (خصم متوسط 70%) |
$0.092 |
$1,012 |
$28,512 |
| Spot (خصم متوسط 80%) |
$0.062 |
$682 |
$32,472 |
الأرقام لا تكذب. بدمج Spot مع Savings Plans للأحمال الثابتة في استراتيجية متكاملة، يمكن لمعظم المؤسسات خفض فاتورة EC2 الإجمالية بنسبة 50-65% دون التضحية بالموثوقية — وهو توفير حقيقي يُحدث فرقاً ملموساً في الميزانية السنوية.
أفضل الممارسات للبيئات الإنتاجية
- ابدأ بالبيئات غير الإنتاجية: Dev/Test/Staging أولاً لاكتساب الخبرة والثقة قبل الإنتاج
- نوّع دائماً: 6+ أنواع نسخ كحد أدنى، موزعة عبر جميع Availability Zones
- استخدم price-capacity-optimized: هذه الاستراتيجية أفضل من cheapest-price للبيئات الإنتاجية
- راقب معدلات الانقطاع: استخدم Amazon EventBridge لالتقاط Spot Interruption Notices والتنبيه الفوري
- قاطع البيانات بانتظام: احفظ الحالة إلى S3 كل 5-15 دقيقة للمهام الطويلة
- احتفظ بقدرة On-Demand أساسية: 20-30% من القدرة الكلية كضمان للاستمرارية
- استخدم Launch Templates: بدلاً من Launch Configurations القديمة — توفر مرونة أكبر وتدعم الميزات الحديثة
- راقب التوفير الفعلي شهرياً: تتبع الوفورات عبر AWS Cost Explorer وقارن مع الأهداف المحددة
الأسئلة الشائعة
هل يمكن استخدام AWS Spot Instances لبيئات الإنتاج؟
نعم، ولكن بشروط واضحة. Spot Instances مناسبة للإنتاج عند تصميم تطبيقك لتحمّل الانقطاع — أي حفظ الحالة خارجياً (S3، Redis، RDS)، والتنويع عبر أنواع نسخ متعددة، والحفاظ على قدرة On-Demand أساسية. كثير من شركات التقنية الكبرى تشغّل خدمات إنتاجية على Spot بكفاءة عالية.
ماذا يحدث لبياناتي عند انقطاع Spot Instance؟
عند الانقطاع الافتراضي، يتم إيقاف النسخة وحذف بيانات التخزين المحلي (instance store). لحماية بياناتك: خزّن كل البيانات الدائمة على S3 أو EFS، واستخدم EBS volumes إن احتجت تخزيناً متصلاً، وقاطع حالة المهام الطويلة إلى S3 كل 5-15 دقيقة.
كيف أعرف أي أنواع النسخ أقل انقطاعاً في Spot؟
استخدم AWS Spot Instance Advisor المتاح في وحدة التحكم. يعرض معدل الانقطاع التاريخي لكل نوع نسخة في كل منطقة مصنفاً بوضوح. استهدف الأنواع ذات معدل أقل من 5% للأحمال الحساسة.
هل يمكن تحديد حد أقصى للسعر في Spot Instances؟
نعم، يمكنك تحديد MaxPrice وهو الحد الأقصى للدفع بالساعة. إذا تجاوز سعر Spot الحالي هذا الحد، سيتم إيقاف نسختك. الممارسة الموصى بها هي تحديد MaxPrice مساوياً لسعر On-Demand حتى لا تُوقف نسختك إلا عند الحاجة الحقيقية لـ AWS لاسترداد الطاقة.
ما الفرق بين Spot Fleet وAuto Scaling Group مع Spot؟
Spot Fleet هو الأسلوب القديم لطلب مجموعة متنوعة من Spot Instances. Auto Scaling Group مع MixedInstancesPolicy هو الخيار الحديث الموصى به: يتكامل مع ALB وCloudWatch وCapacity Rebalancing، ويدعم مزج Spot وOn-Demand ذكياً، وأسهل في الإدارة على المدى البعيد.