
x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
كلنا عارفين إن أغلب الشركات عندها ٤ أنواع أساسية من بيئات العمل development environments دول باختصار هما:
بعد كدة لما اكتر من developer يخلص شغله في ال story أو ال release اللي شغالين عليه بيبقي فيه نسخة من الكود تعتبر integrated او متجمع فيهم شغلهم مع بعض و تروح علي ال UAT عشان ال software testers يعلموا شغلهم ب أنواع ال test المختلفة
بعد كدة المفروض يروح علي بيئة pre-prod environment عشان يحاكي البيئة الأصلية بتاعت الكود و يبقي ده اخر مرة هنجرب فيها ال software release قبل ما تطلع برودكشن و بعدين لو عدي من كل الاختبارات يطلع production environment.
كل ده حلو جدا و يارب يعني يكون بيحصل حتي جزء منه
طيب هل الشركات الكبيرة أو FANG مثلا اللي بتطلع كود ده بيكون الحال عندها؟ الاجابة لأ
أول حاجة لان طبيعة و عدد ال releases مختلفة خالص ممكن يطلعوا ملايين اسبوعيا و شهريا. تاني حاجة لانه محتاج ال MTTP أو Mean Time to Production يكون قليل جدا عشان هيخسر فلوس كتير لو مطلعش بالـ feature أو ال fix ده بروكشن (بسرعة).
هنا بيجي دور مبدأين مهمين جدا
أولهم حاجة اسمها Green and Blue Environments
و هي باختصار ان بدل ما يكون عندك production واحدة لأ هو في الحالة دي بيعمل اتنين الزرقا بيكون فيها النسخة الحالية اللي شغال من ال software عادي و التانية ال Green بيكون فيها ال Software بعد التحديث.. طيب ايه الهدف؟ الهدف هنا أنه هتخلي الناس كلها تروح تكلم Green Environment ولو حصل مشكلة؟ هتعمل routing بسرعة لل Blue Environment بمعنى انك قادر تعمل roll back في ثانية واحدة و بدون أي أخطاء.
المبدأ التاني هو Canary Environments أو في ناس بتسميه Weighted Environments و في الحالة دي بيكون برضه عندنا بيئتين العمل online و شغالين لكن بيبدأ يوجه عدد معين من المستخدمين للبيئة اللي فيها التحديث الجديد و النسبة الأخرى بتكون شايفة النسخة القديمة من الكود .. و بعدين لو الدنيا stable و تمام يبدأ يزود شوية في نسبة الجديد و يقلل من القديم و هكذا .. مثال حي على ده هو facebook لأن غالبا في أي تغيير بيعمله مش هتلاقي كل الناس جالها التغيير في نفس الوقت.. بعض الناس بس و البعض التاني مش بيحصل عنده.
في حاجة تالتة برضه تعتبر mix من الاتنين هو A/B Testing
أنه هتلاقي لو في خاصية معينة مثلا الشركة مش حاسة أوي انها هتجيب من الناس أو مش واثقة ده هيكون مناسب في الاخر ولا لأ .. هتلاقيه منزلها ل beta users بشكل تجريبي و بياخد من الناس feedback إذا كانت شغالة ولا لأ.
- Development Environment
- UAT Environment
- Pre Production Environment
- Production Environment
بعد كدة لما اكتر من developer يخلص شغله في ال story أو ال release اللي شغالين عليه بيبقي فيه نسخة من الكود تعتبر integrated او متجمع فيهم شغلهم مع بعض و تروح علي ال UAT عشان ال software testers يعلموا شغلهم ب أنواع ال test المختلفة
بعد كدة المفروض يروح علي بيئة pre-prod environment عشان يحاكي البيئة الأصلية بتاعت الكود و يبقي ده اخر مرة هنجرب فيها ال software release قبل ما تطلع برودكشن و بعدين لو عدي من كل الاختبارات يطلع production environment.
كل ده حلو جدا و يارب يعني يكون بيحصل حتي جزء منه

طيب هل الشركات الكبيرة أو FANG مثلا اللي بتطلع كود ده بيكون الحال عندها؟ الاجابة لأ
أول حاجة لان طبيعة و عدد ال releases مختلفة خالص ممكن يطلعوا ملايين اسبوعيا و شهريا. تاني حاجة لانه محتاج ال MTTP أو Mean Time to Production يكون قليل جدا عشان هيخسر فلوس كتير لو مطلعش بالـ feature أو ال fix ده بروكشن (بسرعة).
هنا بيجي دور مبدأين مهمين جدا
أولهم حاجة اسمها Green and Blue Environments
و هي باختصار ان بدل ما يكون عندك production واحدة لأ هو في الحالة دي بيعمل اتنين الزرقا بيكون فيها النسخة الحالية اللي شغال من ال software عادي و التانية ال Green بيكون فيها ال Software بعد التحديث.. طيب ايه الهدف؟ الهدف هنا أنه هتخلي الناس كلها تروح تكلم Green Environment ولو حصل مشكلة؟ هتعمل routing بسرعة لل Blue Environment بمعنى انك قادر تعمل roll back في ثانية واحدة و بدون أي أخطاء.
المبدأ التاني هو Canary Environments أو في ناس بتسميه Weighted Environments و في الحالة دي بيكون برضه عندنا بيئتين العمل online و شغالين لكن بيبدأ يوجه عدد معين من المستخدمين للبيئة اللي فيها التحديث الجديد و النسبة الأخرى بتكون شايفة النسخة القديمة من الكود .. و بعدين لو الدنيا stable و تمام يبدأ يزود شوية في نسبة الجديد و يقلل من القديم و هكذا .. مثال حي على ده هو facebook لأن غالبا في أي تغيير بيعمله مش هتلاقي كل الناس جالها التغيير في نفس الوقت.. بعض الناس بس و البعض التاني مش بيحصل عنده.
في حاجة تالتة برضه تعتبر mix من الاتنين هو A/B Testing
أنه هتلاقي لو في خاصية معينة مثلا الشركة مش حاسة أوي انها هتجيب من الناس أو مش واثقة ده هيكون مناسب في الاخر ولا لأ .. هتلاقيه منزلها ل beta users بشكل تجريبي و بياخد من الناس feedback إذا كانت شغالة ولا لأ.