Какие принципы 12-factor app полезны при построении сервиса?

Двенадцать факторов приложения: конфигурация, зависимости, процессы, релизы и эксплуатация — без обещания автоматической надёжности.

Короткий ответ

Что ответить на собеседовании

12-factor app описывает переносимое и воспроизводимое устройство сервисного приложения: контролируемая кодовая база, явные зависимости, внешняя конфигурация, отделённые стадии сборки/релиза/запуска и безсостоящие процессы. Также важны быстрый старт, корректное завершение, похожие окружения, поток логов и отдельные административные задачи.

Подробный разбор

Ответ с пояснениями

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

  1. Codebase: одна контролируемая кодовая база приложения, разные развёртывания.
  2. Dependencies: явно объявленные и изолированные зависимости.
  3. Config: конфигурация окружения отделена от кода.
  4. Backing services: БД и другие зависимости рассматриваются как подключаемые ресурсы.
  5. Build, release, run: разделение сборки, формирования релиза и исполнения.
  6. Processes: безсостоящие процессы; долговечные данные — во внешних ресурсах.
  7. Port binding: сервис предоставляет интерфейс через порт.
  8. Concurrency: масштабирование разными типами процессов.
  9. Disposability: быстрый запуск и корректное завершение.
  10. Dev/prod parity: уменьшение существенных различий окружений.
  11. Logs: поток событий, обработкой которого занимается окружение.
  12. Admin processes: административные операции как отдельные одноразовые процессы.

Фактор codebase — не универсальный запрет монорепозитория для организации; важно понимать границу конкретного приложения. Исходное объяснение различает кодовую базу приложения и набор отдельных приложений распределённой системы.

Config рекомендует хранить конфигурацию в окружении, но это не разрешение выводить секреты в лог или оставлять их без контроля доступа. Локальный кэш процесса также не должен становиться единственным источником долговечных данных.

Эти принципы облегчают эксплуатацию, но сами по себе не обеспечивают безопасность, отказоустойчивость БД или выполнение SLO. Выбирайте реальные примеры: отделение конфигурации, воспроизводимый релиз, обработка завершения процесса — и объясняйте полученную пользу.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку