Оригинал поста можно найти здесь: Оригинал поста можно найти здесь:
Двенадцатифакторное приложение – это методология для программного обеспечения как услуги (SaaS) или веб-приложений или программного обеспечения, развернутого в облаке. Это говорит нам о характеристиках результатов, ожидаемых от таких приложений. По сути, это всего лишь краткое описание необходимых условий для создания хорошо структурированного и масштабируемого облачного приложения.
Вот 12 факторов, которым следует следовать: Кодовая база: Здесь мы поддерживаем единую кодовую базу для каждого микросервиса с конфигурацией, специфичной для их собственных сред, таких как разработка, постановка и производство. Каждый микросервис будет иметь свой собственный репозиторий в системе контроля версий.
Зависимости: Все микросервисы будут иметь свои зависимости как часть пакета приложений. В Node.js , есть package.json, в котором упоминаются все зависимости разработки и общие зависимости. Вы также можете использовать частный репозиторий, из которого можно извлекать зависимости.
Конфигурации: Все конфигурации должны быть внешними, основанными на серверной среде. Должно быть разделение конфигурации и кода. Вы можете задать переменные среды непосредственно в своем проекте или использовать Docker compose для определения других переменных.
Службы резервного копирования: Любая служба, используемая по сети, такая как база данных, операции ввода-вывода, запросы обмена сообщениями или SMTP, кэш будет отображаться как микросервисы и с использованием Docker compose и не зависит от приложения.
Сборка, выпуск и запуск: Используйте автоматизированные инструменты, такие как Docker и Git, в распределенных системах. Используя Docker, вы можете изолировать все три фазы с помощью команд push, pull и run.
Процессы: Разработанные микросервисы не будут иметь состояния и не будут иметь общего доступа, что обеспечит нулевую отказоустойчивость и простое масштабирование. Тома будут использоваться для сохранения данных, что позволит избежать потери данных.
Привязка портов: Микросервисы должны быть автономными и автономными. Микросервисы должны встраивать прослушиватели служб как часть самой службы. Например – в узловом приложении HTTP-модуль, сервисная сеть, предоставляющая сервисы для обработки портов для всех процессов.
Параллелизм: Микросервисы будут масштабироваться с помощью репликации. Микросервисы масштабируются, а не расширяются. Микросервисы могут быть масштабированы или сокращены в зависимости от потока разнообразия рабочей нагрузки. Параллелизм будет поддерживаться динамически.
Возможность утилизации: Для максимальной надежности приложения с быстрым запуском и плавным завершением работы. Различные опции включают политики перезапуска, оркестровку с использованием Docker swarm, обратный прокси-сервер и балансировку нагрузки с помощью контейнеров служб.
Паритет разработчиков/продуктов: Сохраняйте одинаковые среды разработки/производства/постановки. Использование контейнерных микросервисов помогает реализовать стратегию “построй один раз и работай где угодно”. Одно и то же изображение используется на различных этапах разработки.
Журналы: Создание отдельного микросервиса для журналов делает его централизованным, позволяет обрабатывать его как потоки событий и отправлять в такие фреймворки, как Netlify или Elastic stack.
Процессы администратора: Администратор или любые задачи управления должны быть упакованы как один из процессов, чтобы их можно было легко выполнять, отслеживать и управлять. Это включает в себя такие задачи, как миграция базы данных, одноразовые сценарии – исправление поврежденных данных и т.д.
Я надеюсь, что это поможет немного демистифицировать приложение Двенадцать факторов . Я знаю, что когда я впервые узнал об этом и о том, как правильно настраивать микросервисы, было трудно запомнить все факторы. Я создал этот пост, чтобы использовать его в качестве шпаргалки, если вы захотите время от времени возвращаться к нему на случай, если вы не можете вспомнить все факторы. Дайте мне знать, если я что-нибудь пропустил.
Спасибо
Оригинал: “https://dev.to/redhoodjt1988/twelve-factor-application-of-microservices-m0p”