VIII. Параллелизм
Масштабирование через процессы
Горизонтальный scale-out
При двенадцати факторах процессы — примитивы первого класса, заимствующие модель unix-демонов. Разработчик проектирует разные типы процессов для разной работы: HTTP-запросы — веб-процессы, длительные фоновые задачи — воркеры.
Это не исключает внутреннего мультиплексирования — потоки в JVM, асинхронные модели EventMachine, Twisted, Node.js. Но одна виртуальная машина масштабируется лишь вертикально, поэтому приложение должно уметь работать как набор процессов на разных физических машинах.
Массив типов процессов и их количества называется формирование процессов (process formation). Добавление параллелизма становится простой и надёжной операцией: нет общего состояния, процессы независимы.
Процессы никогда не демонизируются и не пишут PID-файлы — управление потоком вывода, рестарты, перезагрузки через менеджер процессов ОС: systemd, облачный диспетчер или Foreman в dev-режиме.