Микросервисная архитектура

Микросервисы — это архитектурный подход к разработке, который разбивает приложение на отдельные и независимые (микро)сервисы, каждый из которых отвечает за определенную функциональность. Эти сервисы тесно взаимодействуют друг с другом и для конечного пользователя выглядят как единое целое. Возьмем, к примеру, Netflix. Интерфейс приложения позволяет пользователю входить в учетную запись, искать видео и просматривать их. За все эти действия, скорее всего, отвечают меньшие по размеру сервисы, каждый из которых фокусируется на одной задаче. Например, на аутентификации пользователя, поиске видео или его воспроизведении в браузере.

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

Какую проблему решает

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

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

Как именно решает проблему

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


Последнее изменение July 31, 2024: [ru] Translate microservices-architecture.md (#3254) (c6b6e63)