RedLab 26 декабря 2024

Как оптимизировать структуру баз данных для ювелирного интернет-магазина

Аутсорс ИТ-специалисты RedLab приняли участие в реализации проекта по модернизации торговой площадки

Задача и причина

Задача:

Преобразовать систему.

Причина:

База данных не справлялась с обработкой большого количества запросов.

О проекте

Франчайзинговая федеральная ювелирная сеть предлагает покупателям готовые украшения из серебра и золота с драгоценными и полудрагоценными камнями, а также большой выбор оптики, часов и других аксессуаров. Бизнес сотрудничает с 18 мировыми торговыми марками, является почетным членом Гильдии Ювелиров России и объединяет 1000 магазинов в 230 городах.

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

Описание задачи

До подключения команды RedLab ювелирная компания сталкивалась с ошибками при обращении к базе данных — неэффективные запросы приводили к избыточной нагрузке на сервер, возникали неоптимальные и зачастую излишнее индексы, а неправильное планирование конфигураций замедляло работу СУБД. Также некорректная структура БД усложняла процесс создания бэкапов, увеличивая время их выполнения и повышая риск потери данных. Было необходимо:

  • Спроектировать легко поддерживаемую конструкцию.
  • Обеспечить согласованность данных, устранив избыточные сведения.
  • Увеличить надежность резервного копирования.

Реализация

Технологический стек:

  • Postgresql
  • Patroni
  • Python
  • Ansible
  • IaaC
  • Grafana
  • Prometheus

С целью обеспечения надежной и функциональной системы команда RedLab провела следующие работы:

  • Проанализировали текущую ИТ-инфраструктуру, а именно: существующие процессы и инструменты разработки, сборки, тестирования, доставки кода и управления окружениями.
  • Передали данные с OpenTelemetry по проблемным приложениям командам разработки и Ops.
  • Обновили и расширили кластер Kubernetes (K8s) с 15.х до 22.х. Новая группа вычислительных узлов позволила повысить гибкость разработки, уменьшить время развертывания программы и автоматизировать процесс управления контейнерами.
  • Добавили OpenTelemetry к стандартному стеку мониторинга. Удалось улучшить видимость работы приложений и организовать единый источник данных о работоспособности инфраструктуры.
  • Присвоили каждому запросу специальный идентификатор, благодаря которому можно найти конкретные ошибки в работе ПО и не искать примерно подходящие сбои по времени или по IP.
  • Составили план поэтапного обновления кластеров с помощью Kubespray. Получилось легко и быстро развернуть компоненты системы.
Результат

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