Небольшие однофункциональные приложения — так называемые микросервисы — можно развертывать, масштабировать и тестировать независимо друг от друга [1], что вполне можно считать естественным продолжением сервисной концепции. Разделение монолитных систем, модули которых не могут выполняться независимо друг от друга, на гранулярные, взаимодействующие с помощью сообщений (например, через API на основе RPC или веб-сервисы REST), позволяет организациям ускорять выпуск продуктов на рынок. Agile-команды могут строить стратегию своей работы, основываясь на микросервисах [2], так как, что они по определению разрабатываются независимо друг от друга [3].

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

Как бы то ни было, методы, основанные на микросервисах, активно внедряются многочисленными компаниями, включая Amazon, Deutsche Telecom, LinkedIn, Netflix, SoundCloud, Uber, Verizon и крупные онлайн-издания. Нередко с помощью микросервисов модернизируют унаследованные приложения, с помощью рефакторизации разделяя монолитную систему на микросервисы, что обеспечивает инкрементальную модернизацию унаследованного ПО и потенциально снижает риски по сравнению с разработкой на базе микросервисов всей системы с нуля.

Технологии для микросервисов

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

В таблице приведен обзор существующих микросервисных технологий [1, 3] вместе с их рейтингом, построенным на основе реального опыта применения.

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

Переход на микросервисы

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

Будьте готовы к организационным изменениям. Микросервисы потребуют перехода на новую корпоративную культуру.

Изучите систему. Выясните зависимости с помощью специальных средств, таких как Retrace, Dynatrace, SchemaCrawler и т. п., либо сделайте это вручную.

Формализуйте архитектуру (инструменты, фреймворки и т. д.). Не откладывайте выбор платформы...

Это не вся статья. Полная версия доступна только подписчикам журнала. Пожалуйста, авторизуйтесь либо оформите подписку.
Купить номер с этой статьей в PDF