Мы занимаемся разработкой и технической поддержкой сервиса Apteka.ru уже 7 лет. За это время было выполнено около 2300 задач! Объем работы настолько велик, что проанализировать все – довольно сложная задача.
Но мы постарались систематизировать наш опыт, чтобы поделиться им с коллегами.
Давайте поговорим о решениях, которые помогли сделать сервис интернет-аптекой №1 в России – как по обороту, так и по времени, которое пользователи проводят на сайте.
Клиент
Apteka.ru — федеральный сервис по поиску и бронированию лекарств и товаров для здоровья, проект крупного фармацевтического дистрибьютора в Рунете АО «НПК «Катрен».В 2018 году на сайт пришлось 31% от общего объема продаж интернет-аптек.
По рейтингу АКИТ входит в ТОП-10 по количеству заказов среди всех российских интернет-ресурсов.
На протяжении 7 лет сервис ежегодно увеличивал свои показатели вдвое, а в 2019 году рост ускорился.
По итогам 2019 года оборот Apteka.ru увеличился на 171% и превысил 34 млрд рублей, а количество заказов увеличилось в 2,7 раза.
В настоящее время на сайте размещается более 2 миллионов заказов в месяц.
Ассортимент Apteka.ru включает до 28 000 позиций от 840 российских и зарубежных брендов.
Сервис работает строго в рамках закона.
Клиент оформляет заказ на сайте, информация о нем поступает в систему, оперативно обрабатывается, и товар отправляется в выбранную аптеку.
Цели и задачи: эволюция
По мере развития проекта менялись цели и задачи заказчика.Условно их можно разделить на три этапа.
Начальная ступень.
Начинать Сайт представляет собой стандартный интернет-магазин на базе CMS 1С-Битрикс.
Функционал простой — продемонстрировать каталог товаров и реализовать схему их приобретения через партнерские торговые точки.
Вторая фаза.
Масштабирование За первый год реализации проекта товарооборот увеличился в 36 раз.
Посещаемость сайта увеличилась, возникла необходимость повысить конверсию и использовать новые способы стимулирования продаж.
Сервис начал превращаться в крупный розничный проект, а это потребовало более сложной разработки с использованием нестандартных инструментов.
Основной целью было создание стабильного интернет-магазина, приносящего прибыль компании за счет сотрудничества с поставщиками и аптеками.
Совместно с заказчиком мы сформулировали основные задачи:
- Улучшенное удобство использования.
- Внедрение нового функционала.
- Интеграция с внешней учетной системой.
- Дополнительная монетизация сайта – привлекайте больше пользователей с помощью маркетинговых инструментов, программ лояльности, предлагайте рекламные услуги партнерам и поставщикам.
- адаптивность для мобильных устройств;
- время загрузки – не более 2-3 секунд (по состоянию на январь 2020 года – 1,5 секунды для главной страницы).
Третий этап.
Техническая поддержка и оптимизация К 2017 году сервис стал одним из лидеров в своем сегменте и единственным специализированным ресурсом в сфере медицины и здоровья в топ-30 крупнейших российских сайтов по объему продаж.
С этого момента важно было сохранить, а затем и укрепить свои позиции.
На первый план вышли новые задачи:
- Обновление сервиса под текущие требования клиентов и рынка.
- Модернизация стека технологий и рефакторинг кода.
- Обеспечение стабильной работы высоконагруженного проекта.
- Редизайн и улучшение интерфейса.
Решения
Масштабирование
Интеграция с учетной системой Мы настроили соединение с внешней учетной системой заказчика – SAP Business Explorer (BE).Необходимо было добиться постоянного динамического обновления информации в 1С-Битрикс: Управление сайтом, чтобы на сайте всегда была актуальная информация.
Интеграцию пришлось писать с нуля.
Мы получили готовый протокол межсетевого взаимодействия со стороны BE. Для этого мы разработали взаимодействие на своей стороне: обработку пакетов (сгенерированных блоков данных), поступающих от BE, и отправку их в учетную систему.
Потом возникла трудность — количество посылок выросло настолько, что мы не успели их отправить.
Чтобы ускорить процесс, мы реализовали брокер сообщений RabbitMQ. Это помогло существенно улучшить производительность отправки пакетов и масштабировать эту процедуру.
Теперь, если возникнет необходимость отправить большое количество пакетов, вы легко сможете увеличить количество воркеров, и они справятся с возросшей нагрузкой.
Настройка цен Типичные цены интернет-магазина не могут удовлетворить все потребности клиентов.
По запросу мы написали индивидуальную программу ценообразования, которая имеет более высокую производительность, учитывает особенности самого проекта, а также взаимодействие с системами учета и ценообразования клиента.
Цена конкретного товара для каждого пользователя рассчитывается индивидуально в зависимости от его клиентской истории и других параметров.
Улучшение коробки Битрикс Изначально сервис Apteka.ru разрабатывался на Битриксе, поскольку данное решение было оптимальным для интернет-магазина – коробочная версия позволяет быстро запустить сайт. Однако есть и недостаток – система настраивается в достаточно узком диапазоне, ее сложнее настроить под задачи проекта.
Поэтому масштабирование потребовало разработки расширенной архитектуры программного обеспечения.
Apteka.ru предлагает множество продуктов с разными названиями и свойствами, что усложняет фильтрацию и поиск и замедляет работу сайта.
Нам пришлось проделать большую работу с базами данных и добавить новый функционал для разработки модулей.
В частности, мы:
- Мы использовали контейнер внедрения зависимостей Dependency Injection, на основе которого построили систему модулей — более гибкую, удобную и расширяемую.
- Мы реализовали компоненты Symfony — шаблонизатор и компонент для создания консольных команд. Это облегчило создание визуальной составляющей проекта, улучшило читаемость кода, а также расширяло и переопределяло шаблоны, не нарушая общий алгоритм.
- Система отзывов и рейтингов.
Пользователи смогли оценить товары в некоторых категориях по пятибалльной шкале, а также оставить о них отзывы.
Комментарии публикуются на сайте автоматически, но модератор может их редактировать или удалять.
Технически это реализуется так: модуль получает информацию о том, по каким категориям товаров можно оставлять отзывы, и передает ее в базу данных.
- Модуль напоминаний для пользователей написан с нуля на PHP. Если клиент заказал препарат, который необходимо принимать курсом, он получит об этом напоминание.
- Трекин г – пользователь может отслеживать перемещение заказа на карте и видеть время доставки.
- Сервис имеет обширную админ-панель, включающую от 150 до 200 страниц.
Через него вы можете управлять разными элементами сайта – заказами, пользовательскими данными, товарами, контентом.
Чтобы максимально упростить процедуру заказа лекарств, заказчик предложил использовать API сервиса Яндекс.
Карты.
Система автоматически определяет местоположение пользователя и загружает карту с ближайшими аптеками, доступными для доставки.
Учитывая, что в базе проекта Apteka.RU более 80 000 аптек, такое решение оказалось оптимальным.
Поисковая оптимизация в 3 этапа Мы уделили много времени поисковой оптимизации – основному инструменту привлечения пользователей на сайт. На старте проекта мы сделали ряд внутренних доработок сервиса для повышения релевантности результатов поиска.
Встроенный в CMS поиск быстро перестал справляться с входящими запросами.
Мы установили и настроили поисковую систему Sphinx, которая на тот момент имела хорошую производительность.
Служба поиска стала работать быстро и без сбоев.
Однако через несколько лет текущая версия Sphinx уже не так активно поддерживалась разработчиками, из-за чего не обеспечивала необходимой стабильности.
А самое главное, чтобы реализовать новый функционал, который требовал заказчик, нам пришлось бы создать кучу «костылей».
Несколько раз из-за проблем в поисковой системе возникали проблемы с доступностью сайта.
Мы оперативно внесли улучшения для обеспечения бесперебойной работы сервиса.
Но стало ясно, что это не выход. Мы решили перейти на Elastic Search, более современный движок с открытым исходным кодом.
Его преимуществами являются более стабильная работа, высокая производительность и расширенные возможности поиска пользователей.
2. Техническая поддержка
Когда сайт был запущен, для его работы было достаточно одного сервера.Посещаемость начала быстро расти.
Поначалу мы справлялись с нагрузкой, просто оптимизируя код и SQL-запросы.
Более того, удалось добиться хорошего роста производительности труда.
Но затем этот ресурс был исчерпан.
Возможностей для оптимизации кода было все меньше и меньше.
Потом мы перенесли часть сервисов (в частности, базу данных) на другие сервера.
Эта конфигурация какое-то время работала, но потом и ее стало недостаточно.
Мы начали масштабировать отдельные сервисы.
Вместо одного сервера мы добавили несколько PHP-серверов и организовали балансировку нагрузки между ними.
Тот же принцип использовали при масштабировании базы данных — разделили ее на несколько баз данных, нагрузка между которыми балансировалась.
В начале проекта мы использовали веб-сервер Apache для обработки запросов.
Но при высоких нагрузках он работал плохо.
Затем мы настроили веб-сервер на базе технологий Nginx + Php-Fpm, после чего сайт стал намного стабильнее и производительнее.
Посещаемость службы растет. В 2019 году были достигнуты рекордные показатели за всю его историю.
В месяц интернет-магазин посещают более 11 миллионов пользователей.
Чем популярнее становился сервис, тем чаще на него совершались DDoS-атаки.
Мы были к этому готовы: постоянно увеличивали мощности серверов и развивали серверную архитектуру.
Повысить отказоустойчивость удалось за счет перераспределения нагрузки и взаимозаменяемости серверов.
Во время массовых DDoS-атак мы блокировали запросы с IP-адресов из других стран.
Кроме того, в ноябре 2019 года мы подключили сервис DDoS-Guard для автоматической защиты от ботов.
Это значительно улучшило защиту от хакерских атак.
3. Оптимизация
Функционал сервиса расширялся с каждым годом.Возникли новые требования к производительности, качеству кода, удобству сопровождения и читабельности.
Для решения этих задач мы использовали два метода:
- Рефакторинг кода позволяет уменьшить количество ошибок пользователей и сделать сервис более стабильным и безопасным.
- Изменение технологического стека или рабочего механизма.
Если необходимы более радикальные меры, мы предлагаем новые веб-решения.
- Интеграция Doctrine ORM. Раньше для работы с базами данных использовались нативные запросы, SQL-запросы или API Битрикса.
Doctrine ORM — это своего рода связующее звено между базой данных и кодом для размещения/извлечения созданных объектов из базы данных.
Использование этой технологии позволило повысить скорость разработки, производительность и общее удобство работы над проектом для программистов.
- Логика корзины покупок мобильное приложение перенесено на серверную часть.
Мы настроили передачу данных о пользователе, его корзине и выбранных товарах через API. Раньше данные хранились оффлайн в мобильном приложении, что затрудняло быстрое внесение изменений.
Например, на сайте уже изменилась цена товара, а в приложении еще нет. Теперь бэкенд корзины хранится на сервере и одинаково доступен как для мобильной, так и для настольной версии.
Для этого нужна активная позиция – обосновать свое мнение, показать конкретную выгоду.
В результате мы действуем в интересах клиента – помогаем сэкономить бюджет, и предостерегаем от внедрения заведомо неэффективных решений.
Заказчик начинает это ценить и доверять нашим рекомендациям.
Полученные результаты
Мы создали платформу для эффективного масштабирования проекта.Мы выполнили комплекс работ по SEO-оптимизации, технической реализации маркетинговых мероприятий и разработке интерфейса.
Мы реализовали решения по расширению серверной архитектуры и технической поддержке высоконагруженного проекта.
Это способствовало улучшению бизнес-результатов клиента.
Сегодня Apteka.ru — единственный специализированный интернет-магазин, который принимает заказы в объемах, сопоставимых с крупнейшими маркетплейсами.
По данным Data Insight, в первом полугодии 2019 года сервис вошел в тройку лидеров по динамике роста наряду с Wildberry и Ozon.ru, а также стал сервисом №1 по посещаемости среди аптечных сетей.
Apteka.ru неоднократно получала высокую оценку профессионального сообщества и завоевывала престижные отраслевые награды.
Последние награды 2019 года:
- Первое место в рейтинге наиболее часто используемых фармацевтами профессиональных сайтов (по данным опроса сотрудников аптек аналитической компанией Ipsos).
- Диплом лауреата фармацевтической премии «Зеленый Крест» в номинации «Лучшая система заказа и бронирования».
-
Фондовая Биржа
19 Oct, 24 -
Вспоминая Прошлое
19 Oct, 24 -
Из Iphone Можно Сделать Пленочную Камеру
19 Oct, 24