Gymterview
middle

Что такое 12-Factor App?

12-Factor App — это методология разработки SaaS-приложений, описанная инженерами Heroku, определяющая 12 принципов создания облачных приложений. Особенно актуальна для микросервисов.

Фактор Принцип Пример в Spring Boot
1. Codebase Один репозиторий, много деплоев Git repo -> dev, staging, prod
2. Dependencies Явное объявление зависимостей pom.xml, build.gradle
3. Config Конфигурация в переменных окружения @Value("${DATABASE_URL}")
4. Backing Services БД, брокеры — подключаемые ресурсы Смена БД через конфиг
5. Build, Release, Run Разделение этапов Maven build -> Docker image -> Run
6. Processes Stateless-процессы Состояние в Redis/БД
7. Port Binding Самодостаточность через порт Встроенный Tomcat/Netty
8. Concurrency Горизонтальное масштабирование Запуск дополнительных реплик
9. Disposability Быстрый запуск, graceful shutdown server.shutdown: graceful
10. Dev/Prod Parity Минимальные различия окружений Docker, Testcontainers
11. Logs Логи в stdout Сбор через Docker/K8s
12. Admin Processes Одноразовые задачи в том же окружении Flyway-миграции

Ключевые примеры

Пример
// Фактор 3: Config — конфигурация через переменные окружения
@Value("${DATABASE_URL}")
private String databaseUrl;

// НЕ правильно:
// private String databaseUrl = "jdbc:postgresql://prod-db:5432/payments";
Пример
# Фактор 9: Disposability — graceful shutdown
server:
  shutdown: graceful
spring:
  lifecycle:
    timeout-per-shutdown-phase: 30s

На собеседовании: не нужно перечислять все 12 факторов. Выделите 3-4 самых важных (Config, Processes/Statelessness, Disposability, Logs) и объясните их на примерах. Покажите, что Spring Boot «из коробки» соответствует большинству факторов.