Заказчик — cian.ru — крупнейший в России сайт по недвижимости, обратился в Antida software с задачей разработки каталога загородной недвижимости на ЦИАН.
На cian.ru уже долгое время существует раздел с объявлениями о продаже загородной недвижимости. С помощью глубинных исследований посетителей сайта было обнаружено, что он не решает проблемы той части аудитории, которая ищет дома, таунхаусы и участки от застройщиков коттеджных поселков, то есть «первичку». Чтобы такие пользователи могли принять решение о покупке, им нужно больше информации: кто строит поселок, когда он будет сдан, какие в нем есть типы жилых объектов есть, сколько они стоят, какая инфраструктура есть поблизости, как можно добраться до поселка из города.
Застройщики загородной недвижимости тоже заинтересованы в том, чтобы разместить информацию о своих поселках на ЦИАН и поддерживать актуальность данных, потому что это позволит им получать квалифицированные лиды с сайта.
Было решено добавить на сайт новый раздел — «Коттеджные поселки». Раздел состоит из двух основных частей:
Данные для каталога заполняются контент-командой через админку на основе публично доступных данных и данных, которые предоставляет сам застройщик.
Важной особенностью рынка загородной недвижимости является сезонность: большая часть активности приходится на период с середины апреля по сентябрь. В остальное время потенциальные покупатели только исследуют рынок, и очень редко ездят смотреть объекты или покупают их.
Поэтому для нас критически важно было успеть запустить каталог в начале сезона 2018. Разработка началась в марте, а первый релиз мы запланировали на май. Мы разбили проект на этапы так, чтобы успеть в эти сроки.
Самым первым этапом стала разработка админки для нового раздела. Через админку команда, отвечающая за наполнение каталога, вносит информацию о застройщиках и о коттеджных поселках.
Техническая архитектура в ЦИАН построена на микросервисах. Для админки мы реализовали два новых микросервиса: бэкендовый и фронтендовый.
Серверная сторона написана на асинхронном Python с Tornado. В качестве базы данных используется MSSQL.
На клиентской стороне используются TypeScript и React. Для нас было важно, чтобы админка была удобной и понятной для контент-менеджеров, но при этом не требовала длительного этапа проработки дизайна. У нас это получилось благодаря использованию CSS-фреймворка Twitter Bootstrap.
По завершении разработки админки контент-менеджеры приступили к наполнению, а мы начали разрабатывать пользовательскую часть.
Разработку пользовательской части каталога мы начали с MVP — минимального жизнеспособного продукта, который уже полезен пользователям, но не содержит части задуманной функциональности. К примеру, мы ограничились десктопной версией каталога и не стали делать мобильную в первом релизе. Такой подход позволяет быстро запуститься и собрать больше информации перед тем как инвестировать в новую функциональность.
Для каталога мы разработали еще три микросервиса: бэкендовый на Python и Tornado и два фронтендовых на TypeScript и React.
Бэкендовый микросервис отвечает за реализацию сложной фильтрации поселков в каталоге. Очень важно, чтобы посетитель сайта мог быстро увидеть посёлки, которые соответствуют его запросу. Кто-то может искать только поселки с проведенным газом или только в радиусе 15 км от города. Для этого в каталоге предусмотрены фильтры — всего их около двадцати.
Чтобы фильтрация работала быстро, мы храним поселки в индексе Elasticsearch. Данные между MSSQL и Elasticsearch синхронизируются с помощью отчетных событий о всех изменениях в админке, которые доставляются с помощью RabbitMQ. Помимо отчетных событий есть «догонка» — периодическая сверка данных в базе и в индексе на случай если какие-то из отчетных событий потеряются.
Особенностью фронтендовых микросервисов является наличие SSR — серверного рендеринга на node.js. Серверный рендеринг позволяет отдавать страницы из React-компонентов на клиент в виде уже сформированных страниц. Это дает небольшой выигрыш в скорости загрузки для пользователей, но самое главное — позволяет поисковым системам видеть и индексировать содержимое страниц. После анализа SEO-специалистами, мы реализовали и другие оптимизации, которые позволят большему количеству людей найти страницы каталога в поисковиках.
Как и было запланировано, мы открыли каталог в мае.
Сразу же после запуска первой версии каталога мы продолжили дорабатывать его и добавлять в него новые возможности. Два главных сценария, которые мы добавили в него — возможность поиска по шоссе и по станциям железной дороги.
В результате глубинных исследований выяснилось, что сценарии поиска загородной недвижимости омниканальны. Это значит, что многие пользователи отбирают первичный список объектов, которые им нравятся, на мобильном телефоне или планшете, а затем более детально изучают его на десктопе.
Чтобы поддержать эти сценарии использования, мы реализовали каталог коттеджных поселков на мобильном сайте.
Каталог коттеджных поселков на ЦИАН: cian.ru/kottedzhnye-poselki-moskovskaya-oblast/
В кратчайшие сроки мы запустили MVP каталога коттеджных поселков и продолжили наполнять его возможностями после запуска. Наша команда интегрировалась в процессы ЦИАН и сейчас участвует в разработке наравне с другими продуктовыми командами компании.
“ Antida уже долгое время является нашим важным и надежным партнером в области разработки. Компетенции их команды позволяют нам ставить перед ними сложные и ответственные задачи, которые всегда выполняются на неизменно высоком уровне. Ребята работают абсолютно прозрачно и легко интегрируются в наши внутренние процессы, что для нас является критически важным.