Что такое 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
Доклад про перфоманс тестирование:
Полезные материалы для подготовки к интервью
Как мы нанимаем бэкенд-разработчиков — страница, на которой собраны все релевантные материалы про процессы найма и подготовки к секциям.
Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем — один из наших лидов, Константин Кардаманов, рассказывает про секции по архитектуре систем: обязательно к прочтению, если вы претендуете на позиции старших и ведущих инженеров.