Да, знаком. Концепция 12 Factor (двенадцать факторов) представляет собой набор принципов для построения SaaS-приложений, направленных на повышение переносимости, масштабируемости и гибкости.
Основные принципы:
- Кодовая база (Codebase): Одна кодовая база, отслеживаемая в системе контроля версий, множество развертываний.
- Зависимости (Dependencies): Явно объявление и изоляция зависимостей.
- Конфигурация (Config): Хранение конфигурации в окружении, а не в коде.
- Бэкенд-сервисы (Backing Services): Рассматривать бэкенд-сервисы (базы данных, очереди сообщений и т.д.) как прикрепленные ресурсы.
- Сборка, релиз, выполнение (Build, release, run): Строгое разделение стадий сборки, релиза и выполнения.
- Процессы (Processes): Выполнение приложения как одного или нескольких процессов без состояния.
- Привязка портов (Port binding): Самодостаточность, экспорт сервисов через порты.
- Параллелизм (Concurrency): Горизонтальное масштабирование с помощью моделя процессов.
- Выбрасываемость (Disposability): Быстрый запуск и корректное завершение для устойчивости.
- Разработка/продакшн (Dev/prod parity): Максимальное сглаживание различий между средами разработки, тестирования и продакшена.
- Логи (Logs): Рассматривать логи как поток событий, направляемый на стандартный вывод.
- Административные задачи (Admin processes): Выполнение административных и миграционных задач как одноразовых процессов.
Эти принципы помогают создавать приложения, которые легко деплоить и масштабировать в современных облачных средах.
go