VI. Процеси
Запускайте застосунок як один або декілька процесів без збереження внутрішнього стану (stateless)
Застосунок запускається в середовищі виконання у вигляді одного або декількох процесів.
У найпростішому випадку код є окремим скриптом, середовище виконання — ноутбук розробника зі встановленим середовищем виконання мови програмування, а сам процес запускається з командного рядка (наприклад, python my_script.py
). В іншому випадку, це може бути production-розгортання складного застосунку, яке може використовувати багато типів процесів, кожен з яких запущений у необхідній кількості екземплярів.
Процеси 12-факторного застосунку не зберігають внутрішній стан (stateless) і не розділяють ресурси. Будь-які дані, що підлягають збереженню, мають зберігатися в сторонній службі зі збереженням внутрішнього стану (stateful) (як правило, в базі даних).
Памʼять та файлова система процесу можуть бути використані як короткостроковий кеш. Наприклад, завантаження, обробка і збереження великого файлу в базі даних. 12-факторний застосунок ніколи не передбачає, що щось, закешоване в памʼяті або на диску, буде доступне при наступному запиті — за наявності багатьох запущених процесів різних типів є велика ймовірність, що наступний запит буде оброблений іншим процесом. Навіть при роботі тільки одного процесу перезапуск (викликаний розгортанням, змінами конфігурації або переміщенням процесу середовищем виконання в інше фізичне місце розташування), як правило, призведе до знищення всіх локальних (у памʼяті та файловій системі) станів.
Пакувальники ресурсів, наприклад, django-assetpackager використовують файлову систему як кеш для скомпільованих ресурсів. 12-факторний застосунок надає перевагу здійсненню такої компіляції під час етапу збірки. Пакувальники ресурсів, такі як Jammit або Rails asset pipeline можуть бути налаштовані для виконання пакування ресурсів під час стадії збірки.
Деякі вебсистеми покладаються на "липкі сесії" — тобто кешують дані сесії користувача в памʼяті процесу застосунку та очікують, що наступні запити від того ж самого користувача будуть спрямовані до того ж самого процесу. Липкі сесії є порушенням дванадцяти факторів і їх ніколи не слід використовувати чи покладатися на них. Дані сесії користувача є хорошим кандидатом для сховища даних, яке надає функцію обмеження терміну зберігання, наприклад, Memcached або Redis.