Микросервисы
Last updated
Last updated
Микросервисы (Microservices) – это архитектурный подход к разработке программного обеспечения, при котором приложение строится как набор небольших, автономных и независимых сервисов, работающих вместе для решения бизнес-задач.
Основные характеристики микросервисной архитектуры:
Разделение на автономные сервисы: В микросервисной архитектуре приложение разбивается на небольшие сервисы, каждый из которых отвечает за определенный функционал. Каждый сервис разрабатывается, развертывается и масштабируется независимо от других сервисов. Это позволяет командам разработчиков работать параллельно и обновлять только необходимые сервисы без необходимости вносить изменения во всё приложение.
Коммуникация через сетевые протоколы: Микросервисы взаимодействуют друг с другом через сетевые протоколы, такие как HTTP, REST, messaging и другие. Каждый сервис может иметь свой собственный API и использовать выбранный протокол для взаимодействия с другими сервисами. Это позволяет легко интегрировать различные сервисы и расширять функциональность системы.
Самостоятельность и независимость: Каждый микросервис может быть разработан, развернут и масштабирован независимо от других сервисов. Это дает возможность использовать разные технологии, языки программирования и базы данных для каждого сервиса в зависимости от его требований. Каждый сервис также может быть масштабирован отдельно, чтобы справиться с изменяющейся нагрузкой.
Легкая заменяемость и гибкость: В микросервисной архитектуре каждый сервис может быть заменен или модифицирован без значительных изменений в остальной системе. Это позволяет более гибко реагировать на изменения требований и обеспечивать легкую масштабируемость.
Масштабируемость
Если какой-то сервис испытывает повышенную нагрузку, вы можете масштабировать только этот сервис, не затрагивая другие части приложения.
Гибкость и независимость разработки
Разработчики могут использовать разные технологии и практики для каждого сервиса в зависимости от его конкретных потребностей.
Легкость замены и обновления
Замена или обновление одного микросервиса не влияет на остальные части приложения.
Сложность управления
Управление множеством независимых сервисов может быть сложным. Необходимы инструменты для мониторинга, развертывания и управления версиями.
Затраты на межсервисное взаимодействие
Микросервисы взаимодействуют между собой через сеть, что может вести к дополнительным накладным расходам и ухудшению производительности.
Сложность обеспечения целостности данных
При наличии множества сервисов, управление целостностью данных становится сложным и возникают проблемы с согласованностью, и обменом данных между сервисами.
Высокие затраты на начальное развертывание
Создание инфраструктуры для микросервисной архитектуры, включая системы управления контейнерами и может потребовать значительных временных и финансовых затрат.
Ваше приложение представляет собой совокупность слабо связанных друг с другом функций или сервисов (яркие примеры - мобильные банки, Яндекс Go), где каждый сервис может развиваться независимо.
Сервисы и функции вашего приложения регулируются разными заказчиками или бизнес подразделениями.
Вы пришли к тому, что ваше текущее монолитное приложение написано сложно, неоптимально и, возможно, на устаревшем стеке, так что что его сопровождение и развитие стоит очень дорого. Вы решаете, что нужно постепенно выделять из него функции, проверять их и начинать эксплуатировать.
Сервисы вашего приложения имеют разные нефункциональные требования и обеспечивать соответствие им всему приложению дорого и сложно.
Исчтоники: