Мы строим DBaaS (Database-as-a-Service), наша цель — сокращать затраты на эксплуатацию баз данных, мы обеспечиваем высокую доступность, масштабирование, бекапы (в большинстве сервисов можем восстановиться в любую точку во времени за последнюю неделю), мажорное обновление по кнопке, мониторинг и алерты из коробки.
У нас есть две инсталляции: внутренний Яндекс и Яндекс.Облако. Внутри мы предоставляем инфраструктуру большинству сервисов Яндекса, таким как Почта, Маркет, Такси, Диск, Драйв, Кинопоиск.
А в инсталляции Яндекс.Облака наши технологии доступны любому желающему, который может создать себе базу данных в пару кликов. Среди наших пользователей M.Видео-Эльдорадо, Леруа Мерлен, ГК ПИК, Lamoda.
История сервиса началась в 2013 году, в команде Яндекс.Почты. Мы тогда решили перевезти базы с Oracle на Postgres, история об этом написана в статье. После успешного переезда у нас начала концентрироваться экспертиза по Postgres, и другие сервисы Яндекса стали приходить и просить тоже поднять им кластер базы данных. Так появился Postgresql as a service. Подробную историю можно посмотреть здесь.
Потом мы начали добавлять другие базы данных и расти в объёмах, на нашу инфраструктуру перехало большинство сервисов Яндекса.
После этого появилось Яндекс.Облако, и мы стали его частью. Мы первые кто запустил Управляемые БД (Аналог Amazon RDS) в России.
Поскольку у нас очень большие объёмы, то по закону больших чисел, любой редко стреляющий плавающий баг скорее всего у нас выстрелит. На нашем масштабе всё, что может случиться физически, регулярно случается. Поэтому можно сказать, что мы видели всё. Мы иногда отлавливаем очень редкие баги в движках баз, воспроизводим их, исправляем и коммитим в опенсорс.
В этой статье вы можете почитать про то как работает сервис изнутри. В основном пишем на go, python, С. Используем salt stack, terraform, kubernetes.
Мы — контрибьюторы в ядро Postgres. Из того что мы сделали:
Наши достижения в Greenplum делятся на два класса: исправление ошибок и "облачность" этой СУБД. Исправление ошибок — это постоянная череда pull request-ов. Наши клиенты наступают на баги и мы используем полученную от них информацию для того, чтобы сделать Greenplum лучше. Для примера PR 12937, 13044, 14594, 15015, 15171, 15397.
Касательно облачности, мы делаем PITR, Yezzey, доработки в Motion, в системе грантов, в вакууме — всё это направлено на снижение Total Cost of Ownership и упрощению эксплуатации в режиме Managed GP. Про это есть доклады раз и два.
Мы делаем не только сервис вокруг ClickHouse, но так же вносим вклад в движок.
Однажды нам потребовалось обеспечить эффективное создание бекапов PostgreSQL в объектном хранилище, и для этого мы выбрали проект WAL-G. Спустя несколько месяцев наша команда стала его мейнтейнером. Кроме того, мы добавили туда поддержку MySQL, MongoDB, Redis и других движков. Для MongoDB получилось сделать восстановление в любую точку во времени (PITR), и существенно продвинулись в Greenplum.
Подробнее про использование WAL-G в PostgreSQL рассказывали тут, тут и тут.
Исходный код лежит здесь.
“Наша команда существует даже дольше, чем само облако — с 2016 года, и предоставляет так называемую внутреннюю инсталляцию для разработчиков Яндекса, то есть работает не только для внешних, но и для внутренних клиентов — всех сервисов. Получается, что каждый разработчик в той или иной мере влияет на развитие продукта, которым пользуются и внутри компании, и в целом на рынке.”
Видео, где Владимир описывает внутреннее устройство MDB.
”Я пришел в команду в 2016г, когда мы были еще частью Яндекс.Почты, на позицию администратора баз данных PostgreSQL. Тогда как раз активно шел переезд Почты с Oracle на PostgreSQL. Меня привлек масштаб: десятки больших баз суммарным объемом в сотни терабайт и большой нагрузкой. Я подумал, что тут точно не буду скучать, и не ошибся.”
“Базы данных, на мой взгляд, одна из самых интересных областей в IT: задачи здесь всегда сложные, ведь, в отличие от stateless-сервисов, у тебя всегда есть много данных, с которыми надо обращаться максимально аккуратно, их нельзя потерять или испортить.”
Рассказ от Дмитрия про интересный инцидент с Почтой при мажорном обновлении PostgreSQL.
Кандидат технических наук, доцент Уральского федерального университета, контрибьютер PostgreSQL, широкоизвестный в узких кругах. Занимается исследованиями в области индексирования данных с 2008 года. Ведёт курс «Алгоритмы и структуры данных» в ШАД Яндекса.
“Экстремальная сложность решаемых задач и полезность почти всем разработчикам в мире — вот что делает нашу работу перспективной.”
Доклад от Андрея про наш вклад в open source.
Наша команда разрабатывает и поддерживает слой control plane для управляемых баз данных. От стабильной работы наших сервисов зависят базы данных как клиентов Yandex Cloud, так и всех сервисов Яндекса. Мы решаем сложные инженерные задачи, которых хватит на всех.