WEB

🧱 Приложение 12 факторов: современный подход к разработке

12-Factor App — это методология создания облачно-ориентированных приложений. Она помогает делать проекты масштабируемыми, устойчивыми к сбоям и легко развёртываемыми. Вот краткое описание каждого из 12 факторов.

image.png


1. 🧬 Кодовая база (Codebase)

Одна кодовая база в системе контроля версий (например, Git), и множество развёртываний — staging, production и т. д.

image.png


2. 📦 Зависимости (Dependencies)

Все внешние библиотеки должны быть явно указаныpackage.json, requirements.txt и т. д.) и изолированы от системы.

image.png


3. ⚙️ Конфигурация (Config)

Конфигурация (пароли, API-ключи, адреса БД) должна храниться в переменных окружения, а не в коде.

image.png


4. 🔌 Сторонние службы (Backing Services)

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

image.png


5. 🛠️ Сборка, релиз, запуск (Build, Release, Run)

Приложение разворачивается поэтапно:

  1. Сборка — компиляция, установка зависимостей.

  2. Релиз — добавление конфигурации.

  3. Запуск — выполнение приложения.

image.png


6. 🧼 Процессы (Processes)

Приложение работает как набор статeless-процессов. Нельзя хранить данные в оперативной памяти между запросами.

image.png


7. 🔉 Привязка портов (Port Binding)

Приложение само открывает порт (например, через встроенный веб-сервер) и обслуживает входящие запросы.

image.png


8. 🧵 Параллелизм (Concurrency)

Разделяй задачи: запускай отдельные процессы для обработки HTTP-запросов, фоновых задач, очередей и т. д.

image.png


9. 🚀 Устойчивость к сбоям (Disposability)

Приложение должно быстро запускаться и завершаться, быть готовым к рестартам в любой момент.

image.png


10. ⚖️ Dev/Prod Parity

Старайся максимально приблизить окружения разработки, тестирования и продакшена — это снижает баги.

image.png


11. 📄 Логирование (Logs)

Приложение не управляет логами. Оно пишет всё в stdout, а уже хостинг-платформа занимается сбором и анализом.

image.png


12. 🧪 Админ-процессы (Admin Processes)

Одноразовые задачи (миграции, отладка) должны выполняться в том же окружении, что и основное приложение.

image.png


📌 Вывод

Методология 12 факторов помогает писать приложения, которые:

💡 Хочешь развивать облачные приложения — начни с этих принципов.