tgoop.com/the_developer_guide/5504
Last Update:
🔵🟢 يعني إيه Blue-Green Deployment؟
.
.
تعال أقولك على موقف حصل تقريبًا مع كل الناس اللي اشتغلت على مشاريع شغالة في الـ (Production)...
أنت خلصت ميزة جديدة (Feature) أو صلحت مشكلة (Bug Fix)، ومبسوط أوي بالشغل اللي عملته، وداخل تعمل deploy للكود. أول ما تعمل Deploy، تكتشف إن حصلت مشكلة مش متوقعة، والموقع وقع أو المستخدمين اشتكوا من حاجة مخدتش بالك منها.
ساعتها بتكون في لحظة توتر مش طبيعية، وتحاول ترجع الكود القديم بسرعة بأي طريقة.
هنا بقى بييجي دور الـ Blue-Green Deployment علشان يمنع كل الكوارث دي...
———
💡 يعني إيه Blue-Green Deployment؟
الـ Blue-Green Deployment هو أسلوب في نشر التحديثات (Deployment Strategy) بيخليك تنشر التغييرات بتاعتك بشكل آمن وسلس ومن غير downtime.
ببساطة، بدل ما عندك نسخة واحدة شغالة من التطبيق، بتبقى مشغّل نسختين:
- 🟢 النسخة الحالية اللي الناس كلها بتستخدمها دلوقتي اسمها Green
- 🔵 النسخة الجديدة اللي فيها التعديلات والتحديثات اسمها Blue
أنت بتجهّز نسخة الـ Blue، وتعمل عليها كل الاختبارات المطلوبة. ولما تتأكد إن كل حاجة شغالة تمام، بتبدّل الـ Traffic من Green لـ Blue.
يعني المستخدمين بدل ما بيتعاملوا مع النسخة القديمة، بيتحولوا فجأة للنسخة الجديدة من غير ما يحسوا بأي downtime.
———
🤔 ليه الأسلوب ده ممتاز جدًا؟
1- الـ Zero Downtime
مفيش وقت توقف. التحديث بيحصل في الخلفية، وأول ما يكون جاهز، بيتحوّل الـ Traffic بس.
2- الـ Rollback سهل جدًا
لو حصلت مشكلة في النسخة الجديدة، تقدر ترجع المستخدمين تاني للنسخة القديمة بكل سهولة.
3- الاختبار على أرض الواقع
تقدر تجرب النسخة الجديدة على عدد محدود من المستخدمين الأول (canary testing) قبل ما تعمل الـ switch الكامل.
4- مش هتبقى خايف تعمل Deploy. حتى لو فيه خطأ، فيه دايمًا نسخة سليمة تقدر ترجع لها.
———
فيه أكتر من طريقة تطبّق بيها Blue-Green Deployment، على حسب البنية التحتية اللي بتشتغل عليها:
1- لو شغال على Kubernetes، ممكن تستخدم مثلًا:
- الـ Services + Deployments علشان تتحكم في الـ Traffic.
- أدوات زي Argo Rollouts أو Spinnaker
2- لو بتستخدم Cloud Platforms زي AWS أو GCP، فيه أدوات built-in بتساعدك تعمل التبديل ما بين النسخ.
3- ولو شغال بشكل يدوي، ممكن تستخدم load balancer (زي NGINX أو HAProxy) وتغيّر التوجيه منه للنسخة الجديدة وقت ما تكون جاهزة.
———
- لازم النسختين (Blue و Green) يشتغلوا على نفس قاعدة البيانات أو يكون في حل مناسب لمزامنة البيانات. وإلا ممكن تواجه مشاكل في الـ schema أو البيانات نفسها.
- لازم تتأكد إن الـ Blue نسخة طبق الأصل من Green + التعديلات الجديدة، علشان تضمن إن rollback هيشتغل كويس لو اضطررت ترجّع.
———
👀 هل لازم دايمًا تستخدم Blue-Green Deployment؟
لا مش دايمًا. الأسلوب ده مفيد جدًا لو:
- التطبيق بتاعك بيشتغل لعدد كبير من المستخدمين.
- التحديثات اللي بتعملها حساسة وممكن تعمل مشاكل كبيرة.
لكن لو مشروع صغير أو مش فارق معاك downtime بسيط، ممكن تستخدم أساليب أبسط زي Rolling Deployment.
———
وفقكم الله لكل خير 🌿
BY DevGuide 🇵🇸
Share with your friend now:
tgoop.com/the_developer_guide/5504
