The Twelve-Factor App. Принципы архитектуры современных веб-приложений

The Twelve-Factor App. Принципы архитектуры современных веб-приложений

The Twelve-Factor App — принципы архитектуры современных веб-приложений от команды Heroku. Оригинал на английском, есть перевод на русский и еще 16 языков.

Все принципы просты и каждый сфорулирован в формате короткой статьи. При нормально выстроенном процессе разработки (попросту адекватно современным требованиям) многие из изложенных принципов выполняются автоматически.

Например, трудно представить, чтобы сегодня разработка велась без системы контроля версий или чтобы нарушалась связь «одно приложение (сервис) — один репозиторий».

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

Собственно, сами принципы:

Из введения:

«Участники, внёсшие вклад в этот документ, были непосредственно вовлечены в разработку и развёртывание сотен приложений и косвенно были свидетелями разработки, выполнения и масштабирования сотен тысяч приложений во время нашей работы над платформой Heroku.

В этом документе обобщается весь наш опыт использования и наблюдения за самыми разнообразными SaaS-приложениями в дикой природе. Документ является объединением трёх идеальных подходов к разработке приложений: уделение особого внимания динамике органического роста приложения с течением времени, динамике сотрудничества разработчиков, работающих над кодовой базой приложения, и устранение последствий эрозии программного обеспечения.

Наша мотивация заключается в повышении осведомлённости о некоторых системных проблемах, которые мы встретили в практике разработки современных приложений, а также для того, чтобы предоставить общие основные понятия для обсуждения этих проблем и предложить набор общих концептуальных решений этих проблем с сопутствующей терминологией. Формат навеян книгами Мартина Фаулера (Martin Fowler) Patterns of Enterprise Application Architecture и Refactoring».

На основе The Twelve-Factor App в блоге IBM в 2019 году вышла статья «7 Missing Factors from 12-Factor Applications» (переведенный на Хабре). Авторы предлагают дополнительные 7 принципов, преимущественно в разрезе работы с Kubernetes:

  • Наблюдаемость. Приложения должны предоставлять сведения о своем текущем состоянии и показателях
  • Прогнозируемость. Приложения должны обеспечивать прогнозируемость ресурсных требований
  • Обновляемость. Приложения должны обновлять форматы данных с предыдущих поколений.
  • Минимальные привилегии. Контейнеры должны работать с минимумом привилегий
  • Контролируемость. Необходимо знать что, когда, кто и где — для всех критически важных операций
  • Защищенность. Необходимо защищать приложение и ресурсы от посторонних.
  • Измеримость. Эксплуатация приложений должна быть измеримой для целей квотирования и финансовых расчетов

С дополнительными 7 принципами авторы статьи выступали на KubeCon 2019 в Шанхае:

KubeCon 2019 в Шанхае

Немного о себе — меня зовут Михаил, я разработчик в крупной российской компании. Пишу про разработку, дизайн, мышление и управление продуктом в Телеграм-канале. Из недавних постов:

Перевод серии интервью «How to Get Rich» Наваля Равиканта от Вани Замесина.

«Этичное создание богатства создает изобилие в мире».

«Играйте в долгосрочные игры с постоянными людьми. Все доходы приходят в нашу жизнь как сложный процент от долгосрочных игр».

https://www.asyncink.com/how-to-get-rich
«How to Get Rich» Наваля Равиканта
Итак, задача на соображалку. Пусть площадь пола прямоугольной комнаты 54 квадратных метра, а одна стена длинней другой на три метра. Что можно сказать о длине стен этой комнаты?

Человек обладающий абстрактным мышлением скажет: "Одна стена будет длиной х, вторая x + 3, а произведение их равно 54".

x · (x + 3) = 54

или то же самое, в более привычном ви…

Почему время течет вперед на пальцах. Артем sly2m Прохоров

1
Начать дискуссию