До 10%Рекомендуйте нас и получайте процент за каждого приведённого клиента

Архитектура интернет-магазина: монолит, модульный монолит или микросервисы

Архитектура интернет-магазина на 1С-Битрикс: монолит, модульный монолит и микросервисы

«Нам нужны микросервисы» — фраза, которую всё чаще произносят на старте проекта интернет-магазина, часто не потому, что они реально нужны, а потому что звучит современно. А через год команда тонет в распределённых транзакциях, сетевых сбоях и десяти репозиториях, обслуживая магазин, который спокойно работал бы монолитом. Архитектура — это не про моду, а про соответствие масштабу задачи, и неверный выбор дорого обходится в обе стороны: и переусложнение, и упрощение.

Разберём три подхода к архитектуре интернет-магазина — монолит, модульный монолит и микросервисы — применительно к 1С-Битрикс: где платформа сильна, что реально можно вынести, как highload-редакция и обмен с 1С влияют на выбор, и как принимать решение по фактам, а не по хайпу. Если ваш магазин упёрся в потолок и вы не уверены, что переписывать, начните с аудита и оптимизации 1С.

Коротко

  • Ядро Битрикс монолитно, и для большинства магазинов это не проблема, а преимущество: скорость разработки и целостность.
  • Модульный монолит на D7 — золотая середина: чистые границы модулей без цены распределённой системы.
  • Микросервисы оправданы при реальной потребности в независимом масштабировании и разных командах, а не «на будущее».
  • Чаще всего выигрывает гибрид: монолит Битрикса плюс несколько внешних сервисов для тяжёлых функций.

Почему архитектуру выбирают под задачу

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

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

Монолит: где Битрикс силён

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

Монолит начинает мешать не сам по себе, а когда код в нём захламлён: бизнес-логика в шаблонах, копипаста в обработчиках, отсутствие границ. Тогда проблема не в «монолитности», а в отсутствии структуры — и решается она не микросервисами, а наведением порядка внутри.

Слои приложения на 1С-Битрикс (D7) ЗапросбраузерКомпонентшаблон, логикаAPI-ядро D7бизнес-логикаДанныеинфоблоки, БДСлои разделены: шаблон не лезет в базу напрямую, логика — в ядре D7
Схема: запрос обрабатывает компонент, бизнес-логика живёт в ядре D7, а данные — в инфоблоках. Чёткие слои держат код поддерживаемым и тестируемым.

Модульный монолит на D7

Модульный монолит — это тот же монолит, но с чёткими внутренними границами. Приложение по-прежнему одно, но его логика разделена на модули с ясными интерфейсами, а не размазана по коду. Для 1С-Битрикс это естественно ложится на современный стек D7.

На практике модульный монолит в Битрикс выглядит так: своя бизнес-логика оформлена собственными модулями и сервисами на D7 ORM, с сервисным слоем и чистыми интерфейсами, а не встроена в шаблоны компонентов. Как строить такие модули и работать с данными через ORM, мы подробно разбираем в статьях про разработку модуля Битрикс и D7 ORM.

Практическое правило: прежде чем думать о микросервисах, приведите монолит к модульному виду. Чистые границы внутри дают 80% выгод разделения без 100% цены распределённой системы — и заодно готовят почву для будущего выноса сервисов, если он реально понадобится.

Микросервисы: обещания и цена

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

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

Сравнение трёх подходов

Сведём подходы в таблицу, чтобы увидеть компромиссы наглядно.

КритерийМонолитМодульный монолитМикросервисы
Скорость стартаВысокаяВысокаяНизкая
Простота эксплуатацииВысокаяВысокаяНизкая
Границы кодаРазмытыеЧёткиеЖёсткие
Независимое масштабированиеНетЧастичноДа
Целостность данныхПростаяПростаяСложная
Кому подходитБольшинствоРастущие проектыКрупные с командами

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

Гибрид: монолит плюс сервисы вокруг

На практике самый частый и здравый выбор для растущего магазина на Битрикс — гибрид. Ядро остаётся монолитным (каталог, корзина, заказы, обмен с 1С), а вокруг него появляются отдельные сервисы для функций, которые выигрывают от изоляции.

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

Highload-редакция и данные

Прежде чем дробить систему, стоит вспомнить, что сам Битрикс даёт инструменты для больших нагрузок. Highload-редакция и highload-блоки предназначены для работы с большими объёмами данных в рамках монолита.

Highload-блоки позволяют хранить крупные справочники и пользовательские данные в отдельных таблицах с оптимизированными выборками, поддерживают шардирование и не грузят основную структуру инфоблоков. Во многих случаях проблема, которую хотят решить микросервисами, на деле решается правильной работой с данными: подходящими индексами, highload-блоками, кэшированием и композитным сайтом. Это дешевле и надёжнее, чем распределённая архитектура. Как масштабируется инфраструктура под Битрикс, мы разбираем в статье про инфраструктуру и BitrixVM.

Обмен с 1С как узкое место

В магазине на Битрикс обмен с 1С — один из самых нагруженных узлов, и он сильно влияет на архитектуру. Большие выгрузки товаров, остатков и заказов способны конкурировать за ресурсы с посетителями сайта, если обмен не изолирован.

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

Как принимать решение

Выбор архитектуры — это ответы на несколько честных вопросов, а не следование моде.

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

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

Путь эволюции архитектуры

Здоровая архитектура развивается постепенно, отвечая на реальные потребности, а не строится «на вырост» сразу сложной.

  1. Структурированный монолит. Стартуем на Битрикс с чистой логикой в модулях и сервисах D7.
  2. Оптимизация данных. Индексы, highload-блоки, кэш, композит — снимают большинство проблем масштаба.
  3. Вынос узких мест. Тяжёлый обмен и фоновые задачи уходят в очереди и отдельные процессы.
  4. Гибрид с сервисами. Поиск, рекомендации, интеграции выносятся в самостоятельные сервисы через API.
  5. Микросервисы по необходимости. Только при реальной потребности в независимом масштабировании и командах.

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

Частые ошибки

Чек-лист выбора

  1. Масштаб оценён. Известны реальные объёмы и обоснованный прогноз, а не фантазии.
  2. Узкое место найдено. Профилирование показало, что именно тормозит.
  3. Монолит структурирован. Логика в модулях и сервисах D7, а не в шаблонах.
  4. Данные оптимизированы. Индексы, highload-блоки, кэш и композит задействованы.
  5. Обмен изолирован. Тяжёлый импорт с 1С вынесен в фон и очереди.
  6. Вынос обоснован. Каждый вынесенный сервис решает конкретную измеримую проблему.
  7. Команда потянет. Сложность архитектуры соответствует размеру и зрелости команды.
  8. Есть путь эволюции. Систему можно развивать поэтапно, не переписывая целиком.

Вывод

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

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

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

Битрикс — это монолит, и его нельзя разбить на микросервисы?

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

Что такое модульный монолит простыми словами?

Это монолит, аккуратно разделённый внутри на модули с чёткими границами, но по-прежнему разворачиваемый и работающий как единое приложение. В контексте Битрикс это значит: своя бизнес-логика оформлена как отдельные модули и сервисы на D7, с чистыми интерфейсами между ними, а не размазана по шаблонам и обработчикам. Такой код проще поддерживать и при необходимости частично выносить наружу.

Когда переходить к микросервисам, а когда не стоит?

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

Как highload-редакция Битрикс влияет на выбор архитектуры?

Highload-редакция и highload-блоки помогают справляться с большими объёмами данных и нагрузкой в рамках самого Битрикс: шардирование, отдельные хранилища для больших справочников, оптимизация выборок. Это часто снимает необходимость в микросервисах: многие проблемы масштаба решаются внутри монолита правильной работой с данными, кэшем и инфраструктурой, а не дроблением на сервисы.

Можно ли вынести каталог или корзину из Битрикс в отдельный сервис?

Технически да, но это дорого и рискованно, потому что каталог, корзина и заказы в Битрикс тесно связаны с ядром и обменом с 1С. Чаще выносят не ядро, а периферию: поиск, персонализацию, аналитику, интеграционные шлюзы. Вынос ядровых сущностей оправдан только на действительно крупных проектах с ясной выгодой, и делается поэтапно через API, а не разом.

Как обмен с 1С связан с архитектурой сайта?

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

С чего начать, если магазин растёт и упирается в потолок?

С аудита и профилирования, а не с переписывания на микросервисы. Нужно понять, где именно узкое место: база, неоптимальный код, кэш, инфраструктура или конкретная функция. Часто оказывается, что проблему решают индексы, кэширование, composite и вынос одной тяжёлой операции в фон. К дроблению архитектуры переходят, только когда исчерпаны более дешёвые способы.

Поделиться:

Не уверены, какая архитектура нужна вашему магазину?

Оценим нагрузку и данные, найдём реальные узкие места и предложим решение по масштабу, а не по хайпу.

Аудит и оптимизация 1С

Редакция B2Bsite

Команда B2Bsite. С 2014 года разрабатываем и масштабируем магазины на 1С-Битрикс: структурированные монолиты, highload-нагрузки и вынос тяжёлых функций в сервисы.

← Все статьи блога