Методология

The Twelve-Factor App

Руководство по созданию SaaS-приложений, которые масштабируются, переносимы и устойчивы к отказам.

Введение

В наши дни программное обеспечение распространяется в виде сервисов, называемых веб-приложениями (web apps) или software-as-a-service (SaaS). Приложение двенадцати факторов — методология создания SaaS-приложений, которые:

Методология применима к приложениям на любом языке программирования и с любыми комбинациями сторонних служб.

Предпосылки

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

Документ обобщает опыт работы с самыми разными SaaS-приложениями: внимание к динамике органического роста приложения, динамике сотрудничества разработчиков и устранению последствий эрозии программного обеспечения. Формат навеян книгами Мартина Фаулера «Patterns of Enterprise Application Architecture» и «Refactoring».

Для кого?

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

Двенадцать факторов

01

Кодовая база

Одна кодовая база в контроле версий — множество развёртываний

02

Зависимости

Явно объявляйте и изолируйте зависимости

03

Конфигурация

Храните конфигурацию в переменных окружения

04

Сторонние службы

Считайте backing services подключаемыми ресурсами

05

Сборка, релиз, выполнение

Строго разделяйте стадии сборки и выполнения

06

Процессы

Запускайте приложение как stateless-процессы

07

Port binding

Экспортируйте сервисы через привязку портов

08

Параллелизм

Масштабируйте приложение с помощью процессов

09

Disposability

Быстрый старт и корректное завершение работы

10

Dev/prod parity

Держите окружения похожими

11

Логи

Рассматривайте лог как поток событий

12

Админ-процессы

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