VI. پردازهها
برنامه را به عنوان یک یا چند پردازهی بدون حالت واسط اجرا کنید
برنامهی کاربردی در محیط اجرا به صورت یک یا چند پردازه بر روی سیستم عامل اجرا میشود.
در سادهترین حالت، کد یک اسکریپت مستقل است، محیط اجرا یک لپتاپ توسعهدهنده با مفسر یا کامپایلر زبان برنامهنویسی نصبشده است، و پردازه از طریق خط فرمان (به عنوان مثال، «python my_script.py») راهاندازی میشود. در سوی دیگر، استقرار در عملیات برای برنامههای پیچیده، ممکن است از بسیاری از انواع فرآیند که در تعدادی از صفر و یا بیشتر پردازهی در حال اجرا تشکیل شده است، استفاده کند.
پردازههای یک برنامهی کاربردی دوازده-سازه، بدون حالت (stateless) و اشتراک هیچ منبعی هستند. هر دادهای که نیاز به ماندگاری دارد، باید در یک سرویس پشتیبان مانا، مانند یک پایگاهداده ذخیره شود.
فضای حافظه یا فایل سیستم فرآیند را می توان به عنوان یک کش مختصر و تکتراکنش استفاده کرد. به عنوان نمونه، میتوان به دریافت یک فایل بزرگ، عملیات بر روی آن و ذخیرهی نتایج عملیات در پایگاهداده اشاره کرد. برنامهی دوازده-سازه هرگز فرض نمیکند که هر چیزی که در حافظه نهان یا روی دیسک ذخیره شده است، به وسیلهی یک درخواست یا پردازش در آینده در دسترس خواهد بود – با اجرای بسیاری از پردازهها از هر نوع، احتمال اینکه درخواست آینده توسط یک پردازهی متفاوت ارائه شود، بسیار زیاد است. حتی زمانی که فقط یک پردازه را اجرا میکنید، یک راهاندازی مجدد (با استقرار کد، تغییر پیکربندی یا محیط اجرا که فرآیند را به مکان فیزیکی دیگری منتقل میکند) معمولاً تمام حالتهای داخلی سیستم (مانند حافظه و سیستم فایل) را از بین میبرد و یا تغییر میدهد.
بستهبندیکنندهی منابع مانند django-assetpackager از سیستم فایل به عنوان حافظهی پنهان برای کدهای کامپایلشده استفاده میکنند. یک برنامهی دوازده-سازه ترجیح می دهد، این کامپایل را در طول مراحل ساخت انجام دهد. بستهبندیکنندههای منابع مانند Jammit و Rails asset pipeline را میتوان برای بسته از منابع و کتابخانههای مراحل ساخت پیکربندی کرد.
برخی از سیستمهای وب به “نشستهای دارای حالت” متکی هستند – یعنی دادههای نشست کاربر در حافظهی پردازهی برنامه ذخیره میشود و انتظار درخواست آینده از همان بازدیدکننده برای هدایت به همان فرآیند وجود دارد. نشستهای اینچنینی ناقض اصول دوازده-سازه است و هرگز نباید از آنها استفاده کرد یا به آنها اعتماد کرد. دادههای حالت یک نشست، نامزدهای خوبی برای ذخیرهسازی داده در پایگاهدادههایی مانند Memcached یا Redis است که امکان انقضای داده را میدهند.