ITSumma перевезла в новый дата-центр и доработала инфраструктуру Тануки
«Тануки» — сеть ресторанов японской кухни с круглосуточной доставкой роллов и трафиком на сайте в 500 тыс. пользователей в месяц. Всего в сети более восьмидесяти заведений, которые работают в Москве, Воронеже, Екатеринбурге, Краснодаре, Нижнем Новгороде, Перми, Самаре и Уфе.
Во время сезонного наплыва покупателей инфраструктура клиента не справлялась с большой нагрузкой. Проблемы наблюдались на десктопе и в мобильных приложениях для IOS и Android. Кроме этого компания создавала новый сайт и собиралась мигрировать в другой дата-центр.
Какие были задачи
- Безболезненный переезд в новый дата-центр
- Организация комфортной среды разработки для нового API и сайта
- Стабилизация работы приложений
- Доработка инфраструктуры: внедрение системы кэширования, логирования и мониторинга
Проблемы проекта
- Недостаточно надежный механизм балансировки в конфигурации БД. Мастер-мастер репликации приводили к частым сбоям;
- Слейвы на каждом бэкенде требовали большой объем дискового пространства. Любые манипуляции или добавление новых бэкенд-серверов требовали больших затрат;
- Не было общей системы деплоя приложений — была самописная система деплоя через веб;
- Не было системы сбора логов, вследствие чего достаточно сложно расследовать инциденты. В первую очередь, в работе с системой заказов, поскольку нет возможности определить, как был принят тот или иной заказ;
- Отсутствовал мониторинг бизнес-показателей — не было возможности своевременно фиксировать снижение или полное отсутствие заказов.
Проведенные работы
- Стабилизация работы и настройка кластера БД
- Обновление версий PHP
- Внедрение системы кеширования
- Формирование метрик и системы мониторинга
- Разработка и внедрение пайплайнов и конвейера CI/CD
- Перенос инфраструктуры проекта в новый дата-центр
- Разработка решения для управления настройками приложений
- Доработка инфраструктуры для улучшения связности и стабильности
Предложенные решения
- Отказаться от плавающего IP в пользу прокси-сервера, где между мастерами будет контролируемо переключаться апстрим.
- Выделить два отдельных сервера под слейвы.
- Настроить мониторинг заказов на уровне запросов в БД.
- Первоначально внедрить пайплайны на dev-контурах для ускорения разработки, а потом скопировать на stage.
- Сформировать и настроить все необходимое для стабильной работы сайта: логи, бэкапы, кэширование, мониторинг, балансировку нагрузки, CDN, брокер очередей.
- Разработать решение, которое позволит управлять настройками приложения через веб-интерфейс.
Как проходила миграция
Первый этап
На первом этапе были созданы реверс-прокси серверы в новом ДЦ.
Второй этап
Запустили все инфраструктурные сервисы — логирование и CI/CD.
Третий этап
Мигрировали БД, Redis и брокер очередей — RabbitMQ.
Четвёртый этап
На подготовительном этапе репликация БД между дата-центрами не поднималась, поэтому мы просто перенесли бэкапы.
Пятый этап
Переключение сервисов на новый ДЦ. Предварительно были организованы необходимые реплики из старого ДЦ в новый. И в согласованное окно работ мы переключили трафик на новую инфраструктуру.
Стек
- React
- PHP
- Nginx
- MySQL
- Redis
- Bitbucket
- Jenkins
- ELK
- RabbitMQ
- Haproxy
- Consul
- Hashicorp vault
- Qrator
Результат
Так инфраструктура выглядела после доработок
- Весь трафик поступает на балансеры. Трафик до API идет с приложения Тануки (на Android/iOS) не напрямую, а через Qrator.
- На static сервере находится основной сайт проекта tanuki.ru, сервер с лендингами.
- Кластер бэкенда состоял из серверов: фронтенд, статика, серверов под приложения.
Что изменилось для заказчика
Надежность системы
Переезд и оптимизация инфраструктуры исправили проблему с оформлением заказов, сайт и приложения стали работать стабильнее.
Процесс разработки
У команды появилась полностью автоматизированная среда разработки CD/CD.
Отказоустойчивость
Инфраструктура сейчас выдерживает большой трафик. Например, в праздничные дни RPS достигает пика в 550 единиц.
Сколько заняли работы
Инфраструктура клиента представляла собой обширную систему, в которую постоянно добавлялись новые сервисы. Параллельно со стабилизацией мы создавали новую среду для разработчиков и отстраивали CI/CD. Переезд в ДЦ проходил с перерывами на другие работы.