Старший разработчик Go (Команда непрерывного профилирования)

Дата размещения вакансии: 20.09.2024
Работодатель: Ozon
Уровень зарплаты:
з/п не указана
Город:
Москва
Требуемый опыт работы:
От 3 до 6 лет

Наша команда строит платформу непрерывного сбора профилей на базе собственного решения. Мы работаем над улучшением производительности, добавляем новые фичи и интеграции с другими компонентами телеметрии (алерты, трейсы, метрики). Основная задача предоставлять продукт, позволяющий всем разработчикам 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, что дает полное понимание, как работает система.