site_logo

Что такое микросервисная архитектура: преимущества, недостатки, примеры использования

Highload

Обновлено: 30 сентября 2024

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

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

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

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

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

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

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

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

    Преимущества микросервисов оказались достаточно сильны, чтобы такие крупные корпоративные игроки как Amazon, Netflix или eBay внедрили их в свои системы.

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

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

    Несмотря на трендовость и большое количество плюсов микросервисной архитектуры, она обладает и минусами.

    Особенности эксплуатации приложений с микросервисной архитектурой

    В каком случае уместно использование микросервисной архитектуры

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

    important2.png

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

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

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

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

    Примеры использования микросервисной архитектуры

    Amazon

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

    Netflix

    Стриминговый сервис Netflix разбит более чем на 800 микросервисов. Они отвечают за видео-транскодирование, рекомендации, A/B тестирование интерфейсов и прочие задачи. Гибкость микросервисов позволяет Netflix быстро расширять парк серверов при наплывах трафика и экспериментировать с UI/UX без риска для системы.

    Uber

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

    Выводы

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

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