Добавить в корзинуПозвонить
Найти в Дзене

Искусство выбора: баланс между гибкостью микросервисов и простотой монолита

Эксперт расскажет об опыте компании CUSTIS по разработке приложений на основе микросервисной архитектуры, рассмотрит примеры, где целесообразно её использовать, а в каких проектах этого лучше не делать. В начале 2010-х годов микросервисная архитектура произвела настоящий фурор в области разработки ПО. Тогда казалось, что найден идеальный рецепт для решения проблемы неповоротливости громоздких приложений, когда любое новое требование выливалось в месяцы работы. Но у микросервисов, как и у любого другого подхода, оказались свои плюсы и минусы, своя область применения. В этой статье я расскажу об опыте компании CUSTIS по разработке приложений на основе микросервисной архитектуры, рассмотрю примеры, где целесообразно её использовать, а в каких проектах этого лучше не делать. Плюсы и минусы монолита и микросервисов Микросервисная архитектура предполагает построение приложения как ряда частей, которые разворачиваются независимо друг от друга. Ключевой характеристикой такой архитектуры являет

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

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

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

Плюсы и минусы монолита и микросервисов

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

Ресурсоёмкость

Главный минус микросервисов — необходимость выделения дополнительных ресурсов при работе с ними. Команде требуется значительное время на то, чтобы грамотно разграничить бизнес-области, выделить API, поднять инфраструктуру, которая позволит управлять разворачиванием сервисов и т. п. При разработке монолита затраты на это, как правило, ниже. Однако в долгосрочной перспективе грамотно спроектированные микросервисы позволят легче и дешевле вносить изменения в систему. В ряде случаев для доработок нужно будет погрузиться в работу только одного модуля, что снизит порог входа для новых членов команды.

Параллельная работа

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

Использование под разные проекты

С точки зрения вендора преимущество использования микросервисов состоит в том, что разные части такого приложения могут быть легко заменены под разных клиентов. Например, если двум компаниям необходимы принципиально разные бизнес-процессы в области Х, то вендор напишет два принципиально разных микросервиса, у которых будет одно API, но индивидуальная реализация. Кстати, сами заказчики также могут дорабатывать приложение, заменяя его части.

Взаимодействие частей системы

В микросервисах описание API позволяет верхнеуровнево смотреть на приложение и понимать, как его части взаимодействуют друг с другом. При этом API должно быть универсальным и подходить для реализации разных бизнес-процессов, а его проработка, как правило, требует дополнительных трудозатрат. А ещё могут возникнуть сложности с поддержкой сразу двух API при внесении изменений. В данном случае у работы с монолитом есть преимущество: лёгкое изменение взаимодействия разных частей системы, поскольку они связаны через вызовы функций, а не через API.

Разделение областей ответственности

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

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

Технологическая гибкость

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

Подробнее на it-world.ru