Моё хобби ? автоматизация онлайн-ритейла. Уже много лет даже в свои выходные я не вылезаю из этого «болота». Да, наверное, это звучит дико и даже смешно. Как можно увлекаться таким скучным делом? — скажут одни. Что там увлекаться, это просто какая-то частная тема для уважающего себя архитектора ПО! — скажут другие.
Действительно, на первый взгляд, это, как говорится, недиссертабельная тема. Фактически, это сборная солянка из разных тем, тем или иным образом притащенных в e-commerce. И в итоге оказалась ровно тем, что я люблю: интеграция технологий.
И вот с 2016 я веду техноблог, hybrismart.com. Такая «хабра» в миниатюре, только на английском и с фокусом на близкую мне тему — разработку на SAP Commerce. У нас тут сформировалась небольшая компания из нескольких десятков тысяч авторов, но в блог пока что пишет только часть из них. Ну, хорошо, пишут пока немногие. Десяток. Но мы стараемся. В блоге уже накопилось под две сотни статей, преимущественно больших и очень больших на самые разные темы, тем или иным боком относящиеся к ecom. В существенной части это всё-таки персональный блог, поэтому отдуваюсь тут я, а не наша пиар-служба. Но это от души, правда.
Как легко догадаться из названия, hybrismart — про хайбрис (что это такое?). И почти все, кто его находит, знают о хайбрисе не понаслышке. Ну и наоборот: наверное, каждый разработчик на hybris хотя бы раз в блог заходил (конечно, не по доброй воли, нам гугл помогает!). Теперь вот и вы зашли. И чтобы вы там не потерялись, хочу провести небольшую экскурсию. Задавайте, пожалуйста, вопросы в самом конце.
Кто-то скажет, что где e-commerce, там шопинг карт, а где шопинг карт, там — e-commerce. Но эту шопинг-карт ещё нужно найти. Как и товары. И тут возникает тема, в которой число самодельных «велосипедов» зашкаливает: поиск по товарам.
Пожалуй, это самый «жирный» топик на моем блоге. В хайбрисе за поиск отвечает Apache Solr, один из двух крупных и повсеместно известных опенсорсных движков (вместе с ElasticSearch). Но как вы понимаете, специфики хайбриса в статьях про поиск — минимум. Просто потому, что у всех примерно одни и те же проблемы.
Итак, поехали.
Rauf Aliev, Timofey Klyubin
The Challenges Of Chinese And Japanese Searching
https://hybrismart.com/2019/08/18/the-challenges-of-chinese-and-japanese-searching/
Вместе с Тимофеем Клюбиным мы сделали гигантский обзор текстового поиска на иероглифических языках, описали типичные сложности у компьютеров с этими значками и способы их решения в Solr. Также вы узнаете про различные культурные и языковые особенности и специфику оформления фасетного поиска в Японии и Китае.
Тимофей кроме хайбриса и всяких айтишних штук давно изучает японский. Мне хотелось бы написать тут «а я — китайский», но увы. У меня труд родился в процессе глубокого изучения темы, вызванного нуждой по работе и желанием раз и навсегда закрыть вопросы, которые меня мучали, а Тимофей просто занимался любимым делом.
Поиск на японском и китайском поднимает проблемы, о которых вы даже не догадывались. Например, всмотритесь в подсказки гугла по слову «??????» (tokyoe), на которое гугл дает «???» (tokyoeki) (станция Токио). В данном случае оба слова являются разным написанием одного и того же, и поисковая система это знает. У японцев свои знаки пунктуации, два алфавита, сложная система с числительными, важен контекст. Все это мы описываем в деталях.
![](https://habrastorage.org/webt/ay/jk/lx/ayjklxtlbvrkwhnafkmxmtjqdbo.png)
Rauf Aliev
Facet Search: The Most Comprehensive Guide. Best Practices, Design Patterns, Hidden Caveats, And Workarounds.
https://hybrismart.com/2019/02/13/facet-search-the-most-comprehensible-guide-best-practices-design-patterns/
А эта работа относится к фасетному поиску. Осторожно, там очень много букв, но есть удобное содержание с ссылками. Было бы концептуально сделать фасетный поиск по статье по фасетному поиску, но я вовремя себя остановил.
В статье предпринята попытка систематизировать знания и опыт в этой области и организовать эти знания в виде одной большой «простыни» с фактами, ссылками, и best practices. Наверное, она должна быть полезна тем, кто по роду работы связан с пользовательскими интерфейсами.
Несмотря на то, что фасеты — самая часто используемая концепция в екоммерс (после шоппинг карт), и всегда есть большой соблазн изобрести какое-нибудь колесо. Судя по тому, что мы видим на сайтах, очень многие этим пользуются, получая в результате много несостыковок и противоречий. Я постарался их собрать вместе с решениями, которые считаются общепринятыми.
![](https://habrastorage.org/webt/et/gh/be/etghbeu_oayp2lmwqomvlfsnqda.png)
Rauf Aliev
Autocomplete, Live Search Suggestions, and Autocorrection: Best Practice Design Patterns
https://hybrismart.com/2019/01/08/autocomplete-live-search-suggestions-autocorrection-best-practice-design-patterns/
Поскольку «поиски» сейчас пошли умные, и часто лучше пользователя знают, что он хотел найти, а устройства маленькие и неудобные, большое внимание уделяется Search Suggestions — способу сформулировать желаемый поисковый запрос за меньшее время, за минимальное число нажатий клавиш, кликов мыши или «тапов» по экрану.
В статье я делаю обзор темы, «лучших практик» и частых ошибок. Статья родилась, когда я проектировал систему умного автокомплита для одной крупной biotech-компании, делающего удобнее поиск по антителам и реагентам. «Умный автокомплит» предлагал завершение текущего слова в одно нажатие, опираясь на уже введённые слова, определённые правила сочетаемости и статистику запросов. Ближайший аналог из лингвистики — после ввода глагола с больше вероятностью идёет существительное, чем другой глагол.
![](https://habrastorage.org/webt/az/ut/m7/azutm7davbvgcoucuwpej5r6jz4.png)
Rauf Aliev
Search Analytics
https://hybrismart.com/2017/10/06/part2-sap-hybris-thinking-outside-the-box-part-2-of-4-video-russian-english-search-analytics/
Некоторые материалы представлены на блоге не в виде статей, а в виде видеороликов. Всего их там штук 40 наберется. К сожалению, такой формат пока ещё не прижился. Здесь я рассказываю про Search Analytics — механизм сбора и обработки статистики, имеющей отношение к действиям покупателей с вовлечением поиска по товарам. Я придумал этот механизм для большого продуктового магазина в Европе и перепроверил его ещё раз для той самой biotech-компании из предыдущего примера. Вкратце, идея сводится к тому, что действия покупателей могут много рассказать про то, как работает поиск, и где у него слабые места. Например, статистика показывает, что некоторые товары ищут часто, но кладут в корзину редко (высокая цена? Устаревшие модели?), а другие — кладут часто, но довольно плохо ищут (подсказки?), а за третьими готовы прокликивать несколько страниц результатов поиска (какие-то нерелевантные товары вылезают вперед?). В общем, это такой Google Analytics, но — для поиска.
Rauf Aliev
Multi-line Search
https://hybrismart.com/2017/04/07/multi-line-product-search-for-bulk-orders/
Иметь свой блог удобно тем, что туда можно выгружать идеи и эксперименты и высвобождать мозги под что-нибудь более актуальное и новое. В этой статье я описал концепцию «многострочного поиска» для B2B-сайтов, которая когда-то в свое время была актуальна.
Идея в том, что часто удобно искать на сайте, скопипастив целую группу артикулов или названий товаров в поле для поиска, чем делать это одной строчкой за раз.
![](https://habrastorage.org/webt/37/l5/bk/37l5bk3a-uk-n-x_icpnuxx76d0.png)
Rauf Aliev
Product Image Visual Search
https://hybrismart.com/2018/08/26/product-image-visual-search-in-sap-commerce-cloud-hybris-commerce/
В этой статье я описываю поиск похожих товаров — по цвету или форме. Это довольно «классическая» тема, но на практике, по непонятной мне причине, редко реализуемая. Я сделал прототип и описал матчасть. Практически все статьи подобного характера сопровождаются видео, как работает прототип с SAP Commerce, и эта — не исключение. Для интеграции с Apache Solr я использовал Lire (https://github.com/dermotte/lire).
![](https://habrastorage.org/webt/38/ub/pg/38ubpgklyx_jgp-ujbejxz5kr6q.png)
Rauf Aliev
More Like This In SOLR
https://hybrismart.com/2017/02/05/more-like-this-in-hybris-solr-search/
Если в прошлой статье мы искали похожие товары по цвету и размеру, то тут показываются похожие по чёрт знает чему. Система рассчитывает и упорядочивает товары по принципу похожести индексируемого контента — описаний товаров, названий, характеристик. Тем больше сходства, тем ближе товары будут в таких «кластерах» друг к другу. Для пользователя же мы можем вывести товары, находящиеся поблизости в таком «пространстве похожестей», которые, скорее всего, окажутся товарами-заменителями.
![](https://habrastorage.org/webt/az/kz/jw/azkzjwgmfbz_r_cbsdc7izgskvg.png)
Rauf Aliev
Concept Aware Search: Automatic Facet Discovery
https://hybrismart.com/2017/06/25/concept-aware-search-automatic-facet-discovery-in-hybris/
Здесь я тоже описываю интересный эксперимент и прототип: система выставляет фасеты самостоятельно, основываясь на введённом поисковом запросе. Например, если вы ищите что-то запросом «красное платьишко 39 размера», то вам надо показывать не товары, у которых все эти слова есть в описании или названии, а товары, отфильтрованные по тегу «красный», «платье» и «размер 39». Для русского языка понадобятся ещё танцы с бубнами, а с английским все работает уже сейчас. Внутри есть демка, показывающая разницу между тем, как работает дефолтный поиск и он же, но с моей логикой поверх. Называется, почувствуйте разницу. Однако, нужно отметить, что такой подход всё ещё блещет сайд-эффектами, и нужно очень тщательно настраивать систему, чтобы она удовлетворяла всех или почти всех.
Rauf Aliev
Enhanced Multi-Word Synonyms and Phrase Search
https://hybrismart.com/2017/08/09/enhanced-multi-word-synonyms-and-phrase-search/
Есть известная проблема в SOLR (и это не только с хайбрисом), что многословные синонимы работают очень криво. С однословными ещё кое-как работает, но тоже со своими сложностями. В блоге описано решение, позволяющее обойти эти проблемы и сделать поиск умнее. При отстутствии однозначности система перебирает разные варианты замен и выбирает наиболее «выигрышную» замену.
На блоге есть ещё пара десятков статей на тему поиска. А на этом прекрасном месте тема поиска уступает теме расчёта акций и скидок и прочей лояльности.
«Купи два пуховика по цене трёх и получи один в подарок!». Что только маркетологи не придумают, чтобы программисты не скучали. Делаешь полгода совершенный «движок» акций, который умеет вообще всё и ещё немножко, и тут приходит менеджер с очередной идеей, из-за которой нужно переписывать половину! В хайбрисе тоже было два поколения таких «движков». Разработчики решили не изобретать велосипед и использовали JBoss Drools, довольно мощную систему управления бизнес-правилами, которая интегрирована в хайбрис для темы акционных механик, темы узкой, но разнообразной в своей узости.
![](https://habrastorage.org/webt/az/4s/9w/az4s9ww-7xnqxmbedhxqjnmnfjk.png)
Если в двух словах, то Drools — это среда выполнения бизнес-правил. Механизм обрабатывает так называемые «факты» — входные данные, — и выдаёт результат в результате обработки правил и фактов. В хайбрисе для Drools сделали интерактивный редактор правил «в терминах e-commerce», а также представили API для расширения.
Rauf Aliev
‘Could Have Fired’
https://hybrismart.com/2016/06/04/hybris-6-could-have-fired-messages-poc/
Если какое-то правило срабатывает, то накладывается скидка. Правила применяются к корзине. Мой эксперимент, в описанной статье, показывает, что правила могут применяться не к корзине, но к комбинации корзины и текущего товара. То есть ты ещё на кнопку «купить» не нажал, а уже видишь, какие райские сады и великолепные дворцы сейчас будут добавлены в корзину как подарок. Предполагается, что это должно сделать пользователя счастливее и увеличить продажи.
![](https://habrastorage.org/webt/zo/yz/59/zoyz59_7yagveoscmyido7ofsya.png)
Rauf Aliev
Distributed promotion calculation in the cluster. Promo as a service
https://hybrismart.com/2016/07/05/distributed-promotion-calculation-cluster-promo-as-a-service/
Так вот, этот самый Drools интегрирован в платформу. А она — монолит. Монолит — это когда весь код растёт из одного места. И вот когда пользователь тыкает иконочку на шопинг карт, на сервере миллионы маленьких гномиков начинают создавать контекст для Drools, потом заполнять его «фактами», куда входят товары, категории, свойства пользователя и всякое ещё разное, от чего может зависеть акция. И происходит это на той ноде в кластере, куда принесло пользователя лоад-балансером. И если там вдруг в это время перебои с процессорными ресурсами или памятью, то пользователь будет страдать. Затем, пользователю вручают скидку или подарок, а сервер всё это хозяйство подчищает. До следующего раза, когда оно опять начнёт создаваться. В статье я описываю свой эксперимент в вынесении Drools в отдельный кластер и вынос этапа этого конфигурирования Drools из запроса. Кроме того, что это повышает производительность, это ещё позволяет делать довольно сложные акции, где участвует, например, миллионы «фактов».
![](https://habrastorage.org/webt/hb/la/en/hblaen_7qt6-0mxi4wsf_tjwjqg.png)
Rauf Aliev
Using hybris rule engine for product recommendations
https://hybrismart.com/2016/08/09/using-hybris-rule-engine-for-product-recommendations/
В этом примере я показываю, как можно устроить рекомендательную систему на основе правил, используя уже готовый механизм на основе Drools. В моём прототипе рекомендательной системы рекомендации можно создавать интерактивно, конструируя логику связей аксессуаров с товарами или похожих товаров между собой. Например, анчоусы к пиву, ментос — к коле, берёзовый сок — к буратино, мыло — к верёвке, розетку и фай-фай роутер — к чаю и кофе. Рекомендации — это всегда хорошо, когда они со смыслом.
![](https://habrastorage.org/webt/tp/wk/hr/tpwkhr4tqr-sotwmxaxdvtuzgjc.png)
Rauf Aliev
Complex Realtime Event Processing with Drools Fusion
https://hybrismart.com/2016/10/17/complex-realtime-event-processing-with-drools-fusion-integrating-with-hybris/
Ну раз я уже построил этот кластер, я не мог его не домучить и построить на его основе штуку, которая обрабатывала бы события на лету, накладывая на них на том же лету правила. Мне удалось разобраться и подключить Drools Fusion + Drools Server последней версии к hybris. Эта штука правильно называется Complex Event Processing. Смысл в том, что если у вас есть поток каких-либо данных для обработки в реальном времени, Drools Fusion позволяет делать это быстро и гибко. Например, в случае e-commerceтаких данных много. Самые простые — это клики и переходы.
Я записал и публикнул демку, из которой понятно, как это работает. Логи выгружаются куда-то в хранилище, а оттуда попадают в drools fusion для обработки. На языке drools пишутся правила, которые вытягивают из логов какие-то новые знания. В моей демке это просто идентификация фотограф/не фотограф по характеру посещённых страниц и кликов. Например, пользователь уже просмотрел тучу моделей и мы делаем вывод, что он любит моделей. Или долго водит мышью по фотографии любимого штатива, из чего мы делаем вывод, что он любит не только модели, но и штативы. Результат правил возвращается обратно в хайбрис и как-нибудь там может использоваться. Баннер показать или цены чуть-чуть понизить на фототехнику.
![](https://habrastorage.org/webt/kv/r0/y7/kvr0y7q_qc72opouq8vlpghcidu.png)
Основная особенность всего этого, что обрабатывается поток событий в реальном времени. В моём примере — это нахождение как минимум пяти страниц одной тематической группы за последние 30 секунд для одного пользователя.
![](https://habrastorage.org/webt/av/ai/7i/avai7i0tcxtrvqifssjj8bpik-i.png)
Второй важный пункт в том, что такая система очень масштабируема, ведь каждый сервер работает независимо. В то время ещё была жива встроенной в хайбрис персонализация. Её потом заменили на платный сервис. Она была жутко тормозная, и поэтому её мало кто использовал. Здесь же нагружаются серверы, софт которых не стоит ничего: он бесплатен. А в хайбрис потом пропихиваются уже готовые решения, которые нужно там тупо визуализировать.
Rauf Aliev
Reactive Rule-based Dynamic Forms
https://hybrismart.com/2018/01/04/reactive-rule-based-dynamic-forms-in-hybris-using-drools-7/
Drools также можно использовать для автоматизации сложных форм, и в своём эксперименте я показываю, как это может быть достигнуто. В этом эксперименте я демонстрирую как можно реализовать многостраничную, многоэтапную форму, у которой состав и конфигурация полей и шагов меняется в зависимости от введённой информации в другие поля. Такая логика довольно сложно реализуется в стандартных подходах к формам, и её программирование значительно облегчается, когда для описания правил используется Drools.
![](https://habrastorage.org/webt/oq/wi/gk/oqwigkrnhqwib4ekek_h79zano0.png)
Чтобы плавно закончить тему с Drools и начать тему про всякое разное в e-commerce и хайбрисе, я представлю ещё подробный обзор акционных механик.
Rauf Aliev
Promotion Mechanics and Their Implementation in Hybris
https://hybrismart.com/2017/04/30/promotion-mechanics-and-their-implementation-in-hybris-6-x/
Замечаете, почти все темы не совсем и про хайбрис. Там везде он каким-то боком есть, но в целом e-commerce— это не вещь в себе. Всё связано со всем.
Конечно, на сайте есть ещё десятки материалов, которые довольно сложно понять тем, кто вообще не разбирался с хайбрисом.
Rauf Aliev
Merging Carts When A Customer Logs In: Problems, Solutions, and Recommendations
https://hybrismart.com/2019/02/24/merging-carts-when-a-customer-logs-in-problems-solutions-and-recommendations/
Например, в этой статье я описываю проблему объединения корзин после аутентификации. Это когда вы положили пятьдесят разных уточек в корзину, а потом авторизовались, а магазин туда подмешал выбранных с прошлого раза 50 зайчиков. Есть разные стратегии по тому, как разделять уточек и зайчиков в этом примере, и я их разбираю. Стратегии разбираю, не зайчиков.
Rauf Aliev
Hybris Impex Preprocessor
https://hybrismart.com/2018/05/27/hybris-impex-preprocessor-impex/
Эта вот тема, наверное, полезна лишь для разбирающихся в хайбрисе. Привожу ее тут как пример статьи «для своих». Их меньшинство, но они занимают свою важную нишу.
В хайбрисе есть специальный формат для импорта и экспорта данных. Называется Impex и со стороны очень похож на обычный CSV. Там есть очень простой язык разметки, показывающий, что вот этот блок ниже — товары, а вот тот блок ещё — категории к ним. В целом, довольно удобно, но не тогда, когда у тебя двадцать почти одинаковых сайтов на разных языках, и каждый раз, когда добавляешь какой-нибудь интерфейсный компонент на все двадцать, нужно без ошибок скопипастить одно и то же двадцать раз и потом это поддерживать. У меня был такой проект, и я предложил решение с макросами на JSON, которые помогали создать импекс из импекса-с-макросами. Там не обычные макросы, а с циклами и параметрами.
Если вы ничего не поняли, то это нормально. У нас ещё и шутки есть, которые никто вне тусовки не понимает. Хотя они все грустные, не будем про это. У нас же серьёзная статья.
Rauf Aliev
Payments: A look Inside the Black Box
https://hybrismart.com/2019/09/08/payments-a-look-inside-the-black-box/
Я когда-то работал руководителем разработки в Chronopay, и с тех пор тема электронных платежей висела надо мной тёмной тяжёлой тучей, пока я её не приземлил вот в эту статью и освободил мозги под новые челенджи. Там собрано самое необходимое для понимания вопросов интеграции с платёжными шлюзами и сервисами, бест практисес и типичные недосмотры, которых нужно избегать (или использовать, если вы злой покупатель).
![](https://habrastorage.org/webt/np/ag/zh/npagzh5yeitr_s0dzcn_rtznz70.png)
Rauf Aliev
Server-side PDF document generation
https://hybrismart.com/2017/06/15/pdf-and-sap-hybris/
А ещё раньше, во времена зачёток и пейджеров, я работал дизайнером и верстальщиком (впрочем, в коломенском педуниверситете и пейджинговой компании Мобилтелеком я тоже работал. Да, я уже старый). Не тем верстальщиком, который HTML, а тем, который про книжки и журналы, а иногда даже православные газеты, телепрограммы и ноты. И, конечно, я не мог обойти стороной тему Postscript и PDF, которые пугают очень многих из-за туманных и плохо документированных внутренностей. В статье я показываю, что не так страшен чёрт, и делаю обзор инструментов под генерацию PDF.
![](https://habrastorage.org/webt/p7/qa/nb/p7qanbnb6n3eoymezit4ryhpqqm.png)
Rauf Aliev
Authentication with Hardware Security Keys via Webauthn in SAP Commerce Cloud
https://hybrismart.com/2019/05/23/authentication-with-hardware-security-keys-via-webauthn-in-sap-commerce-cloud/
В этой статье я описываю прототип авторизации по USB-ключикам, и последние (на момент статьи) продвиги в этом направлении на рынке, типа беспарольной авторизации, поддерживаемой браузерами. Удалось интегрировать с хайбрисом Yubikey, описываю как оно получалось (и получилось).
![](https://habrastorage.org/webt/vq/sc/ea/vqsceahp5ovcr6gfsbculwk0pwc.png)
Rauf Aliev
Geofencing: Custom Shipping Zones
https://hybrismart.com/2016/10/19/geofencing-in-hybris-custom-shipping-zones/
Очередной эксперимент: использование размеченных областей на карте Google для различных целей в e-commerce: поиска оптимального склада, поиска доступных магазинов для самовывоза или лучшего доставщика, а может и самого факта возможности продать товар или услугу покупателю из этой зоны.
Работает это так: покупатель вводит адрес, а система его определяет в одну или несколько крупных зон. Различные компоненты системы зависят уже от этих крупных зон, а не от мелких компонентов адреса, таких как почтовый индекс.
![](https://habrastorage.org/webt/st/xo/pq/stxopqht5bxl31k-blvdukcwcdg.png)
Заодно разобрался с разработкой на Google AppEngine. Дело в том, что определение многоугольника (зоны), в который входит точка на карте (где покупатель), для ситуации «много зон сложной формы» потенциально может быть довольно «тяжелой» вычислительной задачей. И если есть возможность, ее лучше сразу делать на кластере, который может легко масштабироваться, а лучше еще и сам. И вот этот кейс отличный для Google AppEngine, где задействован Google DataStore для хранения параметров многоугольников, и Google Memcache для хранения кэша.
Rauf Aliev
Page Fragment Caching: Custom, with Varnish, Nginx, Memcached
https://hybrismart.com/2016/07/24/page-fragment-caching-for-hybris/
https://hybrismart.com/2016/07/27/varnish/
https://hybrismart.com/2016/07/30/hybris-page-fragment-caching-with-nginx-and-memcached/
В этих статьях я рассказываю про механизм умного кэширования частей страниц. Каждая из частей имеет составной ключ, говорящий о том, от чего она зависит. Например, для кэширования списка адресов доставки интернет-магазина (пример у меня есть в видео) составным ключом может быть идентификатор пользователя — тогда для разных пользователей будут использоваться разные кэши.
Механизм особо эффективен, если «тяжелый» функционал (в смысле использования памяти и процессора) вынесен из контроллеров страниц в компоненты, т.к. для кэширования контроллеров страниц описанная методика подходит не идеально.
Чтобы лучше понять идею, проще всего посмотреть на скриншоты шаблонов в середине статьи.
Rauf Aliev
Best Practices: Migrating Content To Hybris
https://hybrismart.com/2017/01/10/best-practices-migrating-content-to-hybris/
Migrating Data with Pentaho ETL (Kettle)
https://hybrismart.com/2017/01/15/migrating-data-with-pentaho-etl-kettle/
А тут много про миграцию данных: best practices, инструменты, архитектура моей самописной тулзы. Хоть тут и есть в названии слово «Hybris», но как и в прочих, эта статья не на 100% про хайбрис, не очень «гиковая», так что, надеюсь, будет понятна и интересна всем, кто знает, что такое «миграция данных в веб-проекте».
* * *
Также на блоге есть довольно подробно разобранные темы с чат-ботами (Facebook, Skype, кастом), вынесение хранения сессий за пределы хайбриса в отдельный сервис, разбор всего, что касается аутентификации и логин-форм, разбор особенностей реализации тревел-сервисов (заказ билетов, отели) — часть 1 и часть 2, а также собранные best practices по интеграции по product availability с внешними системами, и какие сложности этот процесс имеет, и много-много чего еще.
Какие еще темы вы бы хотели видеть разобранными подобным образом? По концепции блога они должны иметь отношение к ecommerce. Буду рад любым отзывам и предложениям.
Действительно, на первый взгляд, это, как говорится, недиссертабельная тема. Фактически, это сборная солянка из разных тем, тем или иным образом притащенных в e-commerce. И в итоге оказалась ровно тем, что я люблю: интеграция технологий.
И вот с 2016 я веду техноблог, hybrismart.com. Такая «хабра» в миниатюре, только на английском и с фокусом на близкую мне тему — разработку на SAP Commerce. У нас тут сформировалась небольшая компания из нескольких десятков тысяч авторов, но в блог пока что пишет только часть из них. Ну, хорошо, пишут пока немногие. Десяток. Но мы стараемся. В блоге уже накопилось под две сотни статей, преимущественно больших и очень больших на самые разные темы, тем или иным боком относящиеся к ecom. В существенной части это всё-таки персональный блог, поэтому отдуваюсь тут я, а не наша пиар-служба. Но это от души, правда.
Как легко догадаться из названия, hybrismart — про хайбрис (что это такое?). И почти все, кто его находит, знают о хайбрисе не понаслышке. Ну и наоборот: наверное, каждый разработчик на hybris хотя бы раз в блог заходил (конечно, не по доброй воли, нам гугл помогает!). Теперь вот и вы зашли. И чтобы вы там не потерялись, хочу провести небольшую экскурсию. Задавайте, пожалуйста, вопросы в самом конце.
ЖАЖДА ПОИСКА
Кто-то скажет, что где e-commerce, там шопинг карт, а где шопинг карт, там — e-commerce. Но эту шопинг-карт ещё нужно найти. Как и товары. И тут возникает тема, в которой число самодельных «велосипедов» зашкаливает: поиск по товарам.
Пожалуй, это самый «жирный» топик на моем блоге. В хайбрисе за поиск отвечает Apache Solr, один из двух крупных и повсеместно известных опенсорсных движков (вместе с ElasticSearch). Но как вы понимаете, специфики хайбриса в статьях про поиск — минимум. Просто потому, что у всех примерно одни и те же проблемы.
Итак, поехали.
Rauf Aliev, Timofey Klyubin
The Challenges Of Chinese And Japanese Searching
https://hybrismart.com/2019/08/18/the-challenges-of-chinese-and-japanese-searching/
Вместе с Тимофеем Клюбиным мы сделали гигантский обзор текстового поиска на иероглифических языках, описали типичные сложности у компьютеров с этими значками и способы их решения в Solr. Также вы узнаете про различные культурные и языковые особенности и специфику оформления фасетного поиска в Японии и Китае.
Тимофей кроме хайбриса и всяких айтишних штук давно изучает японский. Мне хотелось бы написать тут «а я — китайский», но увы. У меня труд родился в процессе глубокого изучения темы, вызванного нуждой по работе и желанием раз и навсегда закрыть вопросы, которые меня мучали, а Тимофей просто занимался любимым делом.
Поиск на японском и китайском поднимает проблемы, о которых вы даже не догадывались. Например, всмотритесь в подсказки гугла по слову «??????» (tokyoe), на которое гугл дает «???» (tokyoeki) (станция Токио). В данном случае оба слова являются разным написанием одного и того же, и поисковая система это знает. У японцев свои знаки пунктуации, два алфавита, сложная система с числительными, важен контекст. Все это мы описываем в деталях.
![](https://habrastorage.org/webt/ay/jk/lx/ayjklxtlbvrkwhnafkmxmtjqdbo.png)
Rauf Aliev
Facet Search: The Most Comprehensive Guide. Best Practices, Design Patterns, Hidden Caveats, And Workarounds.
https://hybrismart.com/2019/02/13/facet-search-the-most-comprehensible-guide-best-practices-design-patterns/
А эта работа относится к фасетному поиску. Осторожно, там очень много букв, но есть удобное содержание с ссылками. Было бы концептуально сделать фасетный поиск по статье по фасетному поиску, но я вовремя себя остановил.
В статье предпринята попытка систематизировать знания и опыт в этой области и организовать эти знания в виде одной большой «простыни» с фактами, ссылками, и best practices. Наверное, она должна быть полезна тем, кто по роду работы связан с пользовательскими интерфейсами.
Несмотря на то, что фасеты — самая часто используемая концепция в екоммерс (после шоппинг карт), и всегда есть большой соблазн изобрести какое-нибудь колесо. Судя по тому, что мы видим на сайтах, очень многие этим пользуются, получая в результате много несостыковок и противоречий. Я постарался их собрать вместе с решениями, которые считаются общепринятыми.
![](https://habrastorage.org/webt/et/gh/be/etghbeu_oayp2lmwqomvlfsnqda.png)
Rauf Aliev
Autocomplete, Live Search Suggestions, and Autocorrection: Best Practice Design Patterns
https://hybrismart.com/2019/01/08/autocomplete-live-search-suggestions-autocorrection-best-practice-design-patterns/
Поскольку «поиски» сейчас пошли умные, и часто лучше пользователя знают, что он хотел найти, а устройства маленькие и неудобные, большое внимание уделяется Search Suggestions — способу сформулировать желаемый поисковый запрос за меньшее время, за минимальное число нажатий клавиш, кликов мыши или «тапов» по экрану.
В статье я делаю обзор темы, «лучших практик» и частых ошибок. Статья родилась, когда я проектировал систему умного автокомплита для одной крупной biotech-компании, делающего удобнее поиск по антителам и реагентам. «Умный автокомплит» предлагал завершение текущего слова в одно нажатие, опираясь на уже введённые слова, определённые правила сочетаемости и статистику запросов. Ближайший аналог из лингвистики — после ввода глагола с больше вероятностью идёет существительное, чем другой глагол.
![](https://habrastorage.org/webt/az/ut/m7/azutm7davbvgcoucuwpej5r6jz4.png)
Rauf Aliev
Search Analytics
https://hybrismart.com/2017/10/06/part2-sap-hybris-thinking-outside-the-box-part-2-of-4-video-russian-english-search-analytics/
Некоторые материалы представлены на блоге не в виде статей, а в виде видеороликов. Всего их там штук 40 наберется. К сожалению, такой формат пока ещё не прижился. Здесь я рассказываю про Search Analytics — механизм сбора и обработки статистики, имеющей отношение к действиям покупателей с вовлечением поиска по товарам. Я придумал этот механизм для большого продуктового магазина в Европе и перепроверил его ещё раз для той самой biotech-компании из предыдущего примера. Вкратце, идея сводится к тому, что действия покупателей могут много рассказать про то, как работает поиск, и где у него слабые места. Например, статистика показывает, что некоторые товары ищут часто, но кладут в корзину редко (высокая цена? Устаревшие модели?), а другие — кладут часто, но довольно плохо ищут (подсказки?), а за третьими готовы прокликивать несколько страниц результатов поиска (какие-то нерелевантные товары вылезают вперед?). В общем, это такой Google Analytics, но — для поиска.
Rauf Aliev
Multi-line Search
https://hybrismart.com/2017/04/07/multi-line-product-search-for-bulk-orders/
Иметь свой блог удобно тем, что туда можно выгружать идеи и эксперименты и высвобождать мозги под что-нибудь более актуальное и новое. В этой статье я описал концепцию «многострочного поиска» для B2B-сайтов, которая когда-то в свое время была актуальна.
Идея в том, что часто удобно искать на сайте, скопипастив целую группу артикулов или названий товаров в поле для поиска, чем делать это одной строчкой за раз.
![](https://habrastorage.org/webt/37/l5/bk/37l5bk3a-uk-n-x_icpnuxx76d0.png)
Rauf Aliev
Product Image Visual Search
https://hybrismart.com/2018/08/26/product-image-visual-search-in-sap-commerce-cloud-hybris-commerce/
В этой статье я описываю поиск похожих товаров — по цвету или форме. Это довольно «классическая» тема, но на практике, по непонятной мне причине, редко реализуемая. Я сделал прототип и описал матчасть. Практически все статьи подобного характера сопровождаются видео, как работает прототип с SAP Commerce, и эта — не исключение. Для интеграции с Apache Solr я использовал Lire (https://github.com/dermotte/lire).
![](https://habrastorage.org/webt/38/ub/pg/38ubpgklyx_jgp-ujbejxz5kr6q.png)
Rauf Aliev
More Like This In SOLR
https://hybrismart.com/2017/02/05/more-like-this-in-hybris-solr-search/
Если в прошлой статье мы искали похожие товары по цвету и размеру, то тут показываются похожие по чёрт знает чему. Система рассчитывает и упорядочивает товары по принципу похожести индексируемого контента — описаний товаров, названий, характеристик. Тем больше сходства, тем ближе товары будут в таких «кластерах» друг к другу. Для пользователя же мы можем вывести товары, находящиеся поблизости в таком «пространстве похожестей», которые, скорее всего, окажутся товарами-заменителями.
![](https://habrastorage.org/webt/az/kz/jw/azkzjwgmfbz_r_cbsdc7izgskvg.png)
Rauf Aliev
Concept Aware Search: Automatic Facet Discovery
https://hybrismart.com/2017/06/25/concept-aware-search-automatic-facet-discovery-in-hybris/
Здесь я тоже описываю интересный эксперимент и прототип: система выставляет фасеты самостоятельно, основываясь на введённом поисковом запросе. Например, если вы ищите что-то запросом «красное платьишко 39 размера», то вам надо показывать не товары, у которых все эти слова есть в описании или названии, а товары, отфильтрованные по тегу «красный», «платье» и «размер 39». Для русского языка понадобятся ещё танцы с бубнами, а с английским все работает уже сейчас. Внутри есть демка, показывающая разницу между тем, как работает дефолтный поиск и он же, но с моей логикой поверх. Называется, почувствуйте разницу. Однако, нужно отметить, что такой подход всё ещё блещет сайд-эффектами, и нужно очень тщательно настраивать систему, чтобы она удовлетворяла всех или почти всех.
Rauf Aliev
Enhanced Multi-Word Synonyms and Phrase Search
https://hybrismart.com/2017/08/09/enhanced-multi-word-synonyms-and-phrase-search/
Есть известная проблема в SOLR (и это не только с хайбрисом), что многословные синонимы работают очень криво. С однословными ещё кое-как работает, но тоже со своими сложностями. В блоге описано решение, позволяющее обойти эти проблемы и сделать поиск умнее. При отстутствии однозначности система перебирает разные варианты замен и выбирает наиболее «выигрышную» замену.
На блоге есть ещё пара десятков статей на тему поиска. А на этом прекрасном месте тема поиска уступает теме расчёта акций и скидок и прочей лояльности.
АКЦИИ ПО ПРАВИЛАМ
«Купи два пуховика по цене трёх и получи один в подарок!». Что только маркетологи не придумают, чтобы программисты не скучали. Делаешь полгода совершенный «движок» акций, который умеет вообще всё и ещё немножко, и тут приходит менеджер с очередной идеей, из-за которой нужно переписывать половину! В хайбрисе тоже было два поколения таких «движков». Разработчики решили не изобретать велосипед и использовали JBoss Drools, довольно мощную систему управления бизнес-правилами, которая интегрирована в хайбрис для темы акционных механик, темы узкой, но разнообразной в своей узости.
![](https://habrastorage.org/webt/az/4s/9w/az4s9ww-7xnqxmbedhxqjnmnfjk.png)
Если в двух словах, то Drools — это среда выполнения бизнес-правил. Механизм обрабатывает так называемые «факты» — входные данные, — и выдаёт результат в результате обработки правил и фактов. В хайбрисе для Drools сделали интерактивный редактор правил «в терминах e-commerce», а также представили API для расширения.
Rauf Aliev
‘Could Have Fired’
https://hybrismart.com/2016/06/04/hybris-6-could-have-fired-messages-poc/
Если какое-то правило срабатывает, то накладывается скидка. Правила применяются к корзине. Мой эксперимент, в описанной статье, показывает, что правила могут применяться не к корзине, но к комбинации корзины и текущего товара. То есть ты ещё на кнопку «купить» не нажал, а уже видишь, какие райские сады и великолепные дворцы сейчас будут добавлены в корзину как подарок. Предполагается, что это должно сделать пользователя счастливее и увеличить продажи.
![](https://habrastorage.org/webt/zo/yz/59/zoyz59_7yagveoscmyido7ofsya.png)
Rauf Aliev
Distributed promotion calculation in the cluster. Promo as a service
https://hybrismart.com/2016/07/05/distributed-promotion-calculation-cluster-promo-as-a-service/
Так вот, этот самый Drools интегрирован в платформу. А она — монолит. Монолит — это когда весь код растёт из одного места. И вот когда пользователь тыкает иконочку на шопинг карт, на сервере миллионы маленьких гномиков начинают создавать контекст для Drools, потом заполнять его «фактами», куда входят товары, категории, свойства пользователя и всякое ещё разное, от чего может зависеть акция. И происходит это на той ноде в кластере, куда принесло пользователя лоад-балансером. И если там вдруг в это время перебои с процессорными ресурсами или памятью, то пользователь будет страдать. Затем, пользователю вручают скидку или подарок, а сервер всё это хозяйство подчищает. До следующего раза, когда оно опять начнёт создаваться. В статье я описываю свой эксперимент в вынесении Drools в отдельный кластер и вынос этапа этого конфигурирования Drools из запроса. Кроме того, что это повышает производительность, это ещё позволяет делать довольно сложные акции, где участвует, например, миллионы «фактов».
![](https://habrastorage.org/webt/hb/la/en/hblaen_7qt6-0mxi4wsf_tjwjqg.png)
Rauf Aliev
Using hybris rule engine for product recommendations
https://hybrismart.com/2016/08/09/using-hybris-rule-engine-for-product-recommendations/
В этом примере я показываю, как можно устроить рекомендательную систему на основе правил, используя уже готовый механизм на основе Drools. В моём прототипе рекомендательной системы рекомендации можно создавать интерактивно, конструируя логику связей аксессуаров с товарами или похожих товаров между собой. Например, анчоусы к пиву, ментос — к коле, берёзовый сок — к буратино, мыло — к верёвке, розетку и фай-фай роутер — к чаю и кофе. Рекомендации — это всегда хорошо, когда они со смыслом.
![](https://habrastorage.org/webt/tp/wk/hr/tpwkhr4tqr-sotwmxaxdvtuzgjc.png)
Rauf Aliev
Complex Realtime Event Processing with Drools Fusion
https://hybrismart.com/2016/10/17/complex-realtime-event-processing-with-drools-fusion-integrating-with-hybris/
Ну раз я уже построил этот кластер, я не мог его не домучить и построить на его основе штуку, которая обрабатывала бы события на лету, накладывая на них на том же лету правила. Мне удалось разобраться и подключить Drools Fusion + Drools Server последней версии к hybris. Эта штука правильно называется Complex Event Processing. Смысл в том, что если у вас есть поток каких-либо данных для обработки в реальном времени, Drools Fusion позволяет делать это быстро и гибко. Например, в случае e-commerceтаких данных много. Самые простые — это клики и переходы.
Я записал и публикнул демку, из которой понятно, как это работает. Логи выгружаются куда-то в хранилище, а оттуда попадают в drools fusion для обработки. На языке drools пишутся правила, которые вытягивают из логов какие-то новые знания. В моей демке это просто идентификация фотограф/не фотограф по характеру посещённых страниц и кликов. Например, пользователь уже просмотрел тучу моделей и мы делаем вывод, что он любит моделей. Или долго водит мышью по фотографии любимого штатива, из чего мы делаем вывод, что он любит не только модели, но и штативы. Результат правил возвращается обратно в хайбрис и как-нибудь там может использоваться. Баннер показать или цены чуть-чуть понизить на фототехнику.
![](https://habrastorage.org/webt/kv/r0/y7/kvr0y7q_qc72opouq8vlpghcidu.png)
Основная особенность всего этого, что обрабатывается поток событий в реальном времени. В моём примере — это нахождение как минимум пяти страниц одной тематической группы за последние 30 секунд для одного пользователя.
![](https://habrastorage.org/webt/av/ai/7i/avai7i0tcxtrvqifssjj8bpik-i.png)
Второй важный пункт в том, что такая система очень масштабируема, ведь каждый сервер работает независимо. В то время ещё была жива встроенной в хайбрис персонализация. Её потом заменили на платный сервис. Она была жутко тормозная, и поэтому её мало кто использовал. Здесь же нагружаются серверы, софт которых не стоит ничего: он бесплатен. А в хайбрис потом пропихиваются уже готовые решения, которые нужно там тупо визуализировать.
Rauf Aliev
Reactive Rule-based Dynamic Forms
https://hybrismart.com/2018/01/04/reactive-rule-based-dynamic-forms-in-hybris-using-drools-7/
Drools также можно использовать для автоматизации сложных форм, и в своём эксперименте я показываю, как это может быть достигнуто. В этом эксперименте я демонстрирую как можно реализовать многостраничную, многоэтапную форму, у которой состав и конфигурация полей и шагов меняется в зависимости от введённой информации в другие поля. Такая логика довольно сложно реализуется в стандартных подходах к формам, и её программирование значительно облегчается, когда для описания правил используется Drools.
![](https://habrastorage.org/webt/oq/wi/gk/oqwigkrnhqwib4ekek_h79zano0.png)
Чтобы плавно закончить тему с Drools и начать тему про всякое разное в e-commerce и хайбрисе, я представлю ещё подробный обзор акционных механик.
Rauf Aliev
Promotion Mechanics and Their Implementation in Hybris
https://hybrismart.com/2017/04/30/promotion-mechanics-and-their-implementation-in-hybris-6-x/
Замечаете, почти все темы не совсем и про хайбрис. Там везде он каким-то боком есть, но в целом e-commerce— это не вещь в себе. Всё связано со всем.
Конечно, на сайте есть ещё десятки материалов, которые довольно сложно понять тем, кто вообще не разбирался с хайбрисом.
Rauf Aliev
Merging Carts When A Customer Logs In: Problems, Solutions, and Recommendations
https://hybrismart.com/2019/02/24/merging-carts-when-a-customer-logs-in-problems-solutions-and-recommendations/
Например, в этой статье я описываю проблему объединения корзин после аутентификации. Это когда вы положили пятьдесят разных уточек в корзину, а потом авторизовались, а магазин туда подмешал выбранных с прошлого раза 50 зайчиков. Есть разные стратегии по тому, как разделять уточек и зайчиков в этом примере, и я их разбираю. Стратегии разбираю, не зайчиков.
![](https://habrastorage.org/webt/bv/g-/__/bvg-__byg9gtopmj_ojvtpgsvda.png)
Rauf Aliev
Hybris Impex Preprocessor
https://hybrismart.com/2018/05/27/hybris-impex-preprocessor-impex/
Эта вот тема, наверное, полезна лишь для разбирающихся в хайбрисе. Привожу ее тут как пример статьи «для своих». Их меньшинство, но они занимают свою важную нишу.
В хайбрисе есть специальный формат для импорта и экспорта данных. Называется Impex и со стороны очень похож на обычный CSV. Там есть очень простой язык разметки, показывающий, что вот этот блок ниже — товары, а вот тот блок ещё — категории к ним. В целом, довольно удобно, но не тогда, когда у тебя двадцать почти одинаковых сайтов на разных языках, и каждый раз, когда добавляешь какой-нибудь интерфейсный компонент на все двадцать, нужно без ошибок скопипастить одно и то же двадцать раз и потом это поддерживать. У меня был такой проект, и я предложил решение с макросами на JSON, которые помогали создать импекс из импекса-с-макросами. Там не обычные макросы, а с циклами и параметрами.
Если вы ничего не поняли, то это нормально. У нас ещё и шутки есть, которые никто вне тусовки не понимает. Хотя они все грустные, не будем про это. У нас же серьёзная статья.
Rauf Aliev
Payments: A look Inside the Black Box
https://hybrismart.com/2019/09/08/payments-a-look-inside-the-black-box/
Я когда-то работал руководителем разработки в Chronopay, и с тех пор тема электронных платежей висела надо мной тёмной тяжёлой тучей, пока я её не приземлил вот в эту статью и освободил мозги под новые челенджи. Там собрано самое необходимое для понимания вопросов интеграции с платёжными шлюзами и сервисами, бест практисес и типичные недосмотры, которых нужно избегать (или использовать, если вы злой покупатель).
![](https://habrastorage.org/webt/np/ag/zh/npagzh5yeitr_s0dzcn_rtznz70.png)
Rauf Aliev
Server-side PDF document generation
https://hybrismart.com/2017/06/15/pdf-and-sap-hybris/
А ещё раньше, во времена зачёток и пейджеров, я работал дизайнером и верстальщиком (впрочем, в коломенском педуниверситете и пейджинговой компании Мобилтелеком я тоже работал. Да, я уже старый). Не тем верстальщиком, который HTML, а тем, который про книжки и журналы, а иногда даже православные газеты, телепрограммы и ноты. И, конечно, я не мог обойти стороной тему Postscript и PDF, которые пугают очень многих из-за туманных и плохо документированных внутренностей. В статье я показываю, что не так страшен чёрт, и делаю обзор инструментов под генерацию PDF.
![](https://habrastorage.org/webt/p7/qa/nb/p7qanbnb6n3eoymezit4ryhpqqm.png)
Rauf Aliev
Authentication with Hardware Security Keys via Webauthn in SAP Commerce Cloud
https://hybrismart.com/2019/05/23/authentication-with-hardware-security-keys-via-webauthn-in-sap-commerce-cloud/
В этой статье я описываю прототип авторизации по USB-ключикам, и последние (на момент статьи) продвиги в этом направлении на рынке, типа беспарольной авторизации, поддерживаемой браузерами. Удалось интегрировать с хайбрисом Yubikey, описываю как оно получалось (и получилось).
![](https://habrastorage.org/webt/vq/sc/ea/vqsceahp5ovcr6gfsbculwk0pwc.png)
Rauf Aliev
Geofencing: Custom Shipping Zones
https://hybrismart.com/2016/10/19/geofencing-in-hybris-custom-shipping-zones/
Очередной эксперимент: использование размеченных областей на карте Google для различных целей в e-commerce: поиска оптимального склада, поиска доступных магазинов для самовывоза или лучшего доставщика, а может и самого факта возможности продать товар или услугу покупателю из этой зоны.
Работает это так: покупатель вводит адрес, а система его определяет в одну или несколько крупных зон. Различные компоненты системы зависят уже от этих крупных зон, а не от мелких компонентов адреса, таких как почтовый индекс.
![](https://habrastorage.org/webt/st/xo/pq/stxopqht5bxl31k-blvdukcwcdg.png)
Заодно разобрался с разработкой на Google AppEngine. Дело в том, что определение многоугольника (зоны), в который входит точка на карте (где покупатель), для ситуации «много зон сложной формы» потенциально может быть довольно «тяжелой» вычислительной задачей. И если есть возможность, ее лучше сразу делать на кластере, который может легко масштабироваться, а лучше еще и сам. И вот этот кейс отличный для Google AppEngine, где задействован Google DataStore для хранения параметров многоугольников, и Google Memcache для хранения кэша.
Rauf Aliev
Page Fragment Caching: Custom, with Varnish, Nginx, Memcached
https://hybrismart.com/2016/07/24/page-fragment-caching-for-hybris/
https://hybrismart.com/2016/07/27/varnish/
https://hybrismart.com/2016/07/30/hybris-page-fragment-caching-with-nginx-and-memcached/
В этих статьях я рассказываю про механизм умного кэширования частей страниц. Каждая из частей имеет составной ключ, говорящий о том, от чего она зависит. Например, для кэширования списка адресов доставки интернет-магазина (пример у меня есть в видео) составным ключом может быть идентификатор пользователя — тогда для разных пользователей будут использоваться разные кэши.
Механизм особо эффективен, если «тяжелый» функционал (в смысле использования памяти и процессора) вынесен из контроллеров страниц в компоненты, т.к. для кэширования контроллеров страниц описанная методика подходит не идеально.
Чтобы лучше понять идею, проще всего посмотреть на скриншоты шаблонов в середине статьи.
Rauf Aliev
Best Practices: Migrating Content To Hybris
https://hybrismart.com/2017/01/10/best-practices-migrating-content-to-hybris/
Migrating Data with Pentaho ETL (Kettle)
https://hybrismart.com/2017/01/15/migrating-data-with-pentaho-etl-kettle/
А тут много про миграцию данных: best practices, инструменты, архитектура моей самописной тулзы. Хоть тут и есть в названии слово «Hybris», но как и в прочих, эта статья не на 100% про хайбрис, не очень «гиковая», так что, надеюсь, будет понятна и интересна всем, кто знает, что такое «миграция данных в веб-проекте».
* * *
Также на блоге есть довольно подробно разобранные темы с чат-ботами (Facebook, Skype, кастом), вынесение хранения сессий за пределы хайбриса в отдельный сервис, разбор всего, что касается аутентификации и логин-форм, разбор особенностей реализации тревел-сервисов (заказ билетов, отели) — часть 1 и часть 2, а также собранные best practices по интеграции по product availability с внешними системами, и какие сложности этот процесс имеет, и много-много чего еще.
Какие еще темы вы бы хотели видеть разобранными подобным образом? По концепции блога они должны иметь отношение к ecommerce. Буду рад любым отзывам и предложениям.