ydb

Что такое YDB

Подробнее про YDB и команду в целом можно почитать на сайте ydb.tech

Что такое Engineering в YDB

Это направление, которое направлено на улучшение инфраструктуры разработки, создание инструментов, повышающих качество продукта – нашей распределённой, масштабируемой, отказоустойчивой SQL-базы данных и платформы.

Нас уже хорошо знают не только внутри Яндекса, но и снаружи. Образ YDB в глазах внешних пользователей – это образ современной СУБД, которая решает широкий спектр задач – прежде всего справляется с большими нагрузками и умеет надёжно поставлять данные (в чём-то лучше, чем Apache Kafka).
Мы отвечаем за поддержание высокого уровня надёжности и стабильности продуктов через глубокую автоматизацию тестирования и улучшение процессов CI. Наши пользователи ждут, что каждая следующая версия YDB будет лучше предыдущей, а обновление до новой версии пройдёт легко и непринуждённо. Для этого мы разрабатываем и поддерживаем набор функциональных, нагрузочных и регрессионных тестов, который постоянно совершенствуется и развивается. Недавно к этим тестам присоединились бенчмарки YCSB, TPC-C и TPC-H. С ростом популярности YDB потребность в обеспечении качества продукта только растёт. У нас море идей, как вывести качество продукта на новый уровень, и мы ищем коллег, которые помогут в достижении этой цели.

Как мы работаем

🚀 ЯП: Наш основной язык – Python. Сама база данных написана на C++, поэтому знание C++ будет дополнительным плюсом.

📍 Локация: большая часть команды разработки YDB находится в Москве. Также, большое количество наших коллег работают в офисах Санкт-Петербурга и Белграда. Нам комфортно работать распределённо, и мы готовы к появлению новых коллег в любом городе.

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

Основные направления нашей работы сейчас

  • Улучшение инфраструктуры для тестирования. Тестирование распредёленных систем, а тем более баз данных требует особенных подходов, наша команда нацелена на развитие инструментов тестирования, а именно:

    • Поддержка сложных сценариев тестирования, когда тесты запускаются физическом кластере: в реальных установках YDB устанавливается на тысячи хостов, мы должны быть уверены в корректной работе нашей БД.

    • Chaos-тестирование: YDB – отказоустойчивая система и мы должны быть уверенными, что в случае отказа оборудования или других проблем мы продолжим корректную работу и обеспечим необходимое качество нашим клиентам.

    • Тестирование корректности выполнения запросов: YDB по умолчанию обеспечивает самый высокий уровень изоляции транзакций: serializable, но убедиться в этом – нетривиальная задача!

    • … и множество других идей, которые мы хотим реализовать чтобы стать самой надёжной и стабильной базой данных 🦾

  • Улучшение релизного процесса
    Мы выпускаем два мажорных релиза в год, но каждый раз -- это отдельное приключение полное осознания того, что мы не учли какие-то сценарии rolling update или отката на предыдущую версию. Мы, конечно, исправляем все проблемы, но есть острая нехватка инструментов которые бы позволили нам оперативнее замечать баги подобного рода.

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

  • Локальная разработка
    Хотим улучшить экспериенс локальной разработки для разработчиков YDB, как пример: цикл “поправить код -> собрать и запустить тест“ занимает время большее, чем хотелось бы.

  • Вопросы Continuous Integration (CI)
    Так как мы в open-source мы не можем полноценно пользоваться всей CI инфраструктурой Яндекса -- это перед нами ставит задачу развивать наши CI процессы, есть много идей что и как можно улучшить.

  • On-premises инсталляции
    Помимо развития наших внутренних инсталляций перед нами стоит амбициозная цель стать полноценным on-premises продуктом, а это значит что вопросы качества и надежности выходят на первый план: мы должны обеспечивать надежную работу в “чужих“ контурах – это очень большая и объемная задача.

Наша команда продолжает расти

У нас разнообразные задачи, поэтому каждый сможет найти что-то по душе, особенно если вы увлечены разработкой с использованием Python и C++ — мы ищем разработчиков, которые смогут привнести что-то новое в нашу команду!

Технические вопросы можно задать руководителю команды Максиму Юрчуку. Вопросами найма занимается Полина Абушек – рекрутер команды.

Наши статьи

Про улучшение YDB при помощи фрейморка Jepsen для тестирования распределённый систем – https://blog.ydb.tech/hardening-ydb-with-jepsen-lessons-learned-e3238a7ef4f2

Про сравнение перфоманса YDB c другими СУБД:

Про проблемы перформанс тестирования: https://habr.com/ru/companies/ydb/articles/786550/

Про проблемы тестирования гарантий СУБД: https://blog.ydb.tech/hardening-ydb-with-jepsen-lessons-learned-e3238a7ef4f2

Доклад про перфоманс тестирование:

Полезные материалы для подготовки к интервью

Как мы нанимаем бэкенд-разработчиков — страница, на которой собраны все релевантные материалы про процессы найма и подготовки к секциям.

Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем — один из наших лидов, Константин Кардаманов, рассказывает про секции по архитектуре систем: обязательно к прочтению, если вы претендуете на позиции старших и ведущих инженеров.