فاکتور ششم: Processes
فاکتور ششم در 12-Factor App مربوط به فرآیندهای اجرایی (Processes) است. اپلیکیشن در محیط اجرا به شکل یک یا چند فرآیند مستقل (Process) اجرا میشود.
سادهترین حالت، یک اسکریپت مستقل است که روی لپتاپ توسعهدهنده اجرا میشود (مثلاً python my_script.py). در محیط production، یک اپلیکیشن پیچیده ممکن است انواع مختلفی از فرآیندها داشته باشد که هرکدام چندین نمونه از آنها در حال اجرا باشند.
Stateless و Share-Nothing
فرآیندهای 12-Factor stateless و share-nothing هستند. هیچ دادهای نباید به صورت محلی در حافظه یا فایلسیستم برای طولانیمدت ذخیره شود. دادههایی که باید ماندگار باشند، باید در یک Backing Service stateful مانند پایگاه داده ذخیره شوند.

حافظه یا فایلسیستم فرآیند تنها برای کش کوتاهمدت و یک تراکنش قابل استفاده است. برای مثال، دانلود یک فایل بزرگ، پردازش آن و ذخیره نتایج در پایگاه داده. اپلیکیشن 12-Factor هرگز فرض نمیکند که داده کششده در حافظه یا دیسک در درخواست یا job بعدی در دسترس باشد، زیرا درخواست بعدی ممکن است توسط فرآیند دیگری سرو شود.
مثال عملی: مدیریت فایل و کش
برخی ابزارهای بستهبندی asset مانند Django AssetPackager یا Rails Asset Pipeline از فایلسیستم بهعنوان کش برای فایلهای کامپایلشده استفاده میکنند. در اپلیکیشن 12-Factor، این کار باید در مرحله build انجام شود و نه در زمان اجرا، تا فرآیندها stateless باقی بمانند.
Sticky Sessions و جایگزین آن
بعضی سیستمهای وب از Sticky Sessions استفاده میکنند، یعنی دادههای session کاربر در حافظه همان فرآیند نگه داشته میشوند و انتظار دارند درخواستهای بعدی به همان فرآیند هدایت شوند. این روش نقض اصول 12-Factor است و نباید استفاده شود.
دادههای session بهتر است در یک datastore که قابلیت expiration دارد، مانند Memcached یا Redis نگهداری شود. این کار تضمین میکند که sessionها مستقل از فرآیندها و مقیاسپذیر باقی بمانند.