ترى Grab أن التبني المتزايد لمساعدات الذكاء الاصطناعي في كتابة الأكواد قد سرّع من عملية التطوير وزاد من حجم تغييرات الأكواد في كل إصدار، مما يجلب المزيد من فرص العيوب والأعطال. ولمعالجة هذه التحديات، طبقت الشركة استراتيجية دفاع متعددة الطبقات لمنع الأعطال واكتشافها واحتوائها طوال دورة حياة التطوير والإصدار.
تلاحظ Grab أن "الذكاء الاصطناعي يسرّع من وتيرة كتابة الأكواد؛ والدفاع متعدد الطبقات هو ما يجعل هذه السرعة آمنة". على نطاق Grab، يمثل تسرب الأعطال إلى بيئة الإنتاج خطرًا مستمرًا. فكل أسبوع، يتم دمج عدد كبير من طلبات الدمج عبر العديد من فرق المنتجات، ويتم شحن العديد من الميزات خلف علامات تُفعّل بشكل مستقل عن الإصدارات. وأي من هذه التغييرات يمكن أن يؤدي إلى عطل.
بالإضافة إلى تدهور تجربة المستخدم، يقلل عطل تطبيق الهاتف المحمول من معدلات الجلسات الخالية من الأعطال، وبالتالي يقلل من تصنيف التطبيق في Google Play. كما أنه يزيد التكلفة لأن جميع المستخدمين لا يقومون بتمكين التحديثات التلقائية، مما يعني أن "عطل التطبيق الذي يتم شحنه يبقى على أجهزة المستخدمين" لفترة أطول. علاوة على ذلك، لا تأتي جميع الأعطال مع تتبع مكدس نظيف ومُرمّز، مما يعني أن "إيجاد السبب يعني مقارنة الجداول الزمنية للإصدارات، وعمليات طرح الميزات، وبيانات الجلسات الوصفية".
تتبع استراتيجية Grab الدفاعية متعددة الطبقات استراتيجية التحول إلى اليسار، والتي تهدف إلى اكتشاف الأعطال في أقرب وقت ممكن من خلال سلسلة من الضمانات على طول مراحل دورة التطوير: من ما قبل الدمج إلى ما قبل الإنتاج، والتحكم في الإصدار، والاستجابة بعد الإصدار.
كيف تمنع Grab الأعطال قبل الإنتاج؟
خلال مرحلة ما قبل الدمج إلى ما قبل الإنتاج، يكون الهدف هو الوقاية، والتي تصفها Grab بأنها "خط دفاعها الأساسي". لتحقيق ذلك، يستخدم مهندسو Grab محللات الكود الثابت مثل Android Lint و SwiftLint لاكتشاف المشكلات قبل دمج الكود عبر قواعد Lint الخاصة بالمنصة، والقائمة على المجتمع، والمخصصة؛ والاختبارات الآلية واليدوية، بما في ذلك اختبارات الوحدات، واختبارات واجهة المستخدم، وفحوصات ضمان الجودة (QA)؛ وبرنامج الوصول المبكر لـ Grab (GEA)، وهو بوابة ما قبل الإنتاج حيث يتم توزيع الإصدارات المبكرة على المستخدمين الداخليين ومراقبتها بنشاط بحثًا عن الأعطال. ترى Grab أن "عطل يراه عدد قليل من المستخدمين الداخليين فقط في برنامج الوصول المبكر لـ Grab (GEA) سيترجم، على نطاق الإنتاج، إلى ارتفاع كبير في معدل الأعطال، وعبء دعم إضافي، وربما إصلاح عاجل. إن اكتشاف هذه الأعطال قبل وصولها إلى مستخدمي الإنتاج يجعل GEA أحد أهم بوابات الاستقرار لدينا."
كيف تتحكم Grab في الأعطال أثناء الطرح وبعده؟
خلال مرحلة الإصدار، تستخدم Grab الطرح المرحلي والميزات القابلة للتحكم (feature flags) للتحكم في تعرض الإنتاج للأعطال. يتيح الطرح المرحلي لإصدار جديد من التطبيق الوصول إلى نسبة صغيرة فقط من المستخدمين في البداية، حتى يتمكن المهندسون من مراقبة أعطاله وربما إيقاف الطرح مؤقتًا إذا تم اكتشاف معدل أعطال غير طبيعي. تتيح الميزات القابلة للتحكم، بدورها، للفرق تنشيط الميزات تدريجيًا مع مراقبة تأثيرها على معدلات الأعطال. إذا تسببت ميزة ما في تجاوز معدلات الأعطال للحدود المحددة مسبقًا، فيمكن تعطيلها على الفور دون الحاجة إلى إصدار جديد.
خلال مرحلة ما بعد الإصدار، تركز Grab على الاستجابة السريعة للحوادث باستخدام آليات لاكتشاف أعطال الإنتاج والتحقيق فيها واحتوائها. وتشمل هذه المراقبة في الوقت الفعلي للأعطال باستخدام Firebase Crashlytics و BigQuery لتحديد الشذوذ بمجرد بدء تشغيل الإصدار؛ والفرز الآلي والتشخيصات المثرية لتجميع بيانات الأعطال الوصفية وتتبعات المكدس، مما يساعد الفرق على ربط الأعطال بطلبات الدمج المحددة؛ وحلقات التغذية الراجعة وتحليل ما بعد الوفاة لتوسيع قواعد Lint وتغطية الاختبار.
هناك الكثير في نهج Grab الدفاعي متعدد الطبقات لا يمكن تغطيته هنا. تأكد من قراءة المقال الكامل لجميع التفاصيل.
جرّب الأداة: منسق ومتحقق JSON




