7.4 KiB
title | date | draft | tags | ||
---|---|---|---|---|---|
12factor | 2024-10-12T17:06:54+03:00 | true |
|
Оригинал: https://12factor.net/ru/
Введение
В наши дни программное обеспечение обычно распространяется в виде сервисов,
называемых веб-приложения (web apps
) или software-as-a-service (SaaS
).
Приложение двенадцати факторов — это методология для создания SaaS-приложений,
которые:
- Используют декларативный формат для описания процесса установки и настройки, что сводит к минимуму затраты времени и ресурсов для новых разработчиков, подключённых к проекту;
- Имеют соглашение с операционной системой, предполагающее максимальную переносимость между средами выполнения;
- Подходят для развёртывания на современных облачных платформах, устраняя необходимость в серверах и системном администрировании;
- Сводят к минимуму расхождения между средой разработки и средой выполнения,
что позволяет использовать непрерывное развёртывание (
continuous deployment
) для максимальной гибкости; - И могут масштабироваться без существенных изменений в инструментах, архитектуре и практике разработки.
Методология двенадцати факторов может быть применена для приложений, написанных на любом языке программирования и использующих любые комбинации сторонних служб (backing services) (базы данных, очереди сообщений, кэш-памяти, и т.д.).
Предпосылки
Участники, внёсшие вклад в этот документ, были непосредственно вовлечены в разработку и развёртывание сотен приложений и косвенно были свидетелями разработки, выполнения и масштабирования сотен тысяч приложений во время нашей работы над платформой Heroku.
В этом документе обобщается весь наш опыт использования и наблюдения за самыми разнообразными SaaS-приложениями в дикой природе. Документ является объединением трёх идеальных подходов к разработке приложений: уделение особого внимания динамике органического роста приложения с течением времени, динамике сотрудничества разработчиков, работающих над кодовой базой приложения, и устранение последствий эрозии программного обеспечения.
Наша мотивация заключается в повышении осведомлённости о некоторых системных проблемах,
которые мы встретили в практике разработки современных приложений, а также для того,
чтобы предоставить общие основные понятия для обсуждения этих проблем
и предложить набор общих концептуальных решений этих проблем с сопутствующей терминологией.
Формат навеян книгами Мартина Фаулера (Martin Fowler
)
Patterns of Enterprise Application Architecture
и Refactoring.
Кому следует читать этот документ?
Разработчикам, которые создают SaaS
-приложения.
Ops
инженерам, выполняющим развёртывание и управление такими приложениями.
Двенадцать факторов
I. Кодовая база
Одна кодовая база, отслеживаемая в системе контроля версий, – множество развёртываний
II. Зависимости
Явно объявляйте и изолируйте зависимости
III. Конфигурация
Сохраняйте конфигурацию в среде выполнения
IV. Сторонние службы (Backing Services)
Считайте сторонние службы (backing services) подключаемыми ресурсами
V. Сборка, релиз, выполнение
Строго разделяйте стадии сборки и выполнения
VI. Процессы
Запускайте приложение как один или несколько процессов
не сохраняющих внутреннее состояние (stateless)
VII. Привязка портов (Port binding)
Экспортируйте сервисы через привязку портов
VIII. Параллелизм
Масштабируйте приложение с помощью процессов
IX. Утилизируемость (Disposability)
Максимизируйте надёжность с помощью быстрого запуска и корректного завершения работы
X. Паритет разработки/работы приложения
Держите окружения разработки, промежуточного развёртывания (staging)
и рабочего развёртывания (production) максимально похожими
XI. Журналирование (Logs)
Рассматривайте журнал как поток событий
XII. Задачи администрирования
Выполняйте задачи администрирования/управления с помощью разовых процессов