فاز 14 · درس 53

انتخاب آگاهانه میان پیش‌نمونه، پایلوت و محیط عملیاتی

نوع
مفهومی و ساختنی
زمان
حدود 70 دقیقه
زبان‌ها
Python (stdlib)
سه جایگاه شیشه‌ای آزمایشگاهی مجزا در کنار هم با برچسب‌های مرزبندی، که از ابزار تست ساده به ماژول نهایی مجهز با نشانگرهای ایمنی تبدیل می‌شوند.
فهرست مطالب
  1. اهداف یادگیری
  2. سه پرسش متفاوت
  3. پیش‌نمونه
  4. آزمایشی
  5. عملیاتی
  6. لغزش مرحله‌ای (Stage Drift)
  7. پیاده‌سازی عملی
  8. تمرین‌ها
  9. برای مطالعه‌ی بیشتر
  10. آنچه پیش خود نگه می‌دارید

یکی از اشتباه‌های پرهزینه در تیم‌های نرم‌افزاری، نگاه به پیش‌نمونه (Prototype)، نسخه‌ی آزمایشی (Pilot) و محیط عملیاتی (Production) صرفاً به‌عنوان مراحلی از تمیزی یا صیقل‌خوردگی کد است. در واقعیت، این سه فاز محیط‌های یادگیری متفاوتی هستند که هرکدام برای پاسخ به مجهولی خاص طراحی شده‌اند.

وقتی مرزهای فنی و سازمانی این مراحل شفاف نباشد، پدیده‌ای به نام «لغزش مرحله‌ای» رخ می‌دهد؛ پیش‌نمونه‌ای که صرفاً برای اعتبارسنجی اولیه ساخته شده بود، آرام‌آرام کاربر، داده‌ی حساس و دسترسی اجرایی می‌گیرد، بدون آنکه تعهدات عملیاتی و مالکیت پایش آن مشخص شده باشد.

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

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

اهداف یادگیری

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

سه پرسش متفاوت

مرحله پرسش اصلی
پیش‌نمونه (Prototype) آیا این سازوکار اصلاً می‌تواند شواهد تولید کند؟
آزمایشی (Pilot) آیا با مخاطب محدود و شرایط واقعی، به شکلی امن کار می‌کند؟
عملیاتی (Production) آیا می‌توانیم پایداری و ریسک آن را به‌صورت مداوم در سطح وعده‌داده‌شده مدیریت کنیم؟

یک پیش‌نمونه می‌تواند از نظر فنی کامل باشد و همچنان دورریختنی بماند. یک نسخه‌ی آزمایشی می‌تواند از داده‌های عملیاتی استفاده کند و در عین حال مخاطب و اختیاراتش محدود باشد. فاز عملیاتی زمانی آغاز می‌شود که سازمان مسئولیت ادامه‌دار آن را می‌پذیرد.

پیش‌نمونه

زمانی از پیش‌نمونه استفاده کنید که پاسخ به مجهول نیازی به کاربران واقعی یا داده‌های واقعی ندارد. پیش‌نمونه را این‌گونه نگه دارید:

  • دورریختنی؛
  • ایزوله‌شده؛
  • با رفتاری محدود؛
  • شفاف درباره‌ی پرسش یادگیری مدنظر؛
  • عاری از تعهدات عملیاتی کاذب.

پیش از آنکه سازوکار، شایستگیِ رفتن به مرحله‌ی بعدی را پیدا کند، معماری آن را بهینه‌سازی نکنید.

آزمایشی

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

یک پایلوت نیاز دارد به:

  • مخاطب مشخص؛
  • یک مالک انسانی؛
  • مدت زمان و اختیارات محدود؛
  • قابلیت بازرسی (Audit) و بازگشت به عقب (Rollback)؛
  • آستانه‌های دستاورد و گاردریل (ریل ایمنی)؛
  • معیارهای خروج برای گسترش، بازنگری یا توقف.

عملیاتی

محیط عملیاتی به چیزی بیش از استقرار نیاز دارد:

  • هدف سطح خدمات (SLO)؛
  • نوبت آنکال (On-call) و مالکیت مدیریت حوادث؛
  • بازبینی امنیت و حریم خصوصی؛
  • کنترل‌های هزینه و ظرفیت؛
  • بازگشت به عقب و بازیابی؛
  • پایش مداوم؛
  • مسیری مشخص برای بازنشستگی سیستم.
خیربلهخیربلهنامشخصنیاز به کاربران یا داده‌های واقعی؟نمونه اولیهپیامدها محدود و عملیات آماده است؟پایلوتتولید

لغزش مرحله‌ای (Stage Drift)

کد پیش‌نمونه زمانی خطرناک می‌شود که بدون پذیرش مالکیت، کاربران، داده‌ها یا اختیارات را جذب کند. مرزهای پیش‌نمونه و پایلوت را در پیکربندی، کنترل دسترسی، تله‌متری و مستندات مشخص کنید. یک بنر هشداردهنده اصلاً کافی نیست.

مرحله‌ی سیستم باید از درون خود سیستم قابل‌مشاهده باشد.

پیاده‌سازی عملی

این محیط آزمایشگاهی، مرحله را بر اساس بستر تصمیم‌گیری انتخاب می‌کند، کنترل‌های لازم را بازمی‌گرداند و فایل outputs/stage-decisions.json را می‌نویسد.

python3 code/main.py
python3 -m unittest discover code/tests -v

مثال پایلوت را به پیامد پایین همراه با آمادگی عملیاتی تغییر دهید. توضیح دهید چه شواهد مضاعفی رفتن به محیط عملیاتی را توجیه می‌کند.

تمرین‌ها

  1. سه پروژه‌ی فعلی‌تان را بر اساس مرحله‌ی یادگیری دسته‌بندی کنید، نه وضعیت استقرار آن‌ها.
  2. معیارهای خروج پایلوت را بنویسید؛ طوری که شامل تصمیم برای توقف هم باشد.
  3. یک کنترل فنی اضافه کنید که مانع از دسترسی پیش‌نمونه به داده‌های عملیاتی شود.
  4. اولین مسئولیت عملیاتی‌ای را مشخص کنید که این ساخت را به یک سیستم عملیاتی تبدیل می‌کند.
  5. رسید بازگشت به عقب را برای پایلوتی با اختیارات محدود طراحی کنید.

برای مطالعه‌ی بیشتر

آنچه پیش خود نگه می‌دارید

فایل outputs/stage-decisions.json را نگه دارید. این فایل ثبت می‌کند که چرا هر مرحله توجیه‌پذیر است و کدام کنترل‌ها باید پیش از رفتن به مرحله‌ی بعد وجود داشته باشند.

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسچه چیزی عمدتاً پیش‌نمونه (prototype)، پایلوت (pilot) و محیط عملیاتی (production) را از هم متمایز می‌کند؟
  2. حین درسمرحله پیش‌نمونه (prototype) چه زمانی مناسب است؟
  3. حین درسیک پایلوت باید شامل چه مواردی باشد؟
  4. حین درسیک بیلد مستقرشده چه زمانی به معنای واقعی کلمه تبدیل به «عملیاتی» (production) می‌شود؟
  5. پس از درسانحراف مرحله (stage drift) به چه معناست؟
  6. پس از درسچرا مرزهای بین مراحل باید به‌صورت فنی اعمال شوند؟

سؤالات متداول

تفاوت اصلی پیش‌نمونه و پایلوت در چیست؟

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

لغزش مرحله‌ای (Stage Drift) چیست و چرا خطرناک است؟

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

محیط عملیاتی (Production) به چه الزاماتی فراتر از استقرار کد نیاز دارد؟

پروداکشن مستلزم تعیین اهداف سطح خدمات (SLO)، نوبت آنکال و مدیریت حوادث، بازبینی امنیت و حریم خصوصی، کنترل هزینه و ظرفیت، قابلیت بازیابی و برنامه‌ی مشخص برای بازنشستگی سیستم است.

ما رو توی گوگل بیشتر ببین

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