Сравним вакансию с вашим действующим резюме и составим письмо под эту роль.
Описание вакансии
Location: Москва
Workplace: гибкий
Мы — одна из немногих команд в стране, которая разрабатывает ядро распределённой базы данных, а не просто эксплуатирует её. У нас собственный форк Apache Cassandra, поверх которого реализовано то, чего нет в ванильной версии: транзакции, глобальные индексы, генератор последовательностей.
С чем предстоит иметь дело:
Распределённые системы на практике: репликация, кворумы, консистентность — в продакшене из кластеров на сотни узлов в нескольких дата-центрах, обслуживающем сервисы с многомиллионной аудиторией
Живая миграция между мажорными версиями базы без downtime продуктов
Производительность на уровне движка хранения: стратегии компакшена, тюнинг GC, работа с off-heap, профилирование под продакшен-нагрузкой
Отказоустойчивость: сценарии потери целого дата-центра, расчётные модели доступности, разбор реальных инцидентов до первопричины
Работа с апстримом: наш форк регулярно синхронизируется с ванильной Apache Cassandra
— вы будете читать и понимать код одной из самых известных open-source баз на уровне контрибьютора
Баги, которые не воспроизвести на ноутбуке: часть проблем существует только на больших данных и больших кластерах. Реальный пример из нашей практики — переполнение int32 при компакции SSTable, у которых файл метаданных сжатия перерос 2 ГБ: код работал годами, пока данные не доросли до граничного значения
Задачи
Разработка и поддержка собственного форка Apache Cassandra
Развитие ядра форка: транзакционный слой (ACID поверх Cassandra), глобальные индексы, слияние с апстримом Apache Cassandra
Миграция продуктовых сервисов на использование последней версии форка
Разработка и поддержка интеграции Cassandra во внутреннюю систему managed database
Работа с нагрузочными тестами
Работа с метриками, алертами, написание ранбуков, совершенствование инструментов диагностики
Дежурство по своим сервисам, разбор инцидентов и устранение их причин
Техническое ревью изменений и менторинг в команде
Работа с командами-потребителями: разбор их проблем с производительностью, схемой данных и конфигурацией
Требования
Практический опыт разработки на Java от пяти лет. Core, многопоточность, работа с памятью и сборщиком мусора, профилирование
Понимание того, как база данных устроена внутри: хранение на диске, индексы, журнал записи, слияние файлов данных, транзакции и уровни изоляции. На примере любой СУБД
Опыт чтения и доработки исходного кода инфраструктурного open-source: баз данных, брокеров сообщений, распределённых систем
Опыт работы в большой чужой кодовой базе: умение разобраться в незнакомом коде и вносить изменения, не ломая смежную функциональность
Понимание распределённых систем: репликация, консистентность, кворумы, поведение при отказе узлов и сетевых разделениях
Готовность участвовать в дежурстве по своим сервисам и разбирать инциденты
Будет плюсом
Опыт работы с Apache Cassandra любой версии
Опыт с другими NoSQL-хранилищами: HBase, ScyllaDB, MongoDB, Redis
Опыт эксплуатации баз под нагрузкой: диагностика по метрикам и логам, разбор инцидентов на продакшене
Контакты работодателя доступны по кнопке «Откликнуться» после входа.
Мэтч и сопроводительное
Сравним вакансию с вашим действующим резюме и составим письмо под эту роль.