• Обсудить проект
  • Обсудить проект

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

Заказчик

Ампер Электро

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

Основные проблемы заказчика

Медленный, тяжело масштабируемый сайт с неудобным интерфейсом
  • Долгая выгрузка товаров на сайт (со стороны заказчика)
  • Сложность с поиском товаров у покупателя
  • Долгая загрузка страниц товаров
  • Сложность в интеграции сайта с другими сервисами
  • Сайт визуально устарел

Мы предложили решение

  • 01

    Перевести проект на микросервисную архитектуру

    Чтобы:
    • — Масштабировать проект органично с ростом бизнеса
    • — Добиться высокой скорости работы сайта
    • — Быстро внедрять новый функционал
    • — Повысить отказоустойчивость (если вдруг один сервис “ляжет”, сайт продолжит работать)
  • 02

    Улучшить дизайн и добавить функционал

    Чтобы:
    • — Увеличить конверсию
    • — Повысить доверие покупателей
    • — Удерживать клиентов и увеличить конкурентоспособность
Что мы сделали:

Удобный сайт на шаблонном дизайне

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

Быстрый каталог, помимо основного

Удобный сайт, изображение 2

Личный кабинет с историей заказов

Удобный сайт, изображение 3
Что мы сделали:

Внедрили микросервисную архитектуру

Для достижения более гибкой и масштабируемой архитектуры мы перешли от монолитного подхода на Битриксе к микросервисной архитектуре.

Микросервисная архитектура, схема 1

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

Мы разделили функционал и вынесли их в отдельные микросервисы:

  • 1. Каталог товаров

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

  • 2. Индексация поиска

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

  • 3. Изображения

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

  • 1
    Каталог товаров

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

  • 2
    Индексация поиска

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

  • 3
    Изображения

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

Технические решения для разработки микросервисной архитектуры

Хранилище по модели NoSQL

Которое позволяет:
  • Создавать неограниченное количество свойств без ущерба производительности
  • Сохранять высокую производительность даже при больших запросах
  • Наращивать объем каталогов без ущерба системе и упрощать разработки новых импортов из других систем
Микросервисная архитектура, схема 2

Обновление каталога по шине Kafka

Которое позволяет:
  • Непрерывно импортировать каталог: товары попадают в шину из микросервисов из различных источников
  • Индексировать товары для полнотекстового и фасетного поиска: происходит по мере получения и обновления товаров микросервисом «каталог»
  • Исключить нагрузку от интернет-магазина
  • Не проводить полную переиндексацию товарного каталога
Микросервисная архитектура, схема 3
Что мы сделали:

ElasticSearch для полнотекстового поиска

Elastic Search интерфейс

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

Его внедрение позволило:
  • Использовать гибкие поисковые фильтры и встроенные анализаторы текста – для облегчения поиска товаров пользователем
  • Быстро и просто находить необходимые электроматериалы на сайте

Итоги проекта

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

Технологии на проекте:

  • PHP
  • Pug (Jade)
  • React
  • MySQL
  • PostgreSQL
  • Elasticsearch
  • 1С-Битрикс
  • Nginx
  • Docker
  • Apache
  • Kafka