Микросервисы

Микросервисы (Microservices) – это архитектурный подход к разработке программного обеспечения, при котором приложение строится как набор небольших, автономных и независимых сервисов, работающих вместе для решения бизнес-задач.

Схематичное представление микросервисного приложения

Основные характеристики микросервисной архитектуры:

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

  2. Коммуникация через сетевые протоколы: Микросервисы взаимодействуют друг с другом через сетевые протоколы, такие как HTTP, REST, messaging и другие. Каждый сервис может иметь свой собственный API и использовать выбранный протокол для взаимодействия с другими сервисами. Это позволяет легко интегрировать различные сервисы и расширять функциональность системы.

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

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

Преимущества микросервисной архитектуры

  • Масштабируемость

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

  • Гибкость и независимость разработки

Разработчики могут использовать разные технологии и практики для каждого сервиса в зависимости от его конкретных потребностей.

  • Легкость замены и обновления

Замена или обновление одного микросервиса не влияет на остальные части приложения.

Недостатки микросервисной архитектуры

  • Сложность управления

Управление множеством независимых сервисов может быть сложным. Необходимы инструменты для мониторинга, развертывания и управления версиями.

  • Затраты на межсервисное взаимодействие

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

  • Сложность обеспечения целостности данных

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

  • Высокие затраты на начальное развертывание

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

Ситуации, когда лучше подойдет микросервисная архитектура приложения

  1. Ваше приложение представляет собой совокупность слабо связанных друг с другом функций или сервисов (яркие примеры - мобильные банки, Яндекс Go), где каждый сервис может развиваться независимо.

  2. Сервисы и функции вашего приложения регулируются разными заказчиками или бизнес подразделениями.

  3. Вы пришли к тому, что ваше текущее монолитное приложение написано сложно, неоптимально и, возможно, на устаревшем стеке, так что что его сопровождение и развитие стоит очень дорого. Вы решаете, что нужно постепенно выделять из него функции, проверять их и начинать эксплуатировать.

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

Исчтоники:

Last updated