WEB
🧱 Приложение 12 факторов: современный подход к разработке
12-Factor App — это методология создания облачно-ориентированных приложений. Она помогает делать проекты масштабируемыми, устойчивыми к сбоям и легко развёртываемыми. Вот краткое описание каждого из 12 факторов.
1. 🧬 Кодовая база (Codebase)
Одна кодовая база в системе контроля версий (например, Git), и множество развёртываний — staging, production и т. д.
2. 📦 Зависимости (Dependencies)
Все внешние библиотеки должны быть явно указаны (в package.json, requirements.txt и т. д.) и изолированы от системы.
3. ⚙️ Конфигурация (Config)
Конфигурация (пароли, API-ключи, адреса БД) должна храниться в переменных окружения, а не в коде.
4. 🔌 Сторонние службы (Backing Services)
Базы данных, кеши, очереди и другие внешние сервисы — это сменные ресурсы, подключаемые через переменные окружения.
5. 🛠️ Сборка, релиз, запуск (Build, Release, Run)
Приложение разворачивается поэтапно:
-
Сборка — компиляция, установка зависимостей.
-
Релиз — добавление конфигурации.
-
Запуск — выполнение приложения.
6. 🧼 Процессы (Processes)
Приложение работает как набор статeless-процессов. Нельзя хранить данные в оперативной памяти между запросами.
7. 🔉 Привязка портов (Port Binding)
Приложение само открывает порт (например, через встроенный веб-сервер) и обслуживает входящие запросы.
8. 🧵 Параллелизм (Concurrency)
Разделяй задачи: запускай отдельные процессы для обработки HTTP-запросов, фоновых задач, очередей и т. д.
9. 🚀 Устойчивость к сбоям (Disposability)
Приложение должно быстро запускаться и завершаться, быть готовым к рестартам в любой момент.
10. ⚖️ Dev/Prod Parity
Старайся максимально приблизить окружения разработки, тестирования и продакшена — это снижает баги.
11. 📄 Логирование (Logs)
Приложение не управляет логами. Оно пишет всё в stdout, а уже хостинг-платформа занимается сбором и анализом.
12. 🧪 Админ-процессы (Admin Processes)
Одноразовые задачи (миграции, отладка) должны выполняться в том же окружении, что и основное приложение.
📌 Вывод
Методология 12 факторов помогает писать приложения, которые:
-
легко масштабируются и сопровождаются,
-
устойчивы к сбоям,
-
не зависят от инфраструктуры.
💡 Хочешь развивать облачные приложения — начни с этих принципов.