
Технологический стек:
-
Magento 2.4.4
-
MariaDB
-
Redis
-
Varnish
-
OpenSearch
Размер проекта:
-
~1,000,000 товаров
-
~3,000 категорий
-
~10,000,000 CMS страниц
Проблема:

Технологический стек:
Magento 2.4.4
MariaDB
Redis
Varnish
OpenSearch
Размер проекта:
~1,000,000 товаров
~3,000 категорий
~10,000,000 CMS страниц
Проблема:
В предыдущей статье я описал процесс импорта продуктов в Magento 2 обычным способом — через модели и репозитории. Обычный способ отличается весьма низкой скоростью обработки данных. На моём ноутбуке выходило примерно один продукт в секунду. В данном продолжении я рассматриваю альтернативный способ импорта продукта — прямой записью в базу, в обход стандартных механизмов Magento 2 (модели, фабрики, репозитории). Последовательность шагов, обеспечивающих импорт продуктов, может быть адаптирована под любой язык программирования, способный работать с MySQL.
Disclaimer: В Magento есть готовый функционал по импорту данных и, скорее всего, вам его хватит. Однако если вам нужен более полный контроль за процессом импорта, не ограничивающийся подготовкой CSV-файла для того, что есть — добро пожаловать под кат.

Magento является e-commerce решением, т.е. больше нацелено на продажу продуктов, чем на сопутствующий продажам складской, логистический или финансовый учёт. Для сопутствующего лучше подходят другие приложения (например, ERP-системы). Поэтому достаточно часто в практике использования Magento возникает задача интеграции магазина с этими другими системами (например, с 1С).
По большому счёту интеграцию можно свести к репликации данных по:
Magento для манипуляции с данными в базе предлагает отдельный класс объектов — репозитории. В силу специфики Magento добавление данных в базу через репозитории легко кодируется, но происходит, скажем так, небыстро. В данной публикации я рассматриваю основные этапы программного добавления в Magento 2 продукта "классическим" способом — с использованием репо-классов.
Выход версии 2.3.0 приблизил использование PWA на фронте Magento-приложений на расстояние вытянутой руки. И если для фронта видны какие-то подвижки в применяемых технологиях, то с админкой всё гораздо стабильнее — старый добрый лабиринт из различных типов файлов, которые нужно поредактировать, чтобы на UI проявилось что-то полезное, усовершенствовать не планируется. В этой статье я описываю создание собственного рендерера для колонки грида в админке — вещи довольно несложной и, в то же самое время, довольно полезной при правильном применении. Например, рендерер для формирования в гриде заказов ссылки на карточку клиента, оформившего заказ:


21-го сентября в Киеве состоялся очередной Magento «Dare to Share» Meetup.
Вашему вниманию предлагаются видео докладов прозвучавших в рамках мероприятия, а также анонсы следующих Magento ивентов этой осенью.
) — Magento 2 directions (Укр.)
) — Микросервисы для Мagento
) — Magento Contribution Day как формат Хакатона
) — Динамическое редактирование фронтенда в Magento
) — Magento Cloud
Тезисы докладов и анонсы следующих ивентов можно прочитать под Катом.
Читать полностью »

Обновления Magento 2.1.9, 2.0.16, принесли множество заплаток в том числе от XSS, CSRF, неавторизированные утечки данных, защита от администраторов/операторов магазинов.
Зацепило даже Magento 1.x, 1.9.3.6 и 1.14.3.6 получили обновления.
Для простоты назовем плохого администратора/оператора — Одмин.
Обновление: Добавлено описание того как происходит утечка данных о заказанных товарах.
Читать полностью »

Ценообразование — пожалуй, достоинство в Magento и самая интересная часть системы.
А для владельца магазина — самая важная часть, так как связано с деньгами.
Ранее коллеги рисовали диаграммы, которые еле помещались на Китайской Стене, пытаясь уместить все-все-все этапы расчета. В этой статье попробую изложить только основные этапы расчета, и пример округления скидок в пользу магазина. К счастью, по сравнению с Magento 1, новшества коснулись самых глубин, подход остался неизменным.

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

В данной статье будет рассмотрен Service Layer в Magento 2 и сервисы (API интерфейсы) для управления сущностями, которые были описаны в предыдущей статье, посвященной проектированию и выделению доменных сущностей для системы управления складом (Inventory).
Читать полностью »

20 Июля в Киевском офисе Magento прошло открытое мероприятие под названием Magento meetup «Dare to Share», которое могли посетить и в котором могли принять участие любые желающие кому интересна платформа Magento 2 и тема электронной коммерции (eCommerce).
В данном отчете публикуются видео докладов прозвучавших на мероприятии, а также принимаются заявки на выступление в следующем ивенте.
) — Magento Community Engineering
) — Автоматизация релизов для Magento 2. Опыт компании The Irish Store
) — Story of a Transformation (Укр.)
) — Dynamic caching of personalised data in Real Life (Укр.)
) — SOLID-ное программирование на Magento 2Тезисы докладов можно прочитать под Катом

Итак, после постановки требований описанной в части 1 можно перейти к проектированию системы.
Основная наша задача в проектировании, как это понятно из названия статьи, добиться разделения интерфейсов на Query и Command, чтобы впоследствии разделить бизнес сценарии на те, которые будут читать данные (Query интерфейсы) и на те, которые будут изменять данные (Command интерфейсы). А также обеспечить минимальное время ожидание (latency) на обновление данных, доступных через Query, после того как мы изменили данные через Command.
Читать полностью »