TeamLead
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Микросервисы

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

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

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

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

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

  • Удобная масштабируемость проектов, которая требует меньше трудозатрат.
  • Улучшенная безопасность программы, за счет того, что каждый отдельный модуль — это самостоятельный элемент программы. В случае выхода из строя или атаки на какой-нибудь модуль, вся остальная часть программы будет работать и находиться в безопасности.
  • Отсутствие приверженности к определенному стеку технологий. Фактически, каждый отдельный модуль программы может быть разработан разными людьми и на разных языках программирования, что практически нереально при монолитном подходе.
  • Более легкое обслуживание и понимание проекта. К примеру, если приходит в проект новый разработчик, то ему нужно изучить лишь модуль, за который он будет отвечать и над которым будет работать. Ему вовсе не нужно изучать весь код программы.
  • Повторная реализация компонентов. То есть, разработав приложение на микросервисной архитектуре, вы в дальнейшем можете использовать его отдельные модули в других своих разработках.

Недостатки микросервисной архитектуры

  • Сложная распределенная система. Наличие множества отдельных модулей влечет за собой дополнительную сложность в организационном и архитектурном плане. То есть усложняется контроль над различными командами разработчиков, а также само развертывание программного продукта.
  • Усложненное тестирование. Потому что для начала нужно будет тестировать каждый модуль отдельно, а потом совместную функциональность всех модулей.
  • Приложения на микросервисной архитектуре менее производительны, чем их аналоги на монолитной архитектуре за счет наличия множества баз данных и множества более «длинных» путей связи между отдельными модулями.

Использование

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

Микросервисная архитектура рекомендуется при разработке крупных и сложных интернет-сервисов, которым свойственна работа в режиме 24/7 и с большим количеством пользователей онлайн.

Темы для изучения