Карта / Cloud (AWS) / 12-factor

12-factor

12-factor app — набор из 12 практических правил, как писать приложения, которые легко разворачивать и масштабировать в облаке. Не теория, а проверенные временем рекомендации от инженеров Heroku, актуальные для любого облачного провайдера.

Самые важные на практике:

Конфигурация — через переменные окружения, не в коде:

# ✅ правильно — пароль приходит снаружи
spring:
  datasource:
    password: ${DB_PASSWORD}

Подробнее — в теме «env, .env не в репо».

Stateless-процессы — приложение не хранит состояние между запросами в своей памяти. Любые данные, которые должны пережить запрос, идут в базу/кэш (Redis), а не в локальную переменную процесса — это и позволяет свободно запускать несколько копий приложения (см. тему «Pod, Deployment»), любая из них может обработать любой запрос.

Логи — как поток событий, а не файл, который приложение само ротирует. Приложение просто пишет в stdout (стандартный вывод), а внешняя система (Kubernetes, ELK-стек) уже занимается сбором, хранением и ротацией логов.

Копнуть глубже

Почему именно “12 факторов”, а не просто общие советы. Каждый фактор отвечает на конкретную проблему, с которой сталкиваются при масштабировании в облаке:

  • Зависимости явно объявлены (pom.xml) — чтобы сборка была воспроизводимой на любой машине;
  • Параллелизм через процессы — масштабирование через запуск большего числа копий приложения, а не усложнение одного процесса;
  • Утилизируемость (disposability) — быстрый старт и аккуратное завершение, чтобы Kubernetes мог безболезненно перезапускать поды когда угодно;
  • Паритет dev/prod — окружение разработки максимально похоже на продакшен (тот же docker-compose, та же версия базы), чтобы не ловить “у меня работало” сюрпризы при деплое.

Главная связь со всем пройденным. 12-factor — это не отдельная новая теория, а формализация того, что мы уже видели: профили Spring (см. тему «Профили»), stateless-подход в JWT (см. тему «JWT и OAuth2»), отказ от хранения состояния в singleton-бинах — все эти практики являются применением 12-factor принципов на практике.

🎤 Закрыл тему, если можешь объяснить:
• идею конфигурации через переменные окружения и stateless-процессов;
• как другие изученные темы (профили, JWT) являются примерами 12-factor на практике (если дошёл до 2-го слоя).