added 12 factors
This commit is contained in:
parent
53d63cfd15
commit
c666688726
98
content/posts/2024/develop/12factor.md
Normal file
98
content/posts/2024/develop/12factor.md
Normal file
@ -0,0 +1,98 @@
|
||||
---
|
||||
title: "12factor"
|
||||
date: 2024-10-12T17:06:54+03:00
|
||||
draft: true
|
||||
tags: [tutorual, development]
|
||||
---
|
||||
|
||||
Оригинал: https://12factor.net/ru/
|
||||
|
||||
# Введение
|
||||
|
||||
В наши дни программное обеспечение обычно распространяется в виде сервисов,
|
||||
называемых веб-приложения (`web apps`) или software-as-a-service (`SaaS`).
|
||||
Приложение двенадцати факторов — это методология для создания SaaS-приложений,
|
||||
которые:
|
||||
|
||||
* Используют **декларативный** формат для описания процесса установки и настройки,
|
||||
что сводит к минимуму затраты времени и ресурсов для новых разработчиков,
|
||||
подключённых к проекту;
|
||||
* Имеют **соглашение** с операционной системой, предполагающее **максимальную переносимость**
|
||||
между средами выполнения;
|
||||
* Подходят для **развёртывания** на современных **облачных платформах**,
|
||||
устраняя необходимость в серверах и системном администрировании;
|
||||
* **Сводят к минимуму расхождения** между средой разработки и средой выполнения,
|
||||
что позволяет использовать непрерывное развёртывание (`continuous deployment`)
|
||||
для максимальной гибкости;
|
||||
* И могут **масштабироваться** без существенных изменений в инструментах,
|
||||
архитектуре и практике разработки.
|
||||
|
||||
Методология двенадцати факторов может быть применена для приложений, написанных на любом языке программирования и использующих любые комбинации сторонних служб (backing services) (базы данных, очереди сообщений, кэш-памяти, и т.д.).
|
||||
|
||||
## Предпосылки
|
||||
|
||||
Участники, внёсшие вклад в этот документ, были непосредственно вовлечены в разработку
|
||||
и развёртывание сотен приложений и косвенно были свидетелями разработки,
|
||||
выполнения и масштабирования сотен тысяч приложений
|
||||
во время нашей работы над платформой [Heroku](http://www.heroku.com/).
|
||||
|
||||
В этом документе обобщается весь наш опыт использования
|
||||
и наблюдения за самыми разнообразными SaaS-приложениями в дикой природе.
|
||||
Документ является объединением трёх идеальных подходов к разработке приложений:
|
||||
уделение особого внимания динамике органического роста приложения с течением времени,
|
||||
динамике сотрудничества разработчиков, работающих над кодовой базой приложения,
|
||||
и [устранение последствий эрозии программного обеспечения](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/).
|
||||
|
||||
Наша мотивация заключается в повышении осведомлённости о некоторых системных проблемах,
|
||||
которые мы встретили в практике разработки современных приложений, а также для того,
|
||||
чтобы предоставить общие основные понятия для обсуждения этих проблем
|
||||
и предложить набор общих концептуальных решений этих проблем с сопутствующей терминологией.
|
||||
Формат навеян книгами Мартина Фаулера (`Martin Fowler`)
|
||||
[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)
|
||||
и [Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C).
|
||||
|
||||
## Кому следует читать этот документ?
|
||||
|
||||
Разработчикам, которые создают `SaaS`-приложения.
|
||||
`Ops` инженерам, выполняющим развёртывание и управление такими приложениями.
|
||||
|
||||
|
||||
# Двенадцать факторов
|
||||
|
||||
**[I. Кодовая база](https://12factor.net/ru/codebase)**
|
||||
Одна кодовая база, отслеживаемая в системе контроля версий, – множество развёртываний
|
||||
|
||||
**[II. Зависимости](https://12factor.net/ru/dependencies)**
|
||||
Явно объявляйте и изолируйте зависимости
|
||||
|
||||
**[III. Конфигурация](https://12factor.net/ru/config)**
|
||||
Сохраняйте конфигурацию в среде выполнения
|
||||
|
||||
**[IV. Сторонние службы (Backing Services)](https://12factor.net/ru/backing-services)**
|
||||
Считайте сторонние службы (backing services) подключаемыми ресурсами
|
||||
|
||||
**[V. Сборка, релиз, выполнение](https://12factor.net/ru/build-release-run)**
|
||||
Строго разделяйте стадии сборки и выполнения
|
||||
|
||||
**[VI. Процессы](https://12factor.net/ru/processes)**
|
||||
Запускайте приложение как один или несколько процессов
|
||||
не сохраняющих внутреннее состояние (stateless)
|
||||
|
||||
**[VII. Привязка портов (Port binding)](https://12factor.net/ru/port-binding)**
|
||||
Экспортируйте сервисы через привязку портов
|
||||
|
||||
**[VIII. Параллелизм](https://12factor.net/ru/concurrency)**
|
||||
Масштабируйте приложение с помощью процессов
|
||||
|
||||
**[IX. Утилизируемость (Disposability)](https://12factor.net/ru/disposability)**
|
||||
Максимизируйте надёжность с помощью быстрого запуска и корректного завершения работы
|
||||
|
||||
**[X. Паритет разработки/работы приложения](https://12factor.net/ru/dev-prod-parity)**
|
||||
Держите окружения разработки, промежуточного развёртывания (staging)
|
||||
и рабочего развёртывания (production) максимально похожими
|
||||
|
||||
**[XI. Журналирование (Logs)](https://12factor.net/ru/logs)**
|
||||
Рассматривайте журнал как поток событий
|
||||
|
||||
**[XII. Задачи администрирования](https://12factor.net/ru/admin-processes)**
|
||||
Выполняйте задачи администрирования/управления с помощью разовых процессов
|
Loading…
Reference in New Issue
Block a user