Grab؛ دفاع چندلایه در برابر crash با افزایش کد تولیدشده با AI

چرا مهم است

اگر با افزایش حجم تغییرات کد روبه‌رو هستی، تجربه Grab نشان می‌دهد کنترل crash فقط به test پیش از انتشار محدود نیست. در موبایل، نسخه مشکل‌دار ممکن است به‌دلیل غیرفعال بودن به‌روزرسانی خودکار روی دستگاه کاربر باقی بماند.

قبل از خواندن، این‌ها را بدان۵ مفهوم
Shift Left

رویکردی که بررسی و شناسایی مشکل را به مراحل زودتر چرخه توسعه منتقل می‌کند، به‌جای اینکه فقط پس از انتشار انجام شود.

در حال نگارش: Shift Left

static analysis

بررسی کد بدون اجرای آن برای پیدا کردن خطاها یا نقض rule‌های تعیین‌شده.

در حال نگارش: static analysis

feature flag

سازوکاری برای کنترل فعال یا غیرفعال بودن یک قابلیت، مستقل از انتشار نسخه جدید.

در حال نگارش: feature flag

staged rollout

انتشار تدریجی یک نسخه برای بخشی از کاربران و گسترش آن در مراحل بعد، همراه با بررسی وضعیت نسخه.

در حال نگارش: staged rollout

unit test

آزمایشی برای بررسی رفتار یک بخش کوچک و مشخص از برنامه به‌صورت جداگانه.

در حال نگارش: unit test

Grab می‌گوید استفاده گسترده‌تر از دستیارهای کدنویسی AI،؜ سرعت توسعه و حجم تغییرات هر انتشار را افزایش داده و فرصت بیشتری برای بروز خطا و crash ایجاد کرده است. پاسخ این شرکت، دفاعی چندلایه برای پیشگیری، شناسایی و مهار crash در مراحل توسعه و انتشار app موبایل است.

در مقیاس Grab،؜ هر هفته تعداد زیادی merge request از تیم‌های مختلف وارد می‌شود. بسیاری از قابلیت‌ها نیز پشت feature flag قرار دارند و مستقل از انتشار نسخه فعال می‌شوند. به گفته این شرکت، crash علاوه بر آسیب به تجربه کاربر و کاهش نرخ session‌های بدون crash،؜ بر رتبه app در Google Play اثر می‌گذارد. همچنین چون همه کاربران به‌روزرسانی خودکار را فعال نمی‌کنند، نسخه دارای crash ممکن است مدت بیشتری روی دستگاه بماند.

لایه نخست بر رویکرد Shift Left تکیه دارد: پیدا کردن مشکل در زودترین مرحله ممکن. پیش از merge و ورود به production،؜ تیم‌ها از Android Lint و SwiftLint با rule‌های مخصوص پلتفرم، جامعه توسعه‌دهندگان و rule‌های سفارشی استفاده می‌کنند. unit test،؜ UI test و بررسی‌های دستی QA نیز بخشی از این مرحله‌اند. در Grab Early Access یا GEA،؜ build‌های اولیه بین کاربران داخلی توزیع و از نظر crash پایش می‌شوند. Grab تأکید می‌کند مشکلی که فقط چند کاربر داخلی می‌بینند، در مقیاس production می‌تواند به جهش نرخ crash و حتی نیاز به اصلاح فوری منجر شود.

هنگام انتشار، staged rollout نسخه جدید را ابتدا فقط به درصد کوچکی از کاربران می‌رساند. اگر نرخ غیرعادی crash دیده شود، تیم می‌تواند ادامه انتشار را متوقف کند. feature flag نیز امکان فعال‌سازی تدریجی قابلیت‌ها را فراهم می‌کند؛ اگر نرخ crash از آستانه تعیین‌شده عبور کند، قابلیت بدون انتشار نسخه تازه غیرفعال می‌شود.

پس از انتشار، Firebase Crashlytics و BigQuery برای پایش لحظه‌ای و شناسایی وضعیت غیرعادی به کار می‌روند. دسته‌بندی خودکار و اطلاعات تشخیصی تکمیلی، metadata و stack trace مربوط به crash را گردآوری می‌کنند تا تیم‌ها مشکل را به PR مشخص مرتبط کنند. در نهایت، بازخوردها و تحلیل پس از رخداد برای گسترش lint rule‌ها و پوشش test به مراحل پیشین برمی‌گردند.

نکته کلیدی

کنترل نسخه و کنترل فعال‌سازی قابلیت را جدا در نظر بگیر: staged rollout انتشار نسخه را تدریجی می‌کند و feature flag فعال‌سازی قابلیت را. در الگوی Grab،؜ نتیجه بررسی crash هم به lint rule‌ها و پوشش test برمی‌گردد.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۱۰)