О чём эта история
Циан входит в топ‑15 сайтов по недвижимости в мире — ежемесячно сайт посещает более 19 миллионов пользователей.
В компании работает более 900 сотрудников в 12 продуктовых направлениях.
За четыре месяца подготовки и полтора месяца миграции Циан перенёс 500 микросервисов своей инфраструктуры в Yandex Cloud. Сервисы работали стабильно во время и после переноса.
Задача компании
Циан — технологичный сервис для покупки, продажи, сдачи в аренду и оценки стоимости недвижимости в России, где также можно рассчитать процентную ставку и получить одобрение по ипотеке. Ежемесячно Циан посещают более 19 млн уникальных пользователей, которые хотят купить, продать или арендовать недвижимость. Публикуется 1,9 млн актуальных объявлений от собственников и агентств недвижимости.
Компания стабильно растёт с 2015 года, в том числе повышается нагрузка на инфраструктуру. В 2018 году начались ощутимые проблемы из‑за периодических даунтаймов, которые вредили репутации и требовали внимания и ресурсов.
Команда Циан поставила две основные цели:
— создать стабильную инфраструктуру;
— организовать подход Infrastructure as Code (IaC) с применением Terraform.
Было два очевидных пути реализации этих целей:
- Самостоятельно развернуть и настроить необходимую инфраструктуру.
- Найти готовое решение.
Первый вариант предполагал большие временные затраты, расширение штата и увеличение ФОТ. Поскольку Циан был ограничен во времени — компании не хотелось продолжения даунтаймов, — команда приняла решение делегировать часть инфраструктурных задач облачному провайдеру.
Облако для миграции 500 ТБ данных без даунтайма
Изначально компания выбрала зарубежного облачного провайдера, но основная аудитория Циан — российская, поэтому в 2022 году Циан решил локализовать проект и избежать возможных валютных и лицензионных рисков. Для Циан было важно:
— перенести сервисы за 1–2 месяца;
— провести миграцию без значительных даунтаймов, особенно в прайм‑тайм;
— перенести более 500 ТБ данных.
Ещё в 2020 году Циан выбрал Yandex Cloud как инструмент для аварийного восстановления, потому что у Yandex Cloud была широкая поддержка модулей Terraform. Работа с Yandex Cloud в рамках disaster recovery была успешной, и в качестве основного облачного провайдера на российском рынке Циан рассматривал только Yandex Cloud.
Переезд за 2 месяца после 4 месяцев подготовки
Архитектура Циан перед переездом в Yandex Cloud включала в себя 500 микросервисов и 2 монолитных приложения. Один из монолитов был размещён в контейнерах, второй развёрнут с помощью Windows IIS. Технологический стек компании включает Python, C#, Node.js. Работа с данными велась в PostgreSQL, MSSQL, Cassandra, Elasticsearch; приём и отправка сообщений — в RabbitMQ и Kafka.
Подготовительный этап миграции в Yandex Cloud занял 4 месяца. Из них 2 месяца ушло на проверку осуществимости миграции. На этом этапе, например, пришлось изменить конфигурацию сети. Работа в Yandex Cloud отличалась от работы с предыдущим поставщиком, поэтому Terraform и Salt разворачивали в течение месяца. И ещё месяц работали над возникшими с ними проблемами. Параллельно с этим делали утилиту для миграции микросервисов.
В минимальном объёме нужные компоненты развернули в то время, когда Yandex Cloud служил инструментом для аварийного восстановления. Перед основным переездом тестировали компоненты.
За полтора месяца миграции микросервисы и один монолит перенесли в Yandex Managed Service for Kubernetes®, а монолит на Windows IIS — на виртуальные машины Compute Cloud. Для хранения данных используют объектное хранилище Object Storage, для гибкой работы с документоориентированными моделями данных — Managed Service for MongoDB, для эксплуатации и администрирования реляционных баз данных — Managed Service for PostgreSQL и Managed Service for MySQL®.
В процессе переноса команда столкнулась с проблемой. Максимально кластер Kubernetes можно разделить на 128 нод, а Циан было необходимо 250 нод. Для решения этой проблемы развернули несколько кластеров на Vanilla Kubernetes. А чтобы приложения могли продолжать обращаться друг к другу по имени, сделали синхронизатор эндпоинтов. При развёртывании микросервиса в одном кластере и создании его виртуальной копии в другом синхронизатор точно фиксирует изменения в микросервисах.
Были и другие сложности, но все их удалось решить. Например, иногда отсоединялись сетевые диски и исчезало сетевое подключение. Для решения обновили драйвера и сменили процессоры на семейство Ice Lake (платформа v3). Циан также решил использовать нереплицируемые SSD для работы MSSQL, потому что в данном случае критична скорость работы железа.
Процесс непрерывной интеграции и развёртывания был развит у Циан ещё до миграции, и благодаря тому, что Yandex Cloud уже использовали как инструмент аварийного восстановления, изменения пришлось внести небольшие — сделали генерацию манифестов для Kubernetes.
Результаты
В кейсе Циан облако Yandex Cloud помогло решить вопрос локализации инфраструктуры, а автомасштабирование, возможное только в облачной инфраструктуре, помогает оптимизировать финансовые затраты. Плюсом миграции стало и то, что Циан не нужно подолгу ждать новое оборудование, что неизбежно при использовании физических серверов.
Широкий набор сервисов Yandex Cloud позволил Циан подобрать решения для своего стека технологий. Циан получил стабильную работу своих сервисов, SLO (цели уровня обслуживания) в 99,9% по основным страницам и API, Infrastructure as Code вместо ручных изменений.
Миграцию масштабной инфраструктуры удалось провести за полтора месяца и избежать даунтаймов при переезде.
Мнение
В Yandex Cloud нам очень помогала служба поддержки. При возникновении сложностей нам давали специалистов, которые очень хорошо разбираются в этой проблеме. Кроме того, можно было решить её непосредственно с архитекторами. Это очень облегчило процесс переезда и дальнейшей работы.