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

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

x² + 3х — 54 = 0

Решаем квадратное уравнение, получаем два (а их всегда два, помните, да?) корня: 6 и –9.

Далее не забываем, человек у нас не простой, а разумный, он скорее всего разумом своим пораскинет и скажет: "Хотя чисто абстрактно–математически корня у нашего уравнения два, но живем–то мы в реальной реальности, данной нам в ощущениях! И памятуя о том, что реальность чаще всего существенно уже (в смысле меньше) математики, абсурдный ответ в минус девять метров мы отбросим. Потому что я не просто какое–то отвлеченное уравнение решаю, я ищу площадь и длину стен конкретной комнаты в которой прямо сейчас нахожусь. И вижу, что у нее длина стены никак не "минус девять". Значит, отбросив один корень, получаю длину первой стены шесть, а второй на 3 метра больше, то есть 9 метров. Обычных человеческих, не минус–метров. В нашей Вселенной, в той, где мы живем минус–метров в комнатах не бывает".

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

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

Одно из решений описывает следующий процесс: Человек взял в руки спичку и чиркнул ее о коробок. Спичка вспыхнула, загорелся огонек, во все стороны темной комнаты (площадью 54 квадратных метра, ага) полетели световые фотоны, или по другому — электромагнитные волны видимого и инфракрасного спектра. Через какое–то время (довольно быстро, скорость света все–таки) эти волны достигли стен комнаты и осветили их. Если в стенах были окна — электромагнитные волны от зажженной спички просочились сквозь стекла и полетели дальше, все расширяясь, отправились в свой бесконечный полет по Вселенной, покуда их не остановит собой пытливый глаз наблюдателя, если вообще когда–нибудь что–нибудь остановит.

А теперь другое решение уравнений Максвелла, абсолютно приемлемое с точки зрения математики: Где–то далеко, на самой границе Обозримой Вселенной, непонятно как и по какой причине зародилась электромагнитная волна. Волна была еле–еле заметная, почти неуловимая, но с полетом росла и набирала мощь, пролетев 13.8 миллиардов лет она ворвалась к нам в окно, и тут же слилась с точно такими же волнами, очень удачно и вовремя излученными стенами, чтобы успеть собраться воедино и мощно ударить в спичку, где из сернистого газа и оксида фосфора получить целую спичечную головку, аккурат в тот момент, когда мы чиркали ей по коробку. Надо же, какое совпадение!

Оба решения математически верны, оба могут произойти, почему бы и нет? Но мы–то с вами человеки разумные. Мы понимаем, что существует причина, и существует следствие. Мы можем осознать, что одно из решений не является описанием нашей реальности, математика математикой, но одно из решений придется отбросить как абсурдное. В нашем мире лишь одно решение имеет физический смысл — электромагнитные волны летят от зажженной спички, а время течет только вперед.

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

Про цикл его статей я писал тут — https://www.asyncink.com/sly2m

@asyncink

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

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