VIII. Параллелизм

Масштабирование через процессы

Горизонтальный scale-out

При двенадцати факторах процессы — примитивы первого класса, заимствующие модель unix-демонов. Разработчик проектирует разные типы процессов для разной работы: HTTP-запросы — веб-процессы, длительные фоновые задачи — воркеры.

Разные типы процессов для разных задач

Это не исключает внутреннего мультиплексирования — потоки в JVM, асинхронные модели EventMachine, Twisted, Node.js. Но одна виртуальная машина масштабируется лишь вертикально, поэтому приложение должно уметь работать как набор процессов на разных физических машинах.

Массив типов процессов и их количества называется формирование процессов (process formation). Добавление параллелизма становится простой и надёжной операцией: нет общего состояния, процессы независимы.

Процессы никогда не демонизируются и не пишут PID-файлы — управление потоком вывода, рестарты, перезагрузки через менеджер процессов ОС: systemd, облачный диспетчер или Foreman в dev-режиме.