Москва
Наша команда строит платформу непрерывного сбора профилей на базе собственного решения. Мы работаем над улучшением производительности, добавляем новые фичи и интеграции с другими компонентами телеметрии (алерты, трейсы, метрики). Основная задача предоставлять продукт, позволяющий всем разработчикам Ozon находит узкие места для оптимизации своих сервисов.
Вам предстоит:
- Поддерживать и улучшать собственное решение, изменять архитектуру под непрерывный рост нагрузки.
- Работать над стабильностью и находить места оптимизации для сокращения потребления ресурсов.
- Реализовать такие фичи, как более частый сбор профилей (сейчас 2 минуты, планируем каждые 30 секунд), интегрироваться с алертингом, реализовать детект аномального потребления памяти, cpu и так далее, экземпляры, сравнение профилей.
- Работать над сжатием профилей и придумать более компактное хранение в базе данных.
- Засетапить и поддерживать профайлинг в 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, что дает полное понимание, как работает система.