Монолит тормозит при пиковых нагрузках. Вы запускаете мобильное приложение и B2B-портал — каждому нужен свой интерфейс, но общий каталог. Типичная ситуация: магазин на WooCommerce или Magento, время рендеринга страницы каталога > 2 секунд, команда frontend блокирована релизами backend. Мы сталкивались с этим не раз. Headless Commerce — инженерное решение, разделяющее backend (каталог, заказы, платежи) и frontend (витрину). Backend становится API-слоем, frontend — независимым приложением на React, Vue, Next.js или мобильным клиентом. Это не про тренды, а про конкретные trade-offs. Гибридная архитектура сохраняет часть монолита, если полный headless избыточен.
После миграции метрики меняются кардинально: TTFB для статичных страниц каталога падает с 500 мс до 20 мс (CDN), LCP — с 3 с до 1 с. Наш опыт: более 30 проектов по переводу магазинов на headless, средний прирост конверсии — 15–25% за счёт скорости. Это окупает миграцию за 6–12 месяцев. Экономия на хостинге — до 40% за счёт снижения нагрузки на серверы. Оцените свой проект — свяжитесь с нами для предварительного аудита.
Какие проблемы решает headless?
- Медленная загрузка страниц. Монолит рендерит каждую страницу на сервере, тратя время на цикл запрос-ответ PHP. После headless — статический HTML из CDN.
- Зависимость frontend от backend. Команда дизайнеров не может выкатить новую страницу без релиза ERP-системы. Headless даёт независимые деплои.
- Несколько каналов продаж. Один backend обслуживает web-витрину, мобильное приложение и торговые терминалы.
- Высокая стоимость масштабирования. При росте нагрузки проще скейлить frontend-слой статикой, чем весь монолит.
Почему миграция на headless — это инвестиция?
Хотя миграция требует ресурсов, она окупается за счёт:
- Независимого деплоя — фичи frontend выходят без блокировок backend.
- Скорости загрузки — конкуренты не догонят, если ваш магазин грузится быстрее в 3 раза.
- Возможности A/B тестировать витрину с помощью Edge Middleware.
- Дополнительный доход от прироста конверсии и экономия на инфраструктуре (до 40%) делают миграцию выгодной.
Как мы проводим миграцию
Фаза 1: Аудит и API-дизайн (2–3 недели)
Составляем полную карту сущностей: товары, категории, заказы, клиенты, скидки. Фиксируем все кастомные поля и нестандартную логику. После аудита пишем OpenAPI 3.0 спецификацию — это контракт, по которому frontend-команда начинает работу сразу.
Фаза 2: Построение API-слоя (4–8 недель)
Выбираем headless-платформу. Чаще всего используем Bagisto (Laravel) с пакетом bagisto/graphql-api или Medusa.js для Node.js-стека. Пример запроса каталога:
query GetProducts($categoryId: ID, $page: Int) { products( categoryId: $categoryId page: $page limit: 24 ) { data { id sku name price images { url altText } variants { id price attributes { code value } } } paginatorInfo { currentPage lastPage total } } } Фаза 3: Strangler Fig — постепенная замена
Вместо одномоментного переключения — параллельное развёртывание. Nginx проксирует часть запросов на новый API, часть на старый монолит. Каждая страница мигрируется отдельно: сначала каталог, потом checkout, личный кабинет. Этот подход описан Мартином Фаулером. Конфигурация nginx:
location /api/v1/ { proxy_pass http://new-api-backend:8000; } location / { proxy_pass http://old-monolith:80; } Постепенно доля трафика на монолит снижается до нуля.
Фаза 4: Миграция данных (3–5 недель)
Если меняется платформа, например с WooCommerce на Bagisto, пишем скрипты импорта. Данные выгружаются чанками через REST, обрабатываются очередями. Каждый этап логируется для rollback.
Фаза 5: Frontend-приложение (6–10 недель параллельно)
Строим витрину на Next.js с ISR. Пример страницы товара:
// pages/products/[slug].tsx export async function getStaticProps({ params }) { const product = await commerceClient.getProduct(params.slug); return { props: { product }, revalidate: 3600, }; } Корзина и авторизация живут в API. Токен корзины хранится на клиенте:
const useCart = () => { const [cartToken, setCartToken] = useLocalStorage('cart_token', ''); const addToCart = async (productId: string, qty: number) => { const response = await api.post('/api/v1/checkout/cart/add', { product_id: productId, quantity: qty, }, { headers: cartToken ? { 'cart-token': cartToken } : {}, }); if (response.data.token) { setCartToken(response.data.token); } }; }; Что входит в работу
- Аудит текущего монолита и кастомной логики
- API-дизайн с OpenAPI 3.0 спецификацией
- Развёртывание headless backend (Bagisto / Medusa / ваш выбор)
- Разработка frontend-витрины (Next.js / Nuxt / React)
- Миграция данных с валидацией и откатом
- Нагрузочное тестирование (до X параллельных пользователей)
- Документация по интеграции и обучение команды
- Поддержка после запуска: 3 месяца гарантии
Как мигрировать на headless: 5 шагов
- Аудит монолита и кастомной логики.
- Проектирование API-контрактов (OpenAPI 3.0).
- Параллельный запуск headless backend (Strangler Fig).
- Постепенное переключение страниц и маршрутов.
- Отключение старого монолита после полной миграции.
Все сроки — от 3 до 5 месяцев в зависимости от сложности. Стоимость рассчитывается индивидуально — для точной оценки свяжитесь с нами.
Сравнение производительности
| Метрика | Монолит (PHP SSR) | Headless (Next.js ISR) |
|---|---|---|
| TTFB (каталог) | 400–800 мс | 20–50 мс (CDN) |
| LCP | 2.5–4 с | 0.8–1.5 с |
| Деплой frontend | С backend | Независимый |
| A/B тестирование | Сложно | Edge Middleware |
Headless выигрывает по скорости в 3–5 раз, что напрямую влияет на конверсию. Если хотите измерить потенциальный прирост для вашего магазина — закажите предварительный аудит.
Дополнительное сравнение платформ
| Платформа | Язык/Фреймворк | Лицензия | Подходит для |
|---|---|---|---|
| Bagisto | Laravel (PHP) | Open source | Кастомизация, B2B |
| Medusa.js | Node.js (Express) | Open source | Современные магазины |
| Vendure | TypeScript (Nest.js) | Open source | Enterprise, гибкость |
Детальный анализ метрик после миграции показывает: снижение TTFB на 90%, LCP — на 60%, INP — на 40% за счёт CDN и статики. Core Web Vitals проходят зелёную зону. Это подтверждает практика наших проектов.
Закажите предварительный аудит, чтобы оценить прирост для вашего магазина.







