Что такое 12-факторное приложение?

12-факторное приложение – это набор лучших практик и рекомендаций по созданию современных, масштабируемых и поддерживаемых веб-приложений. Она была представлена соучредителем Heroku Адамом Виггинсом в 2011 году и с тех пор стала широко распространенной методологией разработки облачных нативных приложений. Цель 12-факторного приложения - предоставить набор принципов, которые помогут разработчикам создавать приложения, которые легко развертывать, масштабировать и поддерживать в различных средах.

К 12 факторам относятся:

  1. Кодовая база: Используйте единую кодовую базу, отслеживаемую в системе контроля версий, и развертывайте один и тот же код в различных средах.
  2. Зависимости: Явно объявляйте и изолируйте зависимости, обеспечивая согласованность сред разработки, тестирования и продакшн.
  3. Конфигурация: Храните конфигурацию в среде, а не в коде. Это помогает отделить конфигурацию от кода и позволяет легко изменять конфигурацию без модификации кода.
  4. Блокирующие сервисы: Рассматривайте вспомогательные сервисы (например, базы данных, системы кэширования и т. д.) как вложенные ресурсы и получайте к ним доступ через определенные API. Это способствует свободному соединению и упрощает переключение или обновление сервисов.
  5. Сборка, выпуск, запуск: Строго разделяйте этапы сборки, выпуска и запуска приложения. Это способствует более простому и надежному развертыванию.
  6. Процессы: Выполняйте приложение в виде одного или нескольких процессов без статического состояния. Это гарантирует, что приложения легко масштабируются, восстанавливаются и могут выполняться в различных средах.
  7. Портовая привязка: Экспортируйте сервисы через привязку портов. Приложение должно быть самодостаточным и экспортировать сервисы через порт, что делает его легкодоступным.
  8. Параллелизм: Масштабирование через модель процессов. Приложения должны иметь возможность горизонтального масштабирования за счет добавления новых процессов.
  9. Утилизация: Максимально повышайте устойчивость за счет быстрого запуска и плавного завершения работы. Приложения должны иметь возможность быстро запускаться и останавливаться, что облегчает их масштабирование и развертывание.
  10. Паритет между разработкой и производством: Обеспечьте максимальное сходство между средами разработки, постановки и производства. Различия между средами могут привести к проблемам, поэтому старайтесь свести их к минимуму.
  11. Логи: Относитесь к логам как к потокам событий. К журналам следует относиться как к потокам событий, они должны быть доступны и индексируемы.
  12. Процессы администрирования: Запускайте задачи администрирования/управления как отдельные процессы. Административные задачи должны быть отделены от основных процессов приложения.

Придерживаясь этих принципов, разработчики смогут создавать приложения, которые будут более масштабируемыми, поддерживаемыми и адаптируемыми к различным сценариям развертывания, будь то локальные серверы, виртуальные машины или облачные платформы. 12-факторные принципы работы приложений особенно актуальны в контексте облачных нативных архитектур и архитектур микросервисов.

Прокрутить вверх