Что такое Twelve-Factor App

 Twelve-Factor App — это набор принципов и методик для разработки программного обеспечения, предназначенных для работы в облаке. Эти принципы помогают создавать приложения, которые легко масштабируются, поддерживаются и развиваются. Концепция была предложена компанией Heroku и охватывает двенадцать факторов:

  1. Codebase: Приложение должно иметь только один кодовый базовый репозиторий, который используется для всех сред (разработка, тестирование, продакшн).

  2. Dependencies: Все зависимости должны быть явно указаны в проекте и автоматически устанавливаться при развертывании приложения.

  3. Config: Конфигурационные данные, такие как ключи API и настройки, должны быть вынесены из кода и храниться в окружении, а не внутри кода.

  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: Административные задачи (например, миграции базы данных) должны быть выполнены в контексте приложения, чтобы обеспечить повторяемость и удобство.

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

Комментарии

Популярные сообщения из этого блога

Consul – включает Service Discovery и Key-Value хранилище для Kubernetes

Сравнительный анализ манифестов Kubernetes, Helm-чартов и Kustomize

Service Mesh в Kubernetes: Подробный разбор с примерами