Москва
Наша команда строит платформу непрерывного сбора профилей на базе собственного решения. Мы работаем над улучшением производительности, добавляем новые фичи и интеграции с другими компонентами телеметрии (алерты, трейсы, метрики). Основная задача предоставлять продукт, позволяющий всем разработчикам Ozon находит узкие места для оптимизации своих сервисов.
Вам предстоит:
- Поддерживать и улучшать собственное решение, менять архитектуру под быстрый и непрерывный рост нагрузки;
- Работать над стабильностью и находить места оптимизации для сокращения потребления ресурсов;
- Реализовать такие фичи, как более частый сбор в нужные момент (например, при падении сервиса по OOM), интеграция с алертингом, детект аномального потребления cpu/memory, функционал сравнение профилей, корреляции и т.д;
- Улучшать функционал сжатия профилей;
- Засетапить и поддерживать профайлинг в Ozon банке;
- Подключать к профайлингу новые k8s кластера и работать над улучшением деплоя компонентов;
- Исследовать нетривиальные баги и фиксить их.
Мы ожидаем:
- Умение писать чистый и производительный код на Go.
- Опыт написания Unit тестов.
- Опыт в разработке высоконагруженных, отказоустойчивых, распределенных систем.
- Знания docker/kubernetes: умение создавать ресурсы, смотреть логи, выполнять команды в контейнере.
- Опыт с CI/CD, знание helm, qbec или kustomize приветствуется.
- Опыт работы с Unix подобными операционными системами.
- Умение работать с мониторингом и трейсингом (Prometheus + Grafana + OpenTelemetry/Jaeger): писать алерты, делать запросы, инструментировать сервисы метриками и трейсами.
Почему у нас может быть интересно:
- Мы активно улучшаем существующую платформу профайлинга на базе собственного решения.
- Ресерчим существующие решения, такие как Parca, Pyroscope и привносим новые фичи, которые могут быть нам полезны.
- Сервис сбора профилей является достаточно высоконагруженным сервисом: мы собираем порядка 1gb профилей в секунду.
- Мы выделяем около 1500Gb оперативки и 200 ядер компонентам для сбора профилей каждые 2 минуты.
- Планируем делать сбор каждые 30 секунд, что потребует более сложных оптимизаций.
- Наш продукт настроен и оптимизирован так, чтобы переживать DC-1.
- Мы сами разворачиваем большинство компонентов в kubernetes, что дает полное понимание, как работает система.