Как стать автором
Обновить
Привет, Хабр! Меня зовут Алексей Чеканов, я технический директор ЦИАН. Разработка определяет успехи нашего проекта, и чем дальше, тем заметнее. Чтобы расти, нам нужно больше IT-специалистов — и для решения нетривиальных задач, и для поддержки существующих сервисов. Ниже я расскажу, как устроен отдел разработки в ЦИАН, чем он занимается и что ждет того, кто к нам попадет.
Подробности – под катом
Всего голосов 34: ↑34 и ↓0+34
Комментарии43

Комментарии 43

Слоган над космонавтом — норм)

Получается, Ваше приложение состоит из 2-х монолитов и ряда микросервисов? и все они между собой взаимодействуют через RabbitMQ?

Http вызовы + сообщения очередей — это основные каналы взаимодействия, да. И в обоих каналах приложения должны придерживаться объявленного контракта (request/response схемы или model события). У нас также есть система (пока она работает только для api вызовов), которая валидирует при выкладке, что не произошло breaking change в принимаемых api или вызываемых среди всех монолитов и микросервисов (мы умеем по коду автоматически найти схемы request / response приложения).

>В платформе логирование идет в кластер ELK. В сутки ~4 Тб логов и ~3.8 млрд. записей.

Можно поподробнее про это? 8k RPS => 700 млн. записей в день, откуда берется 3.8 млрд и что делаете с такими объемистыми логами?

Думаю подробнее расскажем в отдельной статье. Вкратце, логируем не только акцесслоги, но и события в микросервисов, цепочки вызовов, ошибки, ворнинги и т.д. Все это позволяет мониторить и отлаживать систему. Также на базе этих логов строим siem систему

Интересно: как можно разобраться в 4Тб логов, и на сколько нужно логировать так подробно?
Да, можно и больше — это не «rocket science». Filebeat -> Kafka -> Logstash -> Elastic. Логируем мы также логи приложений уровня info и выше + всякие события с других систем: к примеру, в mssql настроены extended events на тяжёлые запросы, чтобы если кто-то нагнул БД, то мы бы смогли ретроспективно посмотреть кто это был.
Нормальная практика это не смотреть постфактум — кто нагнул, а передавать запрос еще до внедрения спецу по SQL, который разберет его, разложит по полочкам, в какой ситуации и как он будет работать. По своему опыту в 90% разработчики бэкенда такой треш в запросах к базе ваяют, что волосы дыбом встают.
Не смотря на то, что я согласен, что специально обученный человек смог бы такое замечать, к сожалению, это так не работает, когда у вас столько выкладок в день как у нас. Для «масштабирования» процесса вам просто придётся держать штат таких людей и заставлять их заниматься одним и тем же каждый день. Это приводит к тому, что либо у вас будут джуны на таком сидеть (и качество инициативы сомнительное), либо текучка нормальных спецов (потому что тупеешь, если твоя работа только в постоянно смотреть пулрики).

Мы сейчас идём другим путём — хотим, чтобы у каждого микросервиса был, скажем, свой микрокластер postrgre или elastic (на контейнерах, чтобы не получать оверхед от виртуалок). Тогда мы сможем ограничить негативное влияние одного микросервиса на другие.

Мы всегда исходим из того, что накосячить могут все и очень разным способом и под каждый способ накосячить невозможно держать отдельного человека, поэтому более стратегически правильно научиться минимизировать взаимовлияние (изоляция + деградация) и время простоя компонент (алерты + автоматизация).
А почему у компании такое токсичное название — это как-то помогает продавать недвижимость?

:) ЦИАН — это аббревиатура Центральное Информационное Агентство Недвижимости. Наследие истории.

Тоже всегда интересовал вопрос почему cian, оказывается все так просто :)
да :)
Цифровизация — это, конечно, хорошо. Но почему при поиске квартир с активированным фильтром «тип дома: кирпич, монолит» ЦИАН иногда подкидывает квартиры в панельных домах, у которых это даже написано в разделе «О доме»?
Потому что у Циана есть спонсоры, которым разрешено добавлять на сайт «заманухи». В первую очередь Инком, но может быть есть и другие.

Отсюда квартиры в панельных домах при поиске кирпичных, отсюда квартиры с газовыми плитами в электрифицированных домах и так далее. Важно, чтобы вы увидели «замануху», а цифровизация это вторично.
Возможно, это реклама (как в поисковиках, когда вот вы искали обои, а вам также предлагают перфораторы). А, возможно, это баг — у нас достаточно серьёзно относятся к разбору вопроов и отзывов пользователей — попробуйте описать проблему через обратную связь.

8k rps и 300 серверов… Куда столько? Допустим с десяток фронтов, бэки, очереди, базы, реплики, статика, логи… но куда 300?

Может по физическому серверу на каждый микросервис + резервирование?
Тогда вполне можно понять.
Никто ж не писал, что на каждом из серверов топовое железо — может 2/3 на Атомах?
8к RPS это только «входящие». К примеру, для того, чтобы показать вам (залогиненному пользователю) результаты поиска нужно выполнить гораздо больше запросов в разные микросервисы — показать вам вашу «шапку» с вашим балансом, отметить «сердечком» в результатах поиска те, которые вы отметили ранее, посмотреть доступны ли вам чатики для этих объявлений, да и просто проранжировать под вас выдачу. Там ещё куча всего «под капотом», что отличает обыный список от выдачи современного информационного ресурса. Так что внутри это далеко не 8к RPS :)

По структуре внутренних запросов отлично понимаю, работал с недвижкой в нгс.
Возможно C# накладывает свой отпечаток, ну и да, если много микросервисов, то много и накладных расходов.
Хорошо быть богатой компанией, а если бюджетов на железо нет, приходится заниматься оптимизацией))

Мы как раз считаем себя не из тех, кто может просто «заливать железом». Так было бы гораздо проще всё в облаках купить и не морочить себе голову. Но реальность такова, что даже самый дешёвый облачный хостинг будет стоить минимум в два раза дороже того, что мы смогли отстроить.
Поэтому, да — занимаемся оптимизацией. Наверное, не так, как если бы у нас было 10 серверов, но всё же активно с этим работаем.
И, пожалуй, самое «тяжёлое» по железу это не C#, а machine learning (ибо big data и все дела) и, как ни странно, frontend (nodejs server side rendering) — там много CPU bound операций (парзинг json, рендеринг html), на которые приходится достаточно большой RPS. Но шарп мы тоже активно переводим на .NET Core (и вот скоро приступим к переводу на .NET Core 3).

Про облака согласен, дорого, и местами теряется контроль.

>>> оценка и аналитика — оценка реальной стоимости продажи квартиры и инвестиционной

Как я понимаю, используете некие математические модели. Но по любому нужно иметь доступ к информации о реальных продажах. У вас есть такой источник?
да, есть информация по достаточно большому числу сделок, об которые мы валидируем модель
На Циане вроде калькулятор оценки квартир был. Он еще есть? Если есть, то вы там матмодель, валидированную по реальным ценам используете? Т. е. цену калькулятор дает не по рекламным хотелкам, а прогнозирует реальную (с некой погрешностью, разумеется)?
Есть, и более того мы недавно зарелизили новую версию, где теперь показывается и точность оценки и расхождение между реальными сделками и рекламными ценами. Последние как правило выше реальных.
Спасибо. Коррекция модели по реальным ценам — это важно. Но большинство риэлторов, похоже, не в курсе об этой коррекции и считают, что подобные калькуляторы тупо отражают лишь рекламные хотелки.
Они всё знают ;) Просто так удобнее обосновывать ту цену, которую им нужно, чтобы вы считали правильной.
Сейчас проверил по вашему калькулятору квартиры, по которым знаю реальные продажные цены (правда трехлетней давности). Да, цену калькулятор дает весьма точную, близкую к реальной. Правда, в конце прошлого года был аномальный всплеск, но его имхо и нет смысла учитывать.

>>> Они всё знают ;)

Одно дело — просто знать, а другое дело — понимать, как это реально работает. Если бы я был далек от высшей математики, то тоже не доверял бы таким калькуляторам.
А как вы проверяете юридическую чистоту квартиры? И вообще есть ли модерация объявлений?
>И вообще есть ли модерация объявлений?

А куда же без неё. Мы очень активно боремся за чистоту контента, выявляем различные виды нарушений. Начиная от банальных непреднамеренных ошибок в параметрах объявления, заканчивая намеренным размещением «заманух» (несуществующих привлекательных объявлений с целью получить звонки) и даже «лохотронов» (несуществующих объявлений, размещаемых с целью кинуть пользователей на деньги). Для чего мы разрабатываем различные инструменты (статические алгоритмы, модели ML, интеграции с внешними сервисами), которыми пользуются наши сотрудники-модераторы.

Для более глубокого погружения в тему выявления видимых нарушений можно посмотреть наш доклад на PyData в прошлом году: www.youtube.com/watch?v=VAGV7aqani4
Настраивали систему антиботов и сами себя забанили.

lol! просто и со вкусом :)
Кстати, а сильно ли мешают боты, и стоило ли оно того?

Да, прилично. Трафик от ботов, по предварительной оценке, может доходить до 50%. Мы не для них тут сервера покупаем.

НЛО прилетело и опубликовало эту надпись здесь
Да, деляться на IOS и Android. Внутри технологии поделены по продуктовым командам и живут жизнью продуктовой команды. Но так же есть гильдии IOS и Android, где обсуждают технологические вопросы и развитие платформы.
НЛО прилетело и опубликовало эту надпись здесь
Почему на ЦИАНе не отображаются авы пользователей? Я загрузил котика, а все видят серый силуэт. Так квартиру не продашь :(
На мой взгляд штаты, инфраструктура и задачи чрезвычайно раздуты. Ну просто нет такого количества клиентов, это какой то искусственно раздутый трафик и искусственно созданные задачи.
1,2 миллиона уникальных клиентов в день? — для недвижимости это бред.
НЛО прилетело и опубликовало эту надпись здесь
Под таким громким названием поста, зашел почитать как внедрили интеграцию с Госуслугами-Росреестром (минимум логин — максимум получение информации об объектах недвижимости) и отсеяли агентов от реальных собственников недвижимости и не увидел этого.
Первый кто победит агентов по недвижимости захватит рынок реальных покупателей
В Китае сильно продвинулись в этом направлении, только врятли вам это понравится.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий