[Поисковые технологии, Программирование, Java, Разработка под e-commerce] Кому рецепты для электронной коммерции? Для SAP Commerce и не только
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Моё хобби ― автоматизация онлайн-ритейла. Уже много лет даже в свои выходные я не вылезаю из этого «болота». Да, наверное, это звучит дико и даже смешно. Как можно увлекаться таким скучным делом? — скажут одни. Что там увлекаться, это просто какая-то частная тема для уважающего себя архитектора ПО! — скажут другие.
Действительно, на первый взгляд, это, как говорится, недиссертабельная тема. Фактически, это сборная солянка из разных тем, тем или иным образом притащенных в 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. Также вы узнаете про различные культурные и языковые особенности и специфику оформления фасетного поиска в Японии и Китае.
Тимофей кроме хайбриса и всяких айтишних штук давно изучает японский. Мне хотелось бы написать тут «а я — китайский», но увы. У меня труд родился в процессе глубокого изучения темы, вызванного нуждой по работе и желанием раз и навсегда закрыть вопросы, которые меня мучали, а Тимофей просто занимался любимым делом.
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. Наверное, эта статья должна быть полезна тем, кто по роду работы связан с пользовательскими интерфейсами.
Несмотря на то, что это самая часто используемая концепция, в ней большой соблазн начать изобретать колеса заново, и очень многие этим пользуются, получая в результате много несостыковок и противоречий.
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-компании, делающего удобнее поиск по антителам и реагентам. «Умный автокомплит» предлагал завершение текущего слова в одно нажатие, опираясь на уже введённые слова, определённые правила сочетаемости и статистику запросов. Ближайший аналог из лингвистики — после ввода глагола с больше вероятностью идёет существительное, чем другой глагол.
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/
Некоторые материалы представлены на блоге не в виде статей, а в виде видеозаписей. К сожалению, такой формат пока ещё не прижился. Здесь я рассказываю про Search Analytics — механизм сбора и обработки статистики, имеющей отношение к действиям покупателей с вовлечением поиска по товарам. Я придумал этот механизм для большого продуктового магазина в Европе и перепроверил его ещё раз для той самой biotech-компании из предыдущего примера. Вкратце, идея сводится к тому, что действия покупателей могут много рассказать про то, как работает поиск, и где у него слабые места. Например, статистика показывает, что некоторые товары ищут часто, но кладут в корзину редко (высокая цена? Устаревшие модели?), а другие — кладут часто, но довольно плохо ищут (подсказки?), а за третьими готовы прокликивать несколько страниц результатов поиска (какие-то нерелевантные товары вылезают вперед?). В общем, это такой Google Analytics, но для поиска.
Rauf Aliev
Multi-line Search
https://hybrismart.com/2017/04/07/multi-line-product-search-for-bulk-orders/
Иметь свой блог удобно тем, что туда можно выгружать идеи и высвобождать мозги под новые. В этой статье я описал концепцию «многострочного поиска» для B2B-сайтов. Идея в том, что часто удобно искать, скопипастив целую группу артикулов или названий товаров в поле для поиска, чем делать это одной строчкой за раз.
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).
Rauf Aliev
More Like This In SOLR
https://hybrismart.com/2017/02/05/more-like-this-in-hybris-solr-search/
Если в прошлой статье мы искали похожие товары по цвету и размеру, то тут показываются похожие по черт знает чему. Система рассчитывает и упорядочивает товары по принципу похожести индексируемого контента — описаний товаров, названий, характеристик. Тем больше сходства, тем ближе товары будут в таких «кластерах» друг к другу. Для пользователя же мы можем вывести товары, находящиеся поблизости в таком «пространстве похожестей», которые скорее всего окажутся товарами-заменителями.
Rauf Aliev
Concept Aware Search: Automatic Facet Discovery
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, довольно мощную систему управления бизнес-правилами, которая интегрирована в хайбрис для темы акционных механик, темы узкой, но разнообразной в своей узости.
Если в двух словах, то Drools — это среда выполнения бизнес-правил. Механизм обрабатывает так называемые «факты» — входные данные, — и выдает результат в результате обработки правил и фактов. В Хайбрисе для Drools сделали интерактивный редактор правил «в терминах e-commerce», а также представили API для расширения.
Rauf Aliev
‘Could Have Fired’
https://hybrismart.com/2016/06/04/hybris-6-could-have-fired-messages-poc/
Если какое-то правило срабатывает, то накладывается скидка. Правила применяются к корзине. Мой эксперимент, в описанной статье, показывает, что правила могут применяться не к корзине, но к комбинации корзины и текущего товара. То есть, ты еще на кнопку «купить» не нажал, а уже видишь, какие райские сады и великолепные дворцы сейчас будут добавлены в корзину как подарок. Предполагается, что это должно сделать пользователя счастливее и увеличить продажи.
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 из запроса. Кроме того, что это повышает производительность, это еще позволяет делать довольно сложные акции, где участвует, например, миллионы «фактов».
Rauf Aliev
Using hybris rule engine for product recommendations
https://hybrismart.com/2016/08/09/using-hybris-rule-engine-for-product-recommendations/
В этом примере я показываю, как можно устроить рекомендательную систему на основе правил, используя уже готовый механизм на основе Drools. В моем прототипе рекомендательной системы рекомендации можно создавать интерактивно, конструируя логику связей аксессуаров с товарами или похожих товаров между собой. Например, анчоусы к пиву, ментос — к коле, березовый сок — к буратино, мыло — к веревке, розетку и фай-фай роутер — к чаю и кофе. Рекомендации — это всегда хорошо, когда они со смыслом.
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 позволяет делать это быстро и гибко. Например, в случае екоммерса таких данных много. Самые простые — это клики и переходы…
Я записал и публикнул демку, из которой понятно, как это работает. Логи выгружаются куда-то в хранилище, а оттуда попадают в drools fusion для обработки. На языке drools пишутся правила, которые вытягивают из логов какие-то новые знания. В моей демке это просто идентификация фотограф/не фотограф по характеру посещенных страниц и кликов. Например, пользователь уже просмотрел тучу моделей и мы делаем вывод, что он любит моделей. Или долго водит мышью по фотографии любимого штатива, из чего мы делаем что он любит не только модели, но и штативы. Результат правил возвращается обратно в хайбрис и как-нибудь там может использоваться. Баннер показать или цены чуть-чуть понизить на фототехнику.
Основная особенность всего этого, что обрабатывается поток событий в реальном времени. В моем примере, это нахождение как минимум пяти страниц одной тематической группы за последние 30 секунд для одного пользователя.
Второй важный пункт в том, что такая система очень масштабируема, ведь каждый сервер работает независимо. В то время еще была жива встроенной в хайбрис персонализация. Ее потом заменили на платный сервис. Она была жутко тормозная и поэтому ее мало кто использовал. Здесь же нагружаются серверы, софт которых не стоит ничего: он бесплатен. А в хайбрис потом пропихиваются уже готовые решения, которые нужно там тупо визуализировать.
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.
Чтобы плавно закончить тему с Drools и начать тему про всякое разное в екоммерсе и хайбрисе, я представлю еще подробный обзор акционных механик
Rauf Aliev
Promotion Mechanics and Their Implementation in Hybris
https://hybrismart.com/2017/04/30/promotion-mechanics-and-their-implementation-in-hybris-6-x/
Замечаете, почти все темы не совсем и про Хайбрис. Там везде он каким-то боком есть, но в целом екоммерс — это не вещь в себе. Все связано со всем.
Конечно, на сайте есть еще десятки материалов, которые довольно сложно понять тем, кто вообще не разбирался с Хайбрисом.
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, и с тех пор тема электронных платежей висела надо мной тёмной тяжёлой тучей, пока я её не приземлил вот в эту статью и осободил мозги под новые челенджи. Там собрано самое необходимое для понимания вопросов интеграции с платежными шлюзами и сервисами, бест практисес и типичные недосмотры, которых нужно избегать (или использовать, если вы злой покупатель).
Rauf Aliev
Server-side PDF document generation
https://hybrismart.com/2017/06/15/pdf-and-sap-hybris/
А ещё раньше, во времена зачеток и пейджеров, я работал дизайнером и верстальщиком (впрочем, в коломенском педуниверситете и пейджинговой компании Мобилтелеком я тоже работал. Да, я уже старый). Не тем верстальщиком, который HTML, а тем, который про книжки и журналы, а иногда даже православные газеты, телепрограммы и ноты. И, конечно, я не мог обойти стороной тему Postscript и PDF, которые пугают очень многих из-за туманных и плохо документированных внутренностей. В статье я показываю, что не так страшен черт, и делаю обзор инструментов под генерацию PDF.
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, описываю как оно получалось (и получилось).
Rauf Aliev
Geofencing: Custom Shipping Zones
https://hybrismart.com/2016/10/19/geofencing-in-hybris-custom-shipping-zones/
Очередной эксперимент: использование размеченных областей на карте Google для различных целей в e-commerce: поиска оптимального склада, поиска доступных магазинов для самовывоза или лучшего доставщика, а может и самого факта возможности продать товар или услугу покупателю из этой зоны.
Работает это так: покупатель вводит адрес, а система его определяет в одну или несколько крупных зон. Различные компоненты системы зависят уже от этих крупных зон, а не от мелких компонентов адреса, таких как почтовый индекс.
Заодно разобрался с разработкой на 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. Буду рад любым отзывам и предложениям.
===========
Источник:
habr.com
===========
Похожие новости:
- [Поисковые технологии, Учебный процесс в IT] Курс “Введение в информационный поиск” и немного истории
- [Программирование, Производство и разработка электроники] Software v.s. Hardware. Или почему электронщику жить тяжело?
- [Поисковые технологии, Законодательство в IT, IT-компании] DuckDuckGo призывает ввести в США выбор поисковика, что снизит долю Google на 20%
- [Разработка веб-сайтов, JavaScript, Node.JS] Архитектура современных корпоративных Node.js-приложений
- [Администрирование баз данных, Открытые данные, Хранение данных, Управление проектами, Управление e-commerce] Открытые и персональные данные. Анализ кейса «утечки данных» с Авито
- [Разработка веб-сайтов, JavaScript, Программирование] Политика общего происхождения и CORS: визуальное руководство (перевод)
- [Разработка веб-сайтов, PHP, Программирование, Go] Мне кажется, дело не в языке, а в том, как на нем пишут
- [Программирование, .NET, C#] Эволюция конфигурации .NET
- [CSS, Клиентская оптимизация, Accessibility, Браузеры] Продуманный front-end. Правильная архитектура для быстрых сайтов (перевод)
- [Программирование, Управление разработкой, Управление проектами, Управление продуктом, DevOps] Типовые ситуации при непрерывной интеграции (перевод)
Теги для поиска: #_poiskovye_tehnologii (Поисковые технологии), #_programmirovanie (Программирование), #_java, #_razrabotka_pod_ecommerce (Разработка под e-commerce), #_hybris, #_ecommerce, #_solutions, #_chat_bots, #_search, #_solr, #_drools, #_sap_commerce, #_blog_kompanii_epam (
Блог компании EPAM
), #_poiskovye_tehnologii (
Поисковые технологии
), #_programmirovanie (
Программирование
), #_java, #_razrabotka_pod_ecommerce (
Разработка под e-commerce
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:56
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Моё хобби ― автоматизация онлайн-ритейла. Уже много лет даже в свои выходные я не вылезаю из этого «болота». Да, наверное, это звучит дико и даже смешно. Как можно увлекаться таким скучным делом? — скажут одни. Что там увлекаться, это просто какая-то частная тема для уважающего себя архитектора ПО! — скажут другие. Действительно, на первый взгляд, это, как говорится, недиссертабельная тема. Фактически, это сборная солянка из разных тем, тем или иным образом притащенных в 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. Также вы узнаете про различные культурные и языковые особенности и специфику оформления фасетного поиска в Японии и Китае. Тимофей кроме хайбриса и всяких айтишних штук давно изучает японский. Мне хотелось бы написать тут «а я — китайский», но увы. У меня труд родился в процессе глубокого изучения темы, вызванного нуждой по работе и желанием раз и навсегда закрыть вопросы, которые меня мучали, а Тимофей просто занимался любимым делом. 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. Наверное, эта статья должна быть полезна тем, кто по роду работы связан с пользовательскими интерфейсами. Несмотря на то, что это самая часто используемая концепция, в ней большой соблазн начать изобретать колеса заново, и очень многие этим пользуются, получая в результате много несостыковок и противоречий. 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-компании, делающего удобнее поиск по антителам и реагентам. «Умный автокомплит» предлагал завершение текущего слова в одно нажатие, опираясь на уже введённые слова, определённые правила сочетаемости и статистику запросов. Ближайший аналог из лингвистики — после ввода глагола с больше вероятностью идёет существительное, чем другой глагол. 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/ Некоторые материалы представлены на блоге не в виде статей, а в виде видеозаписей. К сожалению, такой формат пока ещё не прижился. Здесь я рассказываю про Search Analytics — механизм сбора и обработки статистики, имеющей отношение к действиям покупателей с вовлечением поиска по товарам. Я придумал этот механизм для большого продуктового магазина в Европе и перепроверил его ещё раз для той самой biotech-компании из предыдущего примера. Вкратце, идея сводится к тому, что действия покупателей могут много рассказать про то, как работает поиск, и где у него слабые места. Например, статистика показывает, что некоторые товары ищут часто, но кладут в корзину редко (высокая цена? Устаревшие модели?), а другие — кладут часто, но довольно плохо ищут (подсказки?), а за третьими готовы прокликивать несколько страниц результатов поиска (какие-то нерелевантные товары вылезают вперед?). В общем, это такой Google Analytics, но для поиска. Rauf Aliev Multi-line Search https://hybrismart.com/2017/04/07/multi-line-product-search-for-bulk-orders/ Иметь свой блог удобно тем, что туда можно выгружать идеи и высвобождать мозги под новые. В этой статье я описал концепцию «многострочного поиска» для B2B-сайтов. Идея в том, что часто удобно искать, скопипастив целую группу артикулов или названий товаров в поле для поиска, чем делать это одной строчкой за раз. 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). Rauf Aliev More Like This In SOLR https://hybrismart.com/2017/02/05/more-like-this-in-hybris-solr-search/ Если в прошлой статье мы искали похожие товары по цвету и размеру, то тут показываются похожие по черт знает чему. Система рассчитывает и упорядочивает товары по принципу похожести индексируемого контента — описаний товаров, названий, характеристик. Тем больше сходства, тем ближе товары будут в таких «кластерах» друг к другу. Для пользователя же мы можем вывести товары, находящиеся поблизости в таком «пространстве похожестей», которые скорее всего окажутся товарами-заменителями. Rauf Aliev Concept Aware Search: Automatic Facet Discovery 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, довольно мощную систему управления бизнес-правилами, которая интегрирована в хайбрис для темы акционных механик, темы узкой, но разнообразной в своей узости. Если в двух словах, то Drools — это среда выполнения бизнес-правил. Механизм обрабатывает так называемые «факты» — входные данные, — и выдает результат в результате обработки правил и фактов. В Хайбрисе для Drools сделали интерактивный редактор правил «в терминах e-commerce», а также представили API для расширения. Rauf Aliev ‘Could Have Fired’ https://hybrismart.com/2016/06/04/hybris-6-could-have-fired-messages-poc/ Если какое-то правило срабатывает, то накладывается скидка. Правила применяются к корзине. Мой эксперимент, в описанной статье, показывает, что правила могут применяться не к корзине, но к комбинации корзины и текущего товара. То есть, ты еще на кнопку «купить» не нажал, а уже видишь, какие райские сады и великолепные дворцы сейчас будут добавлены в корзину как подарок. Предполагается, что это должно сделать пользователя счастливее и увеличить продажи. 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 из запроса. Кроме того, что это повышает производительность, это еще позволяет делать довольно сложные акции, где участвует, например, миллионы «фактов». Rauf Aliev Using hybris rule engine for product recommendations https://hybrismart.com/2016/08/09/using-hybris-rule-engine-for-product-recommendations/ В этом примере я показываю, как можно устроить рекомендательную систему на основе правил, используя уже готовый механизм на основе Drools. В моем прототипе рекомендательной системы рекомендации можно создавать интерактивно, конструируя логику связей аксессуаров с товарами или похожих товаров между собой. Например, анчоусы к пиву, ментос — к коле, березовый сок — к буратино, мыло — к веревке, розетку и фай-фай роутер — к чаю и кофе. Рекомендации — это всегда хорошо, когда они со смыслом. 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 позволяет делать это быстро и гибко. Например, в случае екоммерса таких данных много. Самые простые — это клики и переходы… Я записал и публикнул демку, из которой понятно, как это работает. Логи выгружаются куда-то в хранилище, а оттуда попадают в drools fusion для обработки. На языке drools пишутся правила, которые вытягивают из логов какие-то новые знания. В моей демке это просто идентификация фотограф/не фотограф по характеру посещенных страниц и кликов. Например, пользователь уже просмотрел тучу моделей и мы делаем вывод, что он любит моделей. Или долго водит мышью по фотографии любимого штатива, из чего мы делаем что он любит не только модели, но и штативы. Результат правил возвращается обратно в хайбрис и как-нибудь там может использоваться. Баннер показать или цены чуть-чуть понизить на фототехнику. Основная особенность всего этого, что обрабатывается поток событий в реальном времени. В моем примере, это нахождение как минимум пяти страниц одной тематической группы за последние 30 секунд для одного пользователя. Второй важный пункт в том, что такая система очень масштабируема, ведь каждый сервер работает независимо. В то время еще была жива встроенной в хайбрис персонализация. Ее потом заменили на платный сервис. Она была жутко тормозная и поэтому ее мало кто использовал. Здесь же нагружаются серверы, софт которых не стоит ничего: он бесплатен. А в хайбрис потом пропихиваются уже готовые решения, которые нужно там тупо визуализировать. 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. Чтобы плавно закончить тему с Drools и начать тему про всякое разное в екоммерсе и хайбрисе, я представлю еще подробный обзор акционных механик Rauf Aliev Promotion Mechanics and Their Implementation in Hybris https://hybrismart.com/2017/04/30/promotion-mechanics-and-their-implementation-in-hybris-6-x/ Замечаете, почти все темы не совсем и про Хайбрис. Там везде он каким-то боком есть, но в целом екоммерс — это не вещь в себе. Все связано со всем. Конечно, на сайте есть еще десятки материалов, которые довольно сложно понять тем, кто вообще не разбирался с Хайбрисом. 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, и с тех пор тема электронных платежей висела надо мной тёмной тяжёлой тучей, пока я её не приземлил вот в эту статью и осободил мозги под новые челенджи. Там собрано самое необходимое для понимания вопросов интеграции с платежными шлюзами и сервисами, бест практисес и типичные недосмотры, которых нужно избегать (или использовать, если вы злой покупатель). Rauf Aliev Server-side PDF document generation https://hybrismart.com/2017/06/15/pdf-and-sap-hybris/ А ещё раньше, во времена зачеток и пейджеров, я работал дизайнером и верстальщиком (впрочем, в коломенском педуниверситете и пейджинговой компании Мобилтелеком я тоже работал. Да, я уже старый). Не тем верстальщиком, который HTML, а тем, который про книжки и журналы, а иногда даже православные газеты, телепрограммы и ноты. И, конечно, я не мог обойти стороной тему Postscript и PDF, которые пугают очень многих из-за туманных и плохо документированных внутренностей. В статье я показываю, что не так страшен черт, и делаю обзор инструментов под генерацию PDF. 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, описываю как оно получалось (и получилось). Rauf Aliev Geofencing: Custom Shipping Zones https://hybrismart.com/2016/10/19/geofencing-in-hybris-custom-shipping-zones/ Очередной эксперимент: использование размеченных областей на карте Google для различных целей в e-commerce: поиска оптимального склада, поиска доступных магазинов для самовывоза или лучшего доставщика, а может и самого факта возможности продать товар или услугу покупателю из этой зоны. Работает это так: покупатель вводит адрес, а система его определяет в одну или несколько крупных зон. Различные компоненты системы зависят уже от этих крупных зон, а не от мелких компонентов адреса, таких как почтовый индекс. Заодно разобрался с разработкой на 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. Буду рад любым отзывам и предложениям. =========== Источник: habr.com =========== Похожие новости:
Блог компании EPAM ), #_poiskovye_tehnologii ( Поисковые технологии ), #_programmirovanie ( Программирование ), #_java, #_razrabotka_pod_ecommerce ( Разработка под e-commerce ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 23:56
Часовой пояс: UTC + 5