🤔🤔🤔
Знакомы ли с концепцией 12FA для проектирования SaaS приложений? Знакомы ли с концепцией 12FA для проектирования SaaS приложений?
Да, знаком. 12FA (12-Factor App) — это набор принципов, созданных разработчиками Heroku для построения масштабируемых, надежных и удобных в развертывании SaaS-приложений. Эти принципы особенно полезны при разработке облачных сервисов (Cloud-Native).
🚩
Основные 12 факторов 🟠
Кодовая база (Codebase) У приложения должна быть
единая кодовая база (один репозиторий), независимо от количества развертываний (production, staging, dev).
🟠
Зависимости (Dependencies) Все зависимости должны явно указываться в
go.mod
/
go.sum
(для Go). Никаких глобальных зависимостей в системе.
🟠
Конфигурация (Config) Конфигурация должна храниться в переменных окружения, а не в коде.
export DATABASE_URL="postgres://user:pass@host:5432/db"
🟠
Бэкенд-сервисы (Backing Services) Внешние сервисы (БД, кэш, API) должны быть заменяемыми и подключаться через URL (без хардкода).
🟠
Постоянная сборка, запуск и запуск (Build, Release, Run) Сборка, релиз и запуск должны быть разделены. Например, Docker-контейнеры для каждой стадии.
🟠
Процессы (Processes) Приложение должно быть бесстатичным (не хранить файлы локально, использовать БД, S3 и т. д.).
🟠
Привязка портов (Port Binding) Приложение должно быть самодостаточным и слушать порт (например, через
http.ListenAndServe
).
🟠
Параллелизм (Concurrency) Масштабируемость должна обеспечиваться горизонтальным масштабированием (разделением на процессы).
🟠
Отказоустойчивость (Disposability) Приложение должно быстро запускаться и корректно завершаться (например, ловить SIGTERM).
🟠
Совместимость Dev/Prod (Dev/Prod Parity) Среды разработки и продакшена должны быть максимально похожи.
🟠
Логирование (Logs) Логи должны писаться в стандартный вывод и обрабатываться внешними системами (ELK, Loki, Grafana).
🟠
Админ-процессы (Admin Processes) Скрипты администрирования (миграции, отладка) должны выполняться как отдельные процессы.
Ставь 👍 и забирай 📚 📚 Базу знанийБазу знаний