Микросервисная архитектура: плюсы и минусы, где лучше использовать, почему выбираем её
Мы выбираем микросервисы

Представьте себе коммуналку, где все обитают в одной квартире, и многоквартирный дом, когда у каждого своё жильё. 

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

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

Зачем нужны микросервисы

Это более гибкая архитектура, позволяющая:

  • изменять и дорабатывать отдельно каждый блок;
  • упрощать и ускорять апгрейд продукта;
  • эффективнее распределять мощности;

разделять обязанности в команде — каждый делает своё и не зависит от остальных.

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

Наличие модулей. Каждый из них работает самостоятельно и имеет свою базу данных. Если где-то произойдёт сбой, то он не повлияет на всю систему. А при изменении информации в одном блоке, не нужно корректировать другие. Модули небольшие и запрограммированы на выполнение определённой, узкой задачи.

Связь через API. Хотя блоки независимые, они «общаются» друг с другом, передавая информацию по каналам. А система API — Application Programming Interface — помогает отправлять запросы на сервер, обрабатывать информацию, получать ответы. API можно сравнить с официантом, который передаёт ваши заказы повару и приносит готовые блюда.

Использование разных языков. Блоки почти не связаны между собой, поэтому при разработке можно выбирать те языки, которые наиболее удобны. Например, веб-модули часто пишут на JavaScript, нагруженные модули — на C++ и Go, вычисление и аналитику — на Python.  Но тут стоит отметить, что это отчасти усложняет найм универсальных специалистов для поддержки.

Конкретные библиотеки и фреймворки. Если позволяют условия, можно использовать любые, но есть обязательные, поддерживающие координацию всей системы: 

✔️Docker — для контейнеризации или запуска изолированно от общей среды;

✔️Kubernetes — чтобы управлять контейнерами; 

✔️сервисы для контроля и записи лог-файлов;

✔️CI/CD — для непрерывной интеграции и развёртывания;

✔️Service Discovery — чтобы автоматически находить сервисы.

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

Начнём с преимуществ:

✔️Надёжность. При выходе из строя одного блока, система продолжит работать.

✔️Простота масштабирования. Увеличить мощности можно добавив новые блоки, без перенастройки всей структуры. 

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

✔️Независимое развёртывание — то есть перевод блока из стадии разработки в пользование. 

✔️Большой выбор технологий. Можно использовать любые языки и инструменты.

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

Если говорить о минусах, это:

✔️Сложность контроля. Нужно следить за сотнями, а иногда и тысячами блоков, поэтому много внимания уделяется системам управления и мониторинга.

✔️Разные языки. С одной стороны — это плюс, так как команда при разработке выбирает наиболее удобные и подходящие. Но с другой стороны приходится «соединять» микросервисы между собой, чтобы они работали как единое целое. 

✔️Трудности с развёртыванием — требуются отдельные сервера, а также системы оркестрации и деплоймента.

Кому подходят микросервисы

Микросервисные архитектуры можно использовать везде. Но особенно они востребованы в следующих случаях:

✔️Большой коллектив — группы разрабов занимаются разными микросервисами и нет необходимости синхронизироваться друг с другом.

✔️Объёмный проект — корректировать и обслуживать отдельные блоки гораздо проще, чем монолитную систему.

✔️Продукт с сезонным трафиком — можно быстро масштабироваться, а в непиковое время не платить за дополнительную инфраструктуру.

✔️Приложение, которое требует частого обновления — достаточно наладить только определённый модуль, что экономит время и средства.

Подробнее о микросервисной архитектуре спрашивайте у нашей команды. Честно расскажем и оценим, насколько такая система подходит вам.


Мы выбираем микросервисы
Зачем нужны микросервисы
Особенности микросервисной архитектуры
Плюсы и минусы микросервисов
Кому подходят микросервисы