Технологии

Разделяй и властвуй: где и как лучше использовать монолит и микросервисы

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

Команда is*hosting 2 фев 2023 2 мин
Разделяй и властвуй: где и как лучше использовать монолит и микросервисы

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

Проектировать изначально или переходить по необходимости: монолит и микросервисы

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

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

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

Монолит или микросервисы: когда нужно переходить?

микросервисы против монолита

По сути, микросервисы - это наборы контейнеров. Итак, попробуем разобраться, всегда ли работают преимущества микросервисов перед монолитами, и когда именно стоит выполнять этот переход.

  • Необходимость разделения между разными серверами

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

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

  • Повышение уровня безопасности

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

  • Необходимость разделения на составные части по функциям

Если требуется приложение разделить на составные части или небольшие приложения, то лучше использовать микросервисы. Например, Google Карты, Google Classroom и Google Диск не имеет смысла держать «в одной корзине».

  • Отказоустойчивость

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

VPS

Виртуальные приватные серверы - быстрые NVMe диски, 22 страны, надежная инфраструктура.

Тарифы
  • Упрощение поддержки

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

  • Упрощение разработки и тестирования

Когда невозможно разделить код на отдельные библиотеки, лучший вариант – обратиться к микросервисам. Если же библиотеки спасают положение, то целесообразнее использовать именно такое решение. Однако микросервисы уверенно выиграют гонку на время разработки. Здесь приложение намного проще разделить между командами или исполнителями, разбить на задачи. При разработке монолита лучше выполнять все работы поэтапно.

Где и как разделить монолит на микросервисы?

где размещать микросервисы

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

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

Выделенный сервер

Бесперебойная работа, высокая производительность и удобная настройка - все для вас.

Тарифы