Подтвердить что ты не робот

Микросервисы: какие плюсы и минусы?

Каковы преимущества и недостатки использования микросервисов по сравнению с альтернативными архитектурами? Существует ли правило, когда следует использовать микросервисы?

4b9b3361

Ответ 1

Pros


Сэм Ньюмен в Building Microservices перечисляет основные преимущества Microservices следующим образом:

Неоднородность технологии

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

Упругость

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

масштабирование

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

Простота развертывания

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

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

Организационное выравнивание

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

компонуемости

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

Оптимизация для замены

Если вы работаете в организации среднего или крупного масштаба, скорее всего, вам известно о некоторых большая, неприятная система устаревания, сидящая в углу. Никто не хочет прикасаться. Один, который имеет жизненно важное значение для того, как работает ваша компания, но это может быть написано в некоторых нечетных Fortran вариант и работает только на оборудовании, которое достигло конца жизни 25 лет назад. Почему не было были заменены? Вы знаете, почему: слишком большая и рискованная работа.

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

Против


Наиболее важным недостатком Microservices является то, что у них есть все связанные с этим сложности распределенных систем, и хотя мы много узнали о том, как управлять распределенными систем, это все еще сложно. Если вы приедете с точки зрения монолитной системы, вам придется намного лучше справляться с развертывания, тестирования и мониторинга, чтобы разблокировать преимущества. Вы будете также нужно думать по-другому о том, как вы масштабируете свои системы и упругий. Не удивляйтесь, если такие вещи, как распределенные транзакции или теорема CAP начните давать вам головные боли!

Заключительные замечания


Просто процитируйте Мартин Фаулер:

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

Ответ 2

Про микро-услуги - ваши приложения очень хорошо масштабируются. Вы делите свое приложение на небольшие услуги. Трудно решить, какие ограниченные услуги вам понадобятся. Но как только вы это сделаете, вы можете легко масштабировать определенные сервисы до нескольких раз (услуги, которые на самом деле получают наибольшую нагрузку), а не для масштабирования всего вашего приложения.

Еще одним преимуществом является то, что новым разработчикам проще начинать создавать новые функции для вашего приложения, поскольку все разделено на эти отделенные службы → У каждой службы есть своя (небольшая) база кода.

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

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