Managed Databases
Предоставляем инфраструктуру хранения данных большинству сервисов Яндекса и клиентам Яндекс.Облака. У нас одна из самых больших инсталляций баз данных в России и уникальная экспертиза. Мы вносим вклад в open source, пишем статьи, выступаем на конференциях и преподаём.

Мы строим DBaaS (Database-as-a-Service), наша цель — сокращать затраты на эксплуатацию баз данных, мы обеспечиваем высокую доступность, масштабирование, бекапы (в большинстве сервисов можем восстановиться в любую точку во времени за последнюю неделю), мажорное обновление по кнопке, мониторинг и алерты из коробки.

У нас есть две инсталляции: внутренний Яндекс и Яндекс.Облако. Внутри мы предоставляем инфраструктуру большинству сервисов Яндекса, таким как Почта, Маркет, Такси, Диск, Драйв, Кинопоиск.

А в инсталляции Яндекс.Облака наши технологии доступны любому желающему, который может создать себе базу данных в пару кликов. Среди наших пользователей M.Видео-Эльдорадо, Леруа Мерлен, ГК ПИК, Lamoda. 

15 млн
RPS
Суммарная нагрузка
25
PiB
Объём данных
50000
хостов
Управляемых баз данных
История

История сервиса началась в 2013 году, в команде Яндекс.Почты. Мы тогда решили перевезти базы с Oracle на Postgres, история об этом написана в статье. После успешного переезда у нас начала концентрироваться экспертиза по Postgres, и другие сервисы Яндекса стали приходить и просить тоже поднять им кластер базы данных. Так появился Postgresql as a service. Подробную историю можно посмотреть здесь.

Потом мы начали добавлять другие базы данных и расти в объёмах, на нашу инфраструктуру перехало большинство сервисов Яндекса.

После этого появилось Яндекс.Облако, и мы стали его частью. Мы первые кто запустил Управляемые БД (Аналог Amazon RDS) в России.

Поскольку у нас очень большие объёмы, то по закону больших чисел, любой редко стреляющий плавающий баг скорее всего у нас выстрелит. На нашем масштабе всё, что может случиться физически, регулярно случается. Поэтому можно сказать, что мы видели всё. Мы иногда отлавливаем очень редкие баги в движках баз, воспроизводим их, исправляем и коммитим в опенсорс.

В этой статье вы можете почитать про то как работает сервис изнутри. В основном пишем на go, python, С. Используем salt stack, terraform, kubernetes.

Вклад в Open Source

PostgreSQL

Мы — контрибьюторы в ядро Postgres. Из того что мы сделали:

  1. Исправили баг в CREATE INDEX CONCURRENTLY. Он сущестовал много лет, создавал сложноуловимые проблемы. Суть его в том что некоторое данные не попадали в индекс, их нельзя было найти по индексу и соответственно для primary key можно было закоммитить дважды по одному ключу. Этот баг мы смогли отловить и пофиксить, фикс состоял трёх основных коммитов: раз, два и три.
  2. Много работы над улучшением сжатия. Самое заметное — это поддержка кодеков lz4 и zstd для сжатия FPI WAL. Эта технология стала доступна в Postgres 15 и увеличивает производительность кластера на 15-20%. Помимо этого, мы ускорили pglz, работаем над сжатием libpq и над сжатием временных файлов.
  3. Андрей Бородин внёс заметный вклад в GiST индексы. Они используются различными геоинформаицонными системами — Яндекс Картами, Open Street Maps и др. Он написал технологию которая ускоряет построение индекса в 10 раз (доступна в Postgres 14). В Postgres 13 вошёл патч с возможность делать покрывающий GiST индекс, а в Postgres 12 — существенное ускорение вакуумизации GiST индекса. В Postgres 11 и 10 тоже есть доработки про GiST, заметные для пользователей этого индекса

Greenplum


Наши достижения в Greenplum делятся на два класса: исправление ошибок и "облачность" этой СУБД. Исправление ошибок — это постоянная череда pull request-ов. Наши клиенты наступают на баги и мы используем полученную от них информацию для того, чтобы сделать Greenplum лучше. Для примера PR 12937, 13044, 14594, 15015, 15171, 15397.

Касательно облачности, мы делаем PITR, Yezzey, доработки в Motion, в системе грантов, в вакууме — всё это направлено на снижение Total Cost of Ownership и упрощению эксплуатации в режиме Managed GP. Про это есть доклады раз и два.

ClickHouse

Мы делаем не только сервис вокруг ClickHouse, но так же вносим вклад в движок.

  • Сделали ClickHouse over S3. Гибридное хранилище позволяет подключить для кластера ClickHouse S3‑бакет и хранить там неограниченное количество данных. Коммиты #7946, #9415, #16240.
  • Распределенное хранилиoе UDF функций, коммит #46085.
  • Инструменты ch-backup и ch-tools.

Odyssey

Odyssey — это пуллер соединений для высоконагруженных инсталляций PostgreSQL. Раньше у нас был PgBouncer, но с ним был ряд проблем, мы пробовали их исправлять, но pull request'ы не были приняты. Поэтому мы решили делать свой пуллер соединений, подробнее про причины, преимущества и бенчмарки можно узнать тут, тут и тут. Исходный код лежит здесь.

WAL-G

Однажды нам потребовалось обеспечить эффективное создание бекапов PostgreSQL в объектном хранилище, и для этого мы выбрали проект WAL-G. Спустя несколько месяцев наша команда стала его мейнтейнером. Кроме того, мы добавили туда поддержку MySQL, MongoDB, Redis и других движков. Для MongoDB получилось сделать восстановление в любую точку во времени (PITR), и существенно продвинулись в Greenplum.

Подробнее про использование WAL-G в PostgreSQL рассказывали тут, тут и тут.

Исходный код лежит здесь.

Наша команда

Владимир Бородин, руководитель платформы данных

В Яндексе с 2012 года. До 2016-го занимался переездом Яндекс.Почты с Oracle на PostgreSQL, затем разрабатывал Database as a Service: сначала внутри компании, а позже и в Yandex.Cloud. Сейчас руководит разработкой платформы данных.

“Наша команда существует даже дольше, чем само облако — с 2016 года, и предоставляет так называемую внутреннюю инсталляцию для разработчиков Яндекса, то есть работает не только для внешних, но и для внутренних клиентов — всех сервисов. Получается, что каждый разработчик в той или иной мере влияет на развитие продукта, которым пользуются и внутри компании, и в целом на рынке.”

Видео, где Владимир описывает внутреннее устройство MDB.

Дмитрий Сарафанников, руководитель MDB

”Я пришел в команду в 2016г, когда мы были еще частью Яндекс.Почты, на позицию администратора баз данных PostgreSQL. Тогда как раз активно шел переезд Почты с Oracle на PostgreSQL. Меня привлек масштаб: десятки больших баз суммарным объемом в сотни терабайт и большой нагрузкой. Я подумал, что тут точно не буду скучать, и не ошибся.”

“Базы данных, на мой взгляд, одна из самых интересных областей в IT: задачи здесь всегда сложные, ведь, в отличие от stateless-сервисов, у тебя всегда есть много данных, с которыми надо обращаться максимально аккуратно, их нельзя потерять или испортить.”

Рассказ от Дмитрия про интересный инцидент с Почтой при мажорном обновлении PostgreSQL.

Андрей Бородин, руководитель open source разработки

Кандидат технических наук, доцент Уральского федерального университета, контрибьютер PostgreSQL, широкоизвестный в узких кругах. Занимается исследованиями в области индексирования данных с 2008 года. Ведёт курс «Алгоритмы и структуры данных» в ШАД Яндекса.

“Экстремальная сложность решаемых задач и полезность почти всем разработчикам в мире — вот что делает нашу работу перспективной.”

Доклад от Андрея про наш вклад в open source.

Александр Бурмак, руководитель разработки Managed Clickhouse

Наша команда разрабатывает сервис для одной из самых быстрых аналитических СУБД в мире — ClickHouse. При этом, мы развиваем не только сервис, но и вносим значительный вклад в развитие самой СУБД.

Евгений Ефимкин, руководитель разработки Managed PostgreSQL

В 2013 году начав свою карьеру в Яндексе как Oracle DBA, я быстро осознал преимущества PostgreSQL и полностью посвятил себя этой базе данных. В Яндексе PostgreSQL пользуется огромной популярностью и заслуженно считается одной из самых популярных и перспективных СУБД в мире. Работая в команде профессионалов я постоянно развиваю свои навыки и создаю сервис баз данных с человеческим лицом. Моя цель - помочь пользователям решать сложные задачи и обеспечить эффективное управление данными.

Виктор Ягудаев, руководитель разработки команды Core для сервисов управляемых баз данных

Пришел в Яндекс в 2016 году и все это время занимаюсь разработкой высокодоступных и отказоустойчивых систем, работающих под высокой нагрузкой 24/7/365. Десятки тысяч строк моего кода круглосуточно успешно выполняют пользовательские запросы в различных сервисах Яндекса.

Наша команда разрабатывает и поддерживает слой control plane для управляемых баз данных. От стабильной работы наших сервисов зависят базы данных как клиентов Yandex Cloud, так и всех сервисов Яндекса. Мы решаем сложные инженерные задачи, которых хватит на всех.

Владимир Гошев, руководитель подразделения "Нереляционные СУБД"

Мы с командой занимаемся разработкой платформы (и не только платформы) для таких баз, как Redis и MongoDB. Начав с разработки платформы в определенный момент мы осознали, что для создания лучшей платформы управляемых баз данных нам не хватает той функциональности, что предоставляют базы, потому мы решили так же начать делать патчи в MongoDB и Redis, часть из которых мы так же выкладываем в опенсорс и стараемся протащить в общий код базы.
Среди нас есть ребята, которые занимались эксплуатацией десятков тысяч серверов в Поиске Яндекса, разрабатывали и эксплуатировали систему хранения данных на MongoDB в Яндекс.Диске (одна из самых больших в мире). Есть преподаватели университетов, кандидаты наук и студенты. Есть те, кто участвовали в разработке Sun Solaris, компиляторов Intel, систем биржевой торговли и биллинга банков.

Чем отличается работа у нас

  • Высокая нагрузка и требование к SLA
    База данных лежит в основе практически любого сервиса. Она должна быть надёжной, безопасной, справляться с высокой нагрузкой и отвечать 24/7. Наши продукты обеспечивают доступность и безопасность данных не только в штатном режиме, но и при обновлении, миграции или изменении кластера.
  • Уникальная экспертиза
    Существует не так много мест, где есть возможность работать с сервисом на миллионы PRS и десятки тысяч хостов. У нас именно такое место. На нашем масштабе постоянно всплывают очень редкие баги, сбои, повреждения данных и другие интересные кейсы, с которыми вероятность столкнуться низкая. Но не у нас, потому что если что-то может случиться, то у нас скорее всего это случится. Raft, Paxos, Jepsen и другие алгоритмы, фреймворки и понятия, связанные с кворумом и отказоустойчивостью, для разработчика в нашей команде — повседневное дело.
  • Инженерная культура и сильная команда
    Платформа данных — одно из самых технологичных, востребованных и интересных направлений. Мы не только пишем код, но и занимаемся эксплуатацией большого продакшена. У нас низкая текучка, многие ребята работают ещё со времён Яндекс.Почты, когда Облака ещё не было. У нас сильная команда, мы активно контрибьютим в опенсорс и видимы в сообществе.

Вакансии

Москва
Санкт-Петербург
Разработчик в команду ядра сервиса Managed Databases
Мы ищем разработчиков, которые будут развивать инфраструктуру вокруг популярных открытых СУБД для использования в действительно больших системах с высокой нагрузкой и доступностью. Ядро сервиса представляет собой современное распределённое микросервисное приложение.
Белград
Москва
Санкт-Петербург
Разработчик платформы управляемой MongoDB в Yandex Cloud
Сервис управляемой MongoDB в облаке позволяет нашим клиентам сосредоточиться на работе с данными, а обслуживание берёт на себя платформа. Кластер управляемой базы данных — это объединение множества участков инфраструктуры, таких как сеть, compute, IAM, deploy, и самой MongoDB.
Белград
Удалённая работа
Разработчик управляемого решения на основе Elasticsearch
Мы считаем, что качество продукта определяют прежде всего люди. На это ответственное направление мы ищем человека, который разбирается в стеке Elasticsearch и понимает особенности использования этого программного комплекса и систем поиска вообще.
Санкт-Петербург
Разработчик Managed Service for ClickHouse
Мы ищем человека, который будет разрабатывать сервис управляемых баз данных для одной из самых быстрых аналитических СУБД в мире - ClickHouse. Вам предстоит работать с прорывными технологиями и решать амбициозные задачи.
Москва
Белград
Санкт-Петербург
DBA Greenplum в Yandex Cloud
Наша команда специализируется на технологиях хранения, обработки и аналитики данных. Мы предоставляем managed-сервисы на базе популярных opensource-продуктов и перспективных технологий. Мы ищем опытного DBA Greenplum.
Москва
Екатеринбург
Санкт-Петербург
Разработчик в команду сервисов обработки данных
Мы строим инфраструктуру для обслуживания кластеров с Kafka, Spark, Hadoop, программируем на языках Python3 и Go с упором на последний. Сейчас мы ищем человека, которому интересно работать с большими объемами данных и строить управляющую платформу.
Москва
Екатеринбург
Thu Oct 12 2023 16:08:35 GMT+0300 (Moscow Standard Time)