Запуск проекта

Микросервисы
нужны ли
они всем

Микросервисы — популярная архитектура, но не лекарство от всего. Разбираем, что это, какие плюсы и минусы показала практика Shopify, Segment и Prime Video и как понять, нужны ли они вашему магазину или B2B-порталу.

Обновлено 20 октября 2026 · Источники — на английском, со ссылками

На данных
140+
сервисов набралось у Segment, прежде чем команда вернулась к одному [4]
1
инженер разворачивает систему Segment за минуты после объединения. Раньше правка общей библиотеки требовала выкатывать все 140+ сервисов [4]
1000+
разработчиков больше десяти лет пишут код Shopify. Даже его не раздробили на микросервисы, а сделали модульным монолитом [5]
90%
снижения затрат сообщила команда Prime Video, объединив сервисы мониторинга в одно приложение [7]

Коротко

  • Микросервисы — стиль, при котором приложение собрано из небольших сервисов: каждый работает в своём процессе, отвечает за свою бизнес-функцию и разворачивается независимо [1].
  • У них есть цена: распределённая система, согласованность данных, развёртывание и мониторинг многих сервисов. Мартин Фаулер называет её «премией за микросервисы» [1][2].
  • Окупается она, когда система слишком велика и сложна для одного приложения: большие команды, независимо развивающиеся функции, разная нагрузка на части системы [2].
  • Большинство успешных микросервисных систем начиналось с монолита, который вырос, а не с микросервисов с нуля [3]. Сэм Ньюман, автор книги о микросервисах, говорит, что они не должны быть выбором по умолчанию [8].
  • Для большинства интернет-магазинов и B2B-порталов достаточно хорошо структурированного монолита. Важнее другое: чтобы платформа была готова к переходу, когда он понадобится.

Это обзор опубликованных инженерных материалов и нашего опыта, а не универсальное правило. Для вашего проекта решение зависит от нагрузки, команды и планов роста.

Три способа собрать систему

01

Монолит

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

02

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

Набор небольших независимых сервисов по бизнес-функциям: каталог, корзина, поиск, обмен с 1С. Каждый можно развернуть, масштабировать и обновлять отдельно, у каждого может быть свой стек и хранилище [1]. Взамен — цена распределённой системы.

Лучшее из двух

Модульный монолит с поддержкой микросервисов

Одно приложение с модулями по бизнес-функциям: у каждого чёткий интерфейс и свои данные. Просто запускать и менять, как монолит, а когда нагрузка или команда вырастут, нужный модуль выносится в самостоятельный сервис без переписывания всего проекта [3][5]. Так устроена AXIOMA: платформа собирается из модулей под проект, а её архитектура поддерживает микросервисы.

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

01

Масштабирование по частям

Если поиск или обмен с учётной системой нагружены сильнее остальных, масштабируют только их, а не всё приложение целиком [2].

02

Независимые релизы

Сервис разворачивают отдельно: правка корзины не требует выпускать весь сайт. Это снимает очередь на общий релиз, когда команд несколько [1].

03

Изоляция отказов

Сбой одного сервиса не обязан останавливать остальные. У Segment именно это стало причиной выбрать микросервисы: медленный партнёр больше не задерживал всех [4].

04

Свобода технологий

Для каждого сервиса можно выбрать подходящие язык и хранилище, а команды могут развивать свои части независимо [1].

Минусы: цена микросервисов

01

Распределённая система

Вызов по сети дороже вызова внутри процесса, а сбои сети и сервисов становятся обычным делом, их нужно предусматривать [1].

02

Согласованность данных

Распределённые транзакции сложны, поэтому данные согласуются «в конечном счёте», а ошибки исправляют компенсирующими операциями [1].

03

Эксплуатация

Нужны автоматическое развёртывание, мониторинг и разбор сбоев на многих сервисах. Без этого команда замедляется [1][2].

04

Рост числа сервисов

У Segment каждый новый партнёр добавлял сервис и очередь, их стало больше 140. Общие библиотеки разошлись по версиям, а правка общего кода превращалась в развёртывание десятков сервисов [4].

05

Границы трудно угадать

Хорошие и устойчивые границы между сервисами сложно провести в начале, а переносить функции между сервисами труднее, чем внутри одного приложения [3].

06

Нужны навыки команды

Результат сильно зависит от опыта: сложность не исчезает, а может переехать в менее заметные связи между сервисами [1].

Что показала практика

  • Segment (2018): обратно к одному сервису. Микросервисы появились не зря: у каждого партнёрского направления был свой сервис и очередь, и медленный партнёр не тормозил остальных. Но по мере роста до 140+ сервисов три инженера почти всё время поддерживали систему, а изменения в общих библиотеках стали дорогими. Команда собрала код в один сервис и один репозиторий: развёртывание заняло минуты. Цена: слабее изоляция отказов, один сбой может затронуть всех [4].
  • Shopify (2019): модульный монолит. Кодовая база, выросшая за десять лет и написанная более чем тысячей разработчиков, стала слишком связанной: правка расчёта налогов могла сломать расчёт доставки. Вместо микросервисов команда оставила один код и одно развёртывание, но выстроила в нём компоненты по бизнес-доменам: у каждого свой публичный интерфейс и свои данные. Это дало возможность заменить налоговый движок, что раньше было почти невозможно [5].
  • Prime Video (2023): когда сервисы мешают одной задаче. Команда сообщила, что при переходе сервиса мониторинга качества видео с распределённой схемы на единое приложение затраты на инфраструктуру упали больше чем на 90%. Это относится к одному сервису и особенностям его нагрузки, а не ко всему Prime Video [7].

Вывод не в том, что микросервисы плохие. Они дают результат, когда решают реальную проблему и когда команда умеет с ними работать; без этого сложность съедает выгоду.

Когда нужны микросервисы, а когда достаточно монолита

Микросервисы стоит рассмотреть, если

  • монолит стал настолько большим, что его трудно менять и разворачивать [2];
  • части системы нагружены очень по-разному, например поиск и каталог в пики распродаж;
  • несколько команд мешают друг другу общим релизом [2];
  • функции развиваются в разном темпе и им нужна независимая жизнь;
  • есть автоматизированное развёртывание, мониторинг и команда с опытом [1].

Лучше остаться на монолите, если

  • это один магазин или портал, команда небольшая, нагрузка предсказуема;
  • продукт ещё ищет свою модель, и границы модулей неясны [3];
  • нет автоматического развёртывания и мониторинга [2];
  • главная причина «так принято»: микросервисы не должны быть выбором по умолчанию [8];
  • проблемы лежат в медленном коде или базе, а не в архитектуре: их решает оптимизация.

Как переходить безопасно

01

Начать с хорошего монолита

Один код, но с модулями по бизнес-доменам и чёткими интерфейсами. Так границы проверяются на практике, пока их ещё дёшево менять [3][5].

02

Выносить по одному сервису

Брать ту часть, где есть реальная боль: нагрузка, частые независимые релизы, отдельная команда. Остальное оставлять в ядре [3].

03

Не переписывать с нуля

Шаблон «душитель» (strangler): новые компоненты растут рядом со старой системой и постепенно забирают на себя её функции, пока старую можно не отключить. Каждый шаг уже приносит пользу [6].

04

Сначала автоматизация

Развёртывание, тесты и мониторинг должны быть готовы до того, как сервисов станет много, иначе они растут быстрее, чем команда успевает их поддерживать [1][4].

Шаг 1
Монолит
Один код,
одна база

Монолит

Один код и одно развёртывание: просто запускать и менять.

Шаг 2
Модульный монолит
КаталогКорзинаПоискЗаказыОбмен 1СКабинет

Модули с границами

Чёткие интерфейсы и свои данные у каждого модуля. Для многих проектов можно остановиться здесь.

Шаг 3
Ядро
КаталогКорзинаЗаказыОбмен 1СКабинет
Поиск

Первый сервис

Выносим модуль, где есть реальная боль: нагрузка или отдельная команда.

Шаг 4
Ядро
КаталогЗаказыКабинет
ПоискКорзинаОбмен 1С

Ядро и сервисы

Сервисов ровно столько, сколько оправдано нагрузкой и командой.

На каждом шаге получается рабочая версия, продажи не останавливаются. Переход не обязателен: шаги 1–2 подходят большинству магазинов и порталов.

Наш подход и AXIOMA

  • Мы не навязываем микросервисы. Начинаем с задачи: нагрузка, команда, планы роста. Если хватает хорошо структурированного монолита, мы не усложняем архитектуру.
  • AXIOMA ECOM и AXIOMA B2B построены так, что архитектура поддерживает микросервисы: платформа готова к микросервисному внедрению, когда оно действительно нужно. Витрину, поиск, корзину и другие модули можно выносить в самостоятельные сервисы по мере роста нагрузки и команды, без переписывания всего проекта.
  • Для существующих проектов делаем это постепенно: выносим модули из монолита по шаблону «душитель», без остановки продаж. Подробнее о том, как мы разрабатываем highload-проекты, — на странице «Разработка и интеграция».

Нужны ли микросервисы вам: восемь вопросов

  1. Есть ли у вас части системы, которые нагружены заметно сильнее остальных?
  2. Мешают ли общие релизы нескольким командам?
  3. Сколько времени занимает выпуск небольшой правки: часы или недели?
  4. Есть ли автоматическое развёртывание и мониторинг? Сможете ли вы разобраться в сбое среди десятка сервисов?
  5. Понятны ли границы бизнес-функций: что можно выделить, не разрывая данные?
  6. Может ли помочь оптимизация кода, кэша и базы вместо смены архитектуры?
  7. Есть ли в команде опыт распределённых систем или вы готовы его нанять?
  8. Какую проблему решает переход, и как вы поймёте, что она решена?

Если на большинство вопросов ответ «нет» или «не знаем», начните с аудита и модульного монолита. Если «да» — разберём, какие части выносить первыми.

Справка

Что такое микросервисы

Микросервисы — архитектурный стиль, при котором приложение строят как набор небольших сервисов. Каждый работает в своём процессе, общается с остальными лёгкими средствами (чаще всего через HTTP API), организован вокруг бизнес-функции и разворачивается независимо от других [1]. Противоположный подход — монолит: одно приложение с общим кодом и общим развёртыванием.

Кто такой Martin Fowler

Главный научный сотрудник (Chief Scientist) компании ThoughtWorks, работает в ней с 2000 года. Автор книги «Refactoring» (1999) и один из соавторов Манифеста гибкой разработки (2001). Статья «Microservices», написанная им вместе с Джеймсом Льюисом в 2014 году, — одна из самых цитируемых работ по теме, на неё ссылаются как на определение термина [9].

Откуда факты

  1. James Lewis, Martin Fowler — Microservices (martinfowler.com), 2014 ↗
  2. Martin Fowler — Microservice Premium, 2015 ↗
  3. Martin Fowler — Monolith First, 2015 ↗
  4. Segment Engineering — Goodbye Microservices: From 100s of problem children to 1 superstar, 2018 ↗
  5. Shopify Engineering — Deconstructing the Monolith: Designing Software that Maximizes Developer Productivity, 2019 ↗
  6. Martin Fowler — Strangler Fig Application ↗
  7. DevClass — Reduce costs by 90% by moving from microservices to monolith: Amazon internal case study (пересказ материала Prime Video Tech, 2023) ↗
  8. The Register — Microservices guru says they should be a last resort (QCon London, Sam Newman), 2020 ↗
  9. ThoughtWorks — Martin Fowler, профиль (должность, книги, Манифест гибкой разработки) ↗

Частые вопросы

  • Нет. Для большинства магазинов и B2B-порталов хватает хорошо структурированного монолита: микросервисы добавляют сложность и окупаются, когда система слишком велика или нагружена для одного приложения.

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

  • Да, если архитектура изначально модульная: сервисы выносят постепенно, по шаблону «душитель», без остановки продаж. Платформа AXIOMA готова к такому переходу.

  • Сами по себе нет: вызовы по сети дороже вызовов внутри приложения. Они помогают масштабировать нагруженные части отдельно. Если сайт медленный из-за кода, кэша или базы, начните с оптимизации.

  • Одно приложение, разделённое на модули по бизнес-функциям: у каждого чёткий интерфейс и свои данные. Один код и одно развёртывание, но без хаоса зависимостей. Именно так поступил Shopify.

— Аудит архитектуры

Разберём, нужны ли
микросервисы вашему проекту