Команда платформы YDB

Наша миссия — предложить миру проверенное open source решение для обработки данных. В настоящее время команды, которые создают аналогичные продукты, разрабатывают системы с закрытым исходным кодом или имеют ограниченный доступ к сложным задачам. В отличие от этого, YDB — система с открытым исходным кодом, охватывающая широкий спектр сложных задач, поэтому наши ключевые преимущества — проверенная масштабируемость и открытость.

Продукт

Персистентные потоки

Масштабируемое решение для очередей и обмена данными по модели Publish/Subsсriber

Федеративные запросы

Подключение других хранилищ данных и выполнение запросов к ним через YDB

Distributed SQL Database

Наш флагманский продукт

Векторизованная обработка данных

Оптимизированное выполнение запросов с помощью SIMD-инструкций

Аналитическое хранилище

Хранение данных в поколоночном формате для ускорения аналитических запросов

Потоковая обработка данных

Обработка бесконечных потоков данных в режиме реального времени с помощью SQL-запросов

Технология

Мы верим, что C/C++ — лучший язык программирования для разработки системного программного обеспечения, такого как ОС и базы данных, поэтому написали на нём ядро YDB. Современный C++ предлагает вам высокоуровневые примитивы для создания программ, например, позволяет легко управлять памятью с помощью умных указателей, при этом позволяет выжать максимум из оборудования, с которым работаете.

Дизайн YDB ориентирован на сообщения и отражает распределённый характер системы, поэтому внутренние компоненты YDB написаны в модели акторов (actor model). Мы реализуем компонент YDB как класс C++, который наследует интерфейс актора, может отправлять сообщения другим акторам и получать от них сообщения, создавать новых акторов.

Мы также реализовали механизм корутин, построенный поверх модели акторов, и можем использовать корутины, когда они лучше подходят для решения задачи. Не ограничиваемся разработкой на C++. Пишем Е2Е- и стресс-тесты, тесты chaos monkey на Python. Средства развёртывания разрабатываем на языке Go — развиваем операторы YDB для Kubernetes®.

Разрабатываем YDB SDK для Python, Go, Java, Rust, Node.js, C++, PHP и других языков программирования.

В контексте развития YDB есть ещё одна ключевая технология — Kubernetes®. Распределённые системы — это не только разработка ядра системы, но и создание средств для развёртывания, обновления, конфигурации и технического обслуживания системы. У нас долгая история управления собственными решениями, основанными на Salt, Ansible и даже собственной системе развёртывания, но сейчас мы активно движемся в сторону Kubernetes®. Управление stateful-приложением, таким как база данных, — это всегда сложная задача, и Kubernetes® предоставляет нам достаточную гибкость для её решения благодаря возможности создания специализированных операторов YDB.

Облачные сервисы

У команды платформы YDB богатый опыт работы с облачными сервисами. Во-первых, до наступления облачной эры мы предоставляли услуги внутренним пользователям компании — нашим коллегам. Уже тогда мы увидели разницу между тем, как написать код, и тем, как сделать пользователя счастливым.

Во-вторых, команда платформы YDB участвовала в разработке публичного облака с нуля. Это был потрясающий опыт. YDB используется в критических частях IaaS и PaaS:

  • как уровень хранения для сетевых блочных устройств, подключённых к виртуальным машинам;

  • как база данных для облачных сервисов.

Мы предоставляем облачные сервисы, основанные на наших технологиях.

Обеспечить соответствие наших услуг самым высоким стандартам безопасности — вызов и интересная техническая задача, сравнимая с созданием масштабируемой, надёжной и производительной системы.

Команда платформы YDB предоставляет облачные сервисы конечным пользователям. Все сервисы мультиарендные (multitenant), то есть обслуживают одновременно многих пользователей, гарантируя изоляцию по ресурсам. Managed Service for YDB доступен в двух вариантах:

  • на базе выделенных виртуальных машин;
  • как serverless-служба.

Все остальные сервисы предоставляются в serverless-режиме. Реализованы различные типы персистентных очередей и потоков данных, пользователю предоставляются механизмы для обеспечения exactly-once-гарантий доставки сообщений. Сервис федеративных запросов позволяет выполнять запросы к нескольким источникам данных, включая объектное хранилище, PostgreSQL и ClickHouse.

Команда

Эксперты в своей области

У нас дружная команда высокомотивированных профессионалов, увлечённых системами управления базами данных и распределёнными системами. Мы обожаем решать сложные задачи. Основные специалисты нашей команды имеют большой опыт в создании СУБД, магистерские и докторские степени ведущих университетов.

Амбициозность

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

Открытость

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

Команды YDB

У нас два основных продукта — сама база данных YDB и сервис YDB Federated Query, который позволяет нам обрабатывать перекрёстные источники данных, включая бесконечные запросы над потоками данных. Эти продукты разрабатывают и поддерживают 9 подгрупп.

Расскажем о командах подробнее

Команда распределённого хранилища

Отвечает за хранение и репликацию данных. Занимается низкоуровневой оптимизацией, например, работает непосредственно с блочными устройствами, разрабатывает реализацию модели акторов YDB и слой сетевого транспорта.

Команда Tablets

Отвечает за основные функциональные возможности YDB: инфраструктуру таблиц, организацию пользовательских данных и распределённые транзакции.

Команда очередей

Предоставляет клиентам несколько служб очередей и подписку по модели Publish/Subsсriber.

Команда обработки запросов

Отвечает за выполнение как OLTP-, так и OLAP-запросов. Команда переиспользует процессор запросов из команды ядра YQL, добавляет ему специфику работы с таблицами YDB.

Команда аналитики

Новая растущая подгруппа, отвечающая за таблицы с поколоночным хранением данных и эффективное выполнение запросов к ним.

Команда SDK

Отвечает за все клиентские SDK, упрощает взаимодействие прикладных разработчиков с YDB.

Команда DevOps

Отвечает за запуск наших сервисов в облаках и локально, мониторинг и процессы CI/CD. Разрабатывает Kubernetes-оператор для автоматизированного развёртывания и управления кластерами YDB.

Команда потоковой обработки запросов

Разрабатывает часть Federated Query, которая позволяет нам обрабатывать непрерывные запросы по потокам данных.

Команда YQL

Разрабатывает основные части языка запросов YDB.

Наши ближайшие технологические вызовы

Обработка запросов

  • Поддержка совместимости с PostgreSQL
  • Оптимизация производительности, кеширование программ ближе к таблеткам, которые управляют данными
  • Стоимостная оптимизация запросов (cost based optimization)
  • Поддержка алгоритмов join во внешней памяти
  • Поддержка распределённой сортировки данных без ограничений по размеру

Распределённое хранилище

  • Бесшовное управление хранилищем, например, перенос некоторой части кластера из одной зоны доступности в другую
  • Оптимизация системы акторов, например динамическое перераспределение ядер процессора между пулами потоков
  • Улучшение и оптимизация процесса самовосстановления кластера
  • Разработка компонента хранилища для распределения больших бинарных объектов по всем группам хранения

Tablets

  • Транзакции должны видеть свои изменения до их фиксации
  • Оптимизация протоколов распределённых транзакций — мы знаем, что можно улучшить
  • Сбор статистики пользовательских данных для оптимизации запросов
  • Поддержка PITR

Масштабирование кластеров

  • Оптимизация внутреннего сервиса подписок на изменения метаданных
  • Масштабирование компонента State Storage

Аналитика

  • Оптимизация поколоночного хранилища, добавление индексов
  • Добавление поддержки HTAP

Управление кластером

  • Автоматическое масштабирование слоёв хранения и вычислений
  • Интеграция с различными облачными платформами (AWS/GCP/Azure)

Открытые вакансии

YDB Core Software Development Engineer
YDB Query Processor Software Development Engineer
YDB Site Reliability Engineer

Напишите нам

Вы можете связаться со старшим рекрутером Василием Кудрявцевым с помощью: