Москва, Пресненская набережная, 10
Метро: Деловой центрПривет! Это команда разработки хранилища логов seq-db.
Мы занимаемся созданием и развитием seq-db — базы данных, которая отвечает за хранение и обработку большинства логов и трейсов в Озоне. Суммарно мы храним более 1 Пб данных различных систем, а в сутки обрабатываем свыше 130 млрд логов. seq-db появилась около 5 лет назад как замена Elasticsearch для задач телеметрии. Проект уже вышел в open source (подробнее на https://ozon.tech/logging-stack), и у нас большие планы по его дальнейшему развитию. Мы отвечаем за критически важную часть инфраструктуры Озона, поэтому стабильность системы ценим выше новых фич, код тщательно проверяем и тестируем перед любой выкаткой.
В команде несколько опытных инженеров, мы плотно взаимодействуем с SRE, платформенными командами и продуктовой разработкой.
Ищем старшего разработчика с опытом в инфраструктурной разработке, который будет поддерживать, улучшать и развивать seq-db.
Наш стэк: Go, Kubernetes, Grafana, Prometheus, qbec.
Вы будете
Отвечать за полный цикл разработки фичей: от идеи до выкатки в прод.
Писать пропоузалы и защищать их перед командой и руководством.
Разрабатывать и дорабатывать функциональность seq-db (например, добавлять новые функции агрегации, расширять язык запросов и др.).
Оптимизировать узкие места по производительности, искать и исправлять боттлнеки.
Фиксить технический долг, участвовать в дежурствах и ревью кода.
Примеры задач
Выгрузка и чтение данных в/из S3.
Реализация отложенных (асинхронных) запросов.
Нам важно
Знание внутреннего устройства языков программирования и умение писать на Go — это наш основной язык, и мы пишем на нём весь код. При этом мы с интересом рассмотрим кандидатов с сильным опытом разработки на C++ или Java, если вы готовы быстро переключиться на Go.
Опыт разработки высоконагруженных отказоустойчивых систем (желателен опыт работы в инфраструктурной команде).
Базовый опыт работы с Kubernetes: понимание StatefulSet и Deployment, умение определить причину перезапуска пода и посмотреть, на каком узле он работает.
Умение разбираться в новой кодовой базе, дебажить, профилировать и оптимизировать код, находить и исправлять узкие места.
Понимание архитектуры, принципов работы и механизмов Linux (управление процессами, файловые системы, сетевой стек). Знание разницы между процессом и потоком, понятия файлового дескриптора, разделения на kernel space и user space.
Знание асимптотики и базовой реализации основных структур данных, умение применять алгоритмические знания на практике и оценивать производительность реализованных решений.
Умение работать с многопоточным кодом, понимание разницы между мьютексом и спинлоком, параллелизмом и конкуррентностью.
Английский язык на уровне, достаточном для письменного общения и написания документации в публичном пространстве.
Будет плюсом
Опыт разработки SQL/NoSQL/NewSQL баз данных или знание устройства хотя бы одной современной СУБД. Если опыта нет — не страшно, но мы поймём, что вам интересно с нами общаться, если вы почитаете про это перед собеседованием.
Глубокое знание структур данных, используемых в базах данных (LSM-деревья, bloom-фильтры, хеш-таблицы и т.д.).
Опыт использования perf, strace и других низкоуровневых инструментов профилирования и отладки.
Опыт участия в open source разработке.