Привет! Это команда разработки разработки хранилища логов, занимаемся разработкой seq-db - базы данных, отвечающей за хранение и обработку большинства логов и трейсов в Озоне. Суммарно храним > 1Пб данных различных систем Озона, в сутки обрабатываем более 130 млрд логов. seq-db появилась как замена elasticsearch для задач телеметрии около 5 лет назад, и у нас на неё большие планы, в том числе выход в опенсорс. Мы отвечаем за важную часть инфраструктуры Озона, поэтому стабильность системы мы ценим больше новых фич, а код тщательно проверяем и тестируем перед любой выкаткой. Прямо сейчас в команде 5 человек, с опытом работы бигтехах.
Ищем ведущего разработчика с опытом в инфраструктурной разработке, который будет поддерживать, улучшать и развивать seq-db.
Наш стэк: Golang, k8s, Grafana, Prometheus, qbec
Вы будете:
- Отвечать за полный цикл разработки фичей: от идеи до выкатки в прод. Примеры таких проектов сейчас: выгрузка и чтение данных в/из s3, отложенные (или асинхронные) запросы;
- Писать пропоузалы и защищать их перед командой и руководством;
- Разрабатывать и дорабатывать различную функциональность в seq-db;
- Оптимизировать узкие места по производительности, искать и исправлять боттлнеки;
- Фиксить техдолг, участвовать в дежурствах, ревьюить код.
Нам важно:
- Знание внутрянки и умение писать на одном из ЯП: Go/C++/Java (Пишем мы в основном на Go);
- Опыт разработки высоконагруженных отказоустойчивых систем. (В идеале: опыт в инфраструктурной команде);
- Базовый опыт работы с k8s. Знать что такое statefulset и deployment, уметь осознавать из-за чего порестартился под и смотреть на каком сервере он крутится;
- Умение разбираться в новой кодовой базе, дебажить, профилировать, оптимизировать код, искать и исправлять узкие места. Идеально: знать на что смотреть на профилях, уметь в нужный момент заюзать perf, strace, для того, чтобы осознать что именно идёт не так;
- Понимание архитектуры, принципов работы и механизмов Linux (управление процессами, файловые системы, сетевой стек). Знать, чем поток отличается от процессса, что такое файловый дескриптор и зачем нужно разделение на kernel space и user space;
- Знание асимптотики и базовой реализации основных структур данных. Умение применять на практике алгоритмические знания, и оценивать производительность реализованных решений. Идеально: хорошо знать устройство структур данных, используемых в базах данных (B-деревья, bloom фильтры, хеш таблицы и тд);
- На интервью в деревья переворачивать не будем, но про алгоритмы пообщаемся;
- Умение работать с многопоточным кодом, понимание того, чем мьютекс отличается от спинлока, в чем разница между параллелизмом и конкуррентностью;
- Знание английского на уровне, достаточном, чтобы письменно общаться, писать документацию в публичном пространстве. Идеально: опыт участия в open source разработке.
Будет плюсом:
- Опыт разработки SQL/NoSQL/NewSQL баз данных, или знание в устройства хотя бы одной современной СУБД;
- Если нет опыта - не страшно, но мы поймём что вам интересно с нами общаться, если чуть про это почитаете перед собеседованием.