The Twelve Factors. И ты тоже?
Когда-то в далеком 2011 году разработчики платформы Heroku собрали ряд проблем, на которые налетает большинство их клиентов, и сформировали 12 правил-принципов и обозвали это The Twelve-Factor App.
Авторам The Twelve-Factor App удалось создать стройную и непротиворечивую систему принципов и способов построения практической деятельности по созданию веб-приложений и даже чуть шире — веб-сервисов по модели software-as-a-service (SaaS). И в этом смысле The Twelve-Factor App можно назвать методологией.
Сильное влияние на авторов оказали книги Мартина Фаулера «Patterns of Enterprise Application Architecture» и «Refactoring». Прежде всего они адресовали свою работу разработчикам, которые создавали в то время SaaS-приложения, и Ops-инженерам, которые были заняты развертыванием и управлением такими приложениями.
Вот эти факторы в коротком изложении, хотя за каждым скрывается развернутое описание:
Двенадцать факторов
I. Кодовая база
Одна кодовая база, отслеживаемая в системе контроля версий, — множество развертываний
II. Зависимости
Явно объявляйте и изолируйте зависимости
III. Конфигурация
Сохраняйте конфигурацию в среде выполнения
IV. Сторонние службы (Backing Services)
Считайте сторонние службы (backing services) подключаемыми ресурсами
Строго разделяйте стадии сборки и выполнения
VI. Процессы
Запускайте приложение как один или несколько процессов, не сохраняющих внутреннее состояние (stateless)
VII. Привязка портов (port binding)
Экспортируйте сервисы через привязку портов
VIII. Параллелизм
Масштабируйте приложение с помощью процессов
IX. Одноразовость (Disposability)
Максимизируйте надежность с помощью быстрого запуска и корректного завершения работы
Держите окружения разработки, промежуточного развёртывания (staging) и рабочего развёртывания (production) максимально похожими
XI. Журналирование (Logs)
Рассматривайте журнал как поток событий
Выполняйте задачи администрирования/управления с помощью разовых процессов
Многие вещи из этого списка остались, и кажется, совсем не устарели, но если копнуть глубже, ряд пунктов требует обновления. И 12 ноября Yehuda Katz объявил, что Twelve-Factor App Methodology is now Open Source. О том, какой это Open Source, мы еще узнаем, но, кажется, нас ждет обновление и модернизация ранее созданной методологии, порадуемся этому.