О чем эта история

Жилищная экосистема ВТБ «Метр квадратный» — открытая цифровая платформа в сфере недвижимости, которая дает доступ покупателям и риелторам к огромной детализированной базе объявлений, а также другим полезным сервисам. Ежемесячно ее посещают 50–60 тысяч уникальных пользователей. Основа платформы «Метра квадратного» — 150 микросервисов, которые развернуты в среде Kubernetes и работают с такими СУБД, как ClickHouse, Mongo DB, PostgreSQL и т. д.

Благодаря Yandex.Cloud удалось выстроить отказоустойчивую и гибкую платформу, которая готова к повышенным нагрузкам и масштабированию. Команда технических специалистов осталась прежней, а скорость разработки и деплоя новых приложений выросла.

Как подготовили платформу к высокой нагрузке

Жилищная экосистема ВТБ «Метр квадратный» — открытая цифровая платформа для работы в сфере недвижимости, которой ежемесячно пользуются около 60 тысяч уникальных пользователей: покупателей недвижимости и риелторов. Она состоит из крупных сервисов: поиск квартир, база объявлений для риелторов, ипотечное кредитование и гарантия сделки.

Платформу запустили в 2019 году и изначально проектировали таким образом, чтобы вся инфраструктура размещалась в облаке. Работа ресурса построена на 150 микросервисах, половина из которых была развернута в среде Kubernetes, а вторая половина — на выделенных виртуальных машинах с Docker.

Еще когда проект был на стадии MVP и им пользовались первые несколько тысяч посетителей, команда начала готовиться к росту и планировать масштабирование. Необходимо было решить две приоритетные технические задачи: поддерживать стабильную работу при росте нагрузки и сделать работу с сервисами более управляемой.

Платформе «Метр квадратный» было нужно, чтобы:

  • провайдер предоставлял большое количество сервисов как услугу, и инженеры внутри команды меньше времени тратили на администрирование и больше на развитие ресурса;
  • доступ к управлению возможностями облака был у команды, и она могла оперативно менять настройки;
  • дата-центры располагались в разных локациях, чтобы была возможность организовать безотказную работу платформы: спроектировать работу таким образом, чтобы при отказе одного из них другие полностью справлялись со всей нагрузкой;
  • ЦОД располагались на территории России, а сервис имел аттестат соответствия ИСПДн требованиям безопасности информации и персональных данных, который нужен по федеральному закону № 152-ФЗ «О персональных данных».

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

Остановили свой выбор на управляемых сервисах Yandex.Cloud, которые предоставляются в составе платформы данных — комплексной экосистемы для хранения и обработки данных. «Метр квадратный» получает доступ как к самим сервисам, так и к средствам их интеграции друг с другом. Настройка осуществляется через панель управления, а круглосуточная техническая поддержка Yandex.Cloud готова оперативно ответить на сложные вопросы, которые не удалось решить самостоятельно.

Дата-центры Yandex.Cloud есть в трех областях: Московской, Владимирской и Рязанской. Инфраструктура каждого из них называется зоной доступности и предоставляется Yandex.Cloud по умолчанию. Работа каждой зоны доступности независима от двух других, что позволяет организовать отказоустойчивую работу. Вся инфраструктура Yandex.Cloud имеет сертификацию, позволяющую хранить персональные данные пользователей, и соответствует требованиям 152-ФЗ.

Переезд среды Kubernetes и всех баз данных за неделю

Миграция в Yandex.Cloud включала три типа задач: перенос среды Kubernetes, баз данных и выстраивание инфраструктуры.

Миграция среды Kubernetes

На момент переезда из 150 микросервисов только половина управлялась средствами Kubernetes, а остальные были развернуты на выделенных виртуальных машинах с Docker, которые управлялись при помощи Docker Compose. Перед командой стояли задачи: перенести существующую среду в сервис Yandex Managed Service for Kubernetes®, а оставшиеся приложения контейнизировать уже в новом облаке. Обе задачи были решены без сложной настройки, потому что Yandex.Cloud берет на себя большую часть задач по обслуживанию кластера Kubernetes: развертывание виртуальных машин, настройку сети, установку необходимого ПО и т. д.

Команда выбрала дату окончательного переезда. Миграция приложений началась за неделю до этого. В первую очередь перенесли те приложения, которые работают не в режиме реального времени, а уже в день переезда были обновлены realtime-приложения и перенесены API.

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

Перенос базы данных

Для управления базами данных в облаке использовались сервисы платформы данных: Yandex Managed Service for MongoDB, Yandex Managed Service for ClickHouse и Yandex Managed Service for PostgreSQL. Переезд проходил по частям в течение двух дней. Сначала специалисты «Метра квадратного» делали бэкап текущей базы, переносили ее в облако, переключали сервис на новую базу и затем перезаливали разницу, которая образовалась за время переноса. Нагрузка на платформу на тот момент была небольшая, и все эти процессы прошли для пользователей незаметно. «Метр квадратный» мигрировал в облако до того, как в Yandex.Cloud начал работать сервис Data Transfer, который позволяет существенно упростить этот процесс: теперь все настройки можно сделать в его консоли управления за несколько минут, миграция пройдет с минимальным простоем приложений, а в случае сбоя сервис автоматически начнет миграцию с предыдущего этапа.

После завершения переноса провели тестирование и переключили записи в DNS, а в течение следующего месяца переносили около 15 ТБ данных в объектное S3-хранилище Yandex Object Storage.

Управление инфраструктурой

Сейчас работа платформы «Метра квадратного» выстроена таким образом, что под каждый инстанс, виртуальную машину, базу данных или связку используют модули, которые разрабатывают сами. Эти модули складывают в репозиторий. Команда придерживается подхода «инфраструктура как код», поэтому репозитории хранятся в Git и управляются оттуда.

Отдельная группа репозиториев описывает среды dev, test, stage и prod. Она взаимодействует с Yandex.Cloud, где созданы такие же папки, как в репозитории. Это сделано в целях безопасности: у большинства разработчиков есть доступ в dev и test, но в stage и prod доступ ограничен.

На данный момент весь входящий трафик платформы «Метра квадратного» сначала попадает на внешний сервис защиты от DDoS-атак и нежелательного трафика. После этого трафик переходит на балансировщики Yandex.Cloud, а затем на клиентские L7-балансировщики. Дальше он распределяется по внутренним сервисам. На момент миграции в Yandex.Cloud был только L3-балансировщик, а сейчас есть сервис Application Load Balancer, который позволяет существенно упростить маршрутизацию трафика на уровне L7.

Динамическое масштабирование — оптимальное решение при быстрорастущей нагрузке

Миграция в Yandex.Cloud позволила «Метру квадратному» построить инфраструктуру без увеличения штата технических специалистов, потому что большая часть задач по настройке предоставляется как услуга. Также после перехода на Yandex Managed Service for Kubernetes® стало проще разворачивать новые сервисы, что не только увеличило скорость разработки и деплоя новых приложений, но и сделало весь проект масштабируемым.

Создаваемая в такой среде платформа «из коробки» получала резервирование: благодаря работе в трех зонах доступности и правильному распределению нагрузки удалось выстроить отказоустойчивую инфраструктуру, которая готова к повышенным нагрузкам.

На ближайший год запланированы рекламные кампании, которые могут кратно увеличить нагрузку на платформу. Построенная инфраструктура может масштабироваться динамически и не будет сдерживать развитие «Метра квадратного». Также важным фактором является возможность обновления сервисов в режиме zero-downtime deployment, когда все обновления на платформе происходят незаметно для конечных пользователей.

Мнение

Алексей Завгородний,
руководитель департамента информационных технологий платформы «Метр квадратный»
Алексей Завгородний,
руководитель департамента информационных технологий платформы «Метр квадратный»

Самое ценное в работе с Yandex.Cloud — готовность к диалогу. Сервис постоянно развивается, что, с одной стороны, дает нам новые возможности, с другой — требует дополнительной наладки и настройки. В этот момент чрезвычайно важно иметь эффективную коммуникацию и быть уверенным в доступности специалистов. На сегодняшний день мы считаем, что нашли рациональный баланс между получением сервисов «из коробки» и экономией на внутренних ресурсах компании для построения отказоустойчивой платформы.

Есть похожая задача?

Напишите нам

И мы оперативно расскажем о возможностях Yandex.Cloud для вашего бизнеса или подберём партнёра, который полностью реализует ваш ИТ-проект.

Связаться со специалистом Yandex.Cloud
Как к вам обращаться?
Телефон
Email
Компания
Частное лицо
Должность
Размер компании
Индустрия
Какую задачу вы хотели бы решить? (Опционально)