Безголовая (Headless) архитектура построения eCommerce

10.11.21

Интеграция - WEB-интеграция

Обобщение материалов по безголовой архитектуре построения eCommerce.

Мне самому интересна модульная архитектура в e-commerce. По большей частью сталкиваюсь с обменом с Битрикс в формате CML с ограничением по однопоточности, приделывание к нему REST API, навешиванием модулей общую ситуацию по сложности доработок и отставанием в технологиях не компенсируют.

При чем здесь 1С? В моем понимании 1С это back-backend, от развития его инструментария API есть больше шансов получить синергию при использовании его в связке с современным стеком технологий.

К информации пришел через анализ решения Vue Storefront, который в v1 был как обертка для magento, в текущей v2 позиционирует себя как headless (безголовое) и не зависящее от бэкенда прогрессивное веб-приложение для электронной коммерции (PWA).

 

Про headless архитектуру

Выдержки из статьи "Что такое безголовая электронная коммерция? Умное руководство по безголовому переходу" (ссылка).

Определение безголовой электронной коммерции

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

 

 

Внешний интерфейс, конечно, - это в основном все, что вы видите при входе на веб-сайт. Серверная часть - это ваша платформа для обработки электронной коммерции, которая хранит данные и управляет ими за кулисами.

И вот тебе загадка: Если вы разделите голову и тело, какая часть будет отвечать за мышление? 

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

 

Отличия от монолитного подхода

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

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

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

Архитектура безголовой торговли решает эту проблему, разделяя монолиты на более мелкие и гибкие части, которые взаимодействуют друг с другом через API.

Примечание: Система построенная на микросервисах имеет свои архитектурные плюсы и минусы. В контексте eCommerce при относительно слабой связанности (сервисы синхронно не обслуживают одну транзакцию) часть минусов нивелируется.

 

Формат обмена

В архитектуре электронной коммерции без головы интерфейс и серверная часть взаимодействуют через интерфейс прикладного программирования (API). Это набор кодифицированных команд. Если вы помните звуковые сигналы R2-D2, это эквивалент этого. API является точным и простым для понимания машиной.

“Некоторые из наших клиентов просто делают заказ от машины к машине для случаев использования В2В, и им даже не нужен интерфейс, потому что это робот, размещающий заказ с завода”

Конечно, как человек, вы можете взаимодействовать с ним напрямую, отправляя команды через командную строку. Это все равно что свистеть R2-D2 на его собственном роботизированном языке.

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

 

 

Преимущества безголовой архитектуры

Доступ к различным интерфейсам

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

На переднем конце находится почти весь пользовательский опыт. Опыт работы с клиентами-это то, где вы создаете свое конкурентное преимущество.

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

Например, с отделенным задним концом вы можете:

  • Включите покупки с помощью домашних помощников, таких как Google Home.
  • Разверните несколько магазинов, подключенных к одной и той же серверной части.
  • Обеспечьте доступ к устройствам интернета вещей, таким как умные часы, умные холодильники и так далее.
  • Легко подключайтесь к внешним рынкам, таким как Amazon.

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

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

 

 

Простой способ замены элементов

Использование API для подключения внешнего интерфейса означает, что вы можете легко заменить его. Безголовый подход обычно обеспечивает более широкую открытость для микросервисов. Это означает, что вы можете подключить дополнительные службы и функции к своей архитектуре.

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

  • Нужен быстрый фронт PWA? Повесьте на него Vue Storefront.
  • Нужна программа лояльности? Подключите Open Loyalty platform.
  • Вам нужно уточнить информацию о вашем продукте? Подключите Pimcore или Akeneo.
  • Нужна поисковая система? Просто добавьте Algolia или Constructor.io.
  • Опыт работы с клиентами в вашем магазине нуждается в завершающем штрихе? Добавьте такие решения, как Contentful или Contentstack.

Выдержка из статьи "Архитектура без головы: Краткое иллюстрированное руководство от Divante" (ссылка)

 

Различные способы достижения безголовой архитектуры

  • commercetools (ссылка) - это платформа, которая была создана как решение только для API. Это делает его безголовым по определению.
  • Spryker (ссылка) добавил API в какой-то момент во время своей разработки для поддержки безголового подхода.

В конце концов, платформы, построенные с использованием только API или подходов, основанных на API, лучше подходят для безголовых решений, потому что:

  • Все их функции доступны через API.
  • API обычно работает лучше.
  • API получают более широкую поддержку, включая REST API и GraphQL.
  • Структура API лучше продумана и свободна от ограничений, которые появляются, когда мы впоследствии добавляем функциональные возможности API.
  • Эти решения обычно имеют лучшую политику управления версиями API и обратную совместимость.
    • commercetools не создает новые версии API. Он обещает не изменять и не удалять существующие интерфейсы API. Каждое изменение вносится путем создания нового. Благодаря этому безголовый передний конец всегда будет оставаться совместимым.
    • Spryker предлагает классическое семантическое управление версиями, поэтому при обновлении нам может потребоваться изменить интерфейс.

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

 

Варианты реализации

Видение со стороны commercetools

Позиционируют себя в качестве ядра системы электронной коммерции и на его основе (на снаружи относительно него) создаются составные сервисы и пользовательские приложения.

 

 

Продвигают MACH архитектуру microservices-based, API-first, cloud-native, and headless - микросервисы, сначала API, в облаке и без головы. Из полезного продуманное и описанное API https://docs.commercetools.com/api/. Предоставляют службы только как сервис. У конкурентов (будут на следующем слайде) так же присутствует современный API.

Отдельно смотрел Shopware https://www.shopware.com/en/, искал eCommerce на Symfony (PHP), код открыт https://github.com/shopware/platform, есть вариант сервиса с абонентской платой "от 0" и Self-hosted Community Edition.

Общая проблема в том что продвинутым платформам российский рынок неинтересен и местные студии не особо двигают данные технологии/продукты.

 

Видение со стороны Vue Storefront

 

 

Меня на данный момент интересует левый блок eCommerce Platforms.

Представим что хотим использовать 1С как eCommerce платформу.

Для этого нужно написать компонент на js, который умеет взаимодействовать с API предоставляемый 1С.

 

 

Выдержки из документации

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

Тема по умолчанию в Vue Storefront поставляется с поддержкой многих функций из коробки, что отлично подходит, если вы не хотите иметь дело с пользовательским интерфейсом или стилем. Однако за это приходится платить. Чем меньше функциональных возможностей поддерживает ваша платформа, тем больше она требует переопределения.

Трудно перечислить все функции, которые должна поддерживать ваша платформа. Тем не менее, вы можете получить общее представление, просмотрев отдельные составные файлы "composables".

API вашей платформы должен иметь конечные точки для большинства из этих операций, если только некоторые из них не могут быть выполнены на интерфейсе. Одним из таких примеров может быть isInCart, который принимает currentCartи productв качестве параметров. В большинстве случаев этой информации достаточно, чтобы проверить, есть ли товар уже в корзине, не вызывая API.

В качестве альтернативы можно реализовать API совместимый интерфейс на уровне API и подключать уже разработанный модуль. Примеры такого подхода gogatekeeper - форк форка gatekeeper и redpanda (A Kafka® API compatible streaming platform).

 

Итог

На данный момент на US-EU рынке есть интересные eCommerce продукты и описание их работы, в RU тем более около 1С сообществе только унылый CML или "сайт из 1С" которые не соответствуют актуальным требованиям web.

Буду рад ссылкам на продукты или наработки по теме в RU сегменте.

Благодарю за внимание.

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17802    19    22    

17

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    19886    13    17    

17

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14437    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1208    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 3088 10.11.21 13:45 Сейчас в теме
Ща ковровые бомбардировки GraphQl в тренде, но 1С они положат, ибо в сути своей это oData на JSON.
2. Константин С. 672 10.11.21 20:22 Сейчас в теме
Представим что хотим использовать 1С как eCommerce платформу.

все имеет пределы и возможности. Нестоит пытаться пристроить платформу 1С, куда нипопадя.
Да возможно используя ее можно написать управление спутниками (помнится было табло прилетов/отлетов кажется шереметьево), но всетаки 1с (пока) заточено для учетных систем среднего масштаба.
3. malikov_pro 1324 10.11.21 22:53 Сейчас в теме
(1) "бомбардировки GraphQL" это развитие JSON API для оптимизации количества запросов, при том что даже на web слой GraphQL обходится дороже чем тот же REST. Использовать что удобно.

Подход "дадим доступ стороннему сервису" не единственный, склоняюсь с созданию miidleware а 1C приводить к RPC варианту. Автодокументацию HTTP, regexp хз когда завезут.
4. malikov_pro 1324 10.11.21 22:57 Сейчас в теме
(2) В статье писал что 1С рассматриваю как бек-бекэнд, в котором крутится учет остатков итд, а нагрузку берут на себя окружающие веб сервисы.
"заточено для учетных систем среднего масштаба." - Если у меня сайт дает 100 заказов в день, то 1С по HTTP это вывезет без проблем, именно запись и пересчет заказа, корзина на midleware пускай крутится.
5. Константин С. 672 11.11.21 11:34 Сейчас в теме
(4)
Если у меня сайт дает 100 заказов в день, то 1С по HTTP это вывезет без проблем,

вот о такой конкретики и говорил. Может кто подумает валберис или мвидео предлагаете перейти на такую структуру)
6. starik-2005 3088 11.11.21 11:56 Сейчас в теме
(4)
а нагрузку берут на себя окружающие веб сервисы
Кста, лайфхак для этого: https://infostart.ru/1c/articles/1543746/

ЗЫ: Но народ пока лишь пустил скупую слезу )))
7. malikov_pro 1324 11.11.21 12:19 Сейчас в теме
(6) Статью читал, на сколько понял там C++ (с которыми на Вы) на raspberrypi.
8. starik-2005 3088 11.11.21 13:18 Сейчас в теме
(7)
на сколько понял там C++ (с которыми на Вы) на raspberrypi.
Не обязательно на малинке, но даже на малинке это работает достаточно быстро, при том через Вафлю.

Суть основная в том, что есть окружение вокруг 1С, которое является накопителем для входящих запросов, а 1С по мере возможности из этого накопителя забирает данные. Фактически это очередь - тот же кролик. Но тут есть возможность кода накатать дополнительного, чтобы какую-то полезную работу с данными провести, а не просто передать из точки А в точку Б.

Ну и кода там кот наплакал, при том он не сильно сложнее кода организации сервиса на 1С. Ну и помимо нев...й производительности еще и лицухи целы.
9. malikov_pro 1324 11.11.21 13:44 Сейчас в теме
(8) "Не обязательно на малинке," - по сути middleware, поддерживаю данный подход, возможно прототипы напишу на node.js, есть небольшой опыт, в планах использовать Go.

"Фактически это очередь - тот же кролик." - какой из брокеров использовать отдельный вопрос, буду разбираться с kafka.
Оставьте свое сообщение