* Гибкий язык конфигурирования для настройки потоков данных * Модульная архитектура с богатой системой плагинов * Возможность гибкой маршрутизации данных между источниками, фильтрами и получателями * Локальная буферизация для обеспечения надёжности Техническая часть:
* Современный C++20, асинхронное взаимодействие компонентов, использование coroutine * Поддержка различных сетевых протоколов: gRPC, HTTP(S) v1/v2, Unix domain sockets * Интеграция с OpenTelemetry, использование Asio, protobuf * TDD; СI/CD; тестовый стенд; релиз версии раз в две недели, когда заканчивается спринт Масштаб использования впечатляет: Unified Agent развернут в 2 млн контейнеров в инфраструктуре Яндекса с общим трафиком порядка 1 ТБ/с и является основным инструментом сбора метрик в Yandex Cloud. Это решение конкурирует с такими популярными инструментами, как Fluentd, Logstash, Amazon CloudWatch Agent и Datadog Agent. Проект активно развивается: мы планируем открыть исходный код и сделать его опенсорс-решением. Для вас это отличная возможность присоединиться к команде на раннем этапе и внести свой вклад в формирование архитектуры и функциональности! Вот небольшая часть вызовов, которые стоят перед командой разработчиков Unified Agent:
* Мгновенная передача логов В инфраструктуре Яндекса расположено множество распределённых серверов, а получение доступа к консоли занимает значительное время. Поэтому требуется возможность мониторить логи с различных серверов быстро, в режиме реального времени. * Разработка интеллектуальной системы диагностики Невозможно мониторить 2 млн хостов вручную, равно как и выявлять проблемы традиционными методами. Учитывая, что сбор метрик и дополнительных логов существенно увеличивает сетевой трафик, в агенте должна быть интеллектуальная система диагностики, которая не только заранее обнаруживает на серверах неполадки, но и предлагает, как их исправить. * Высокая надёжность Если что-то идёт не по плану — Unified Agent становится ключевым инструментом диагностики. Поэтому критически важно, чтобы агент мог продолжать работу даже при сбоях в системе, обеспечивая доставку логов и метрик независимо от обстоятельств. Присоединяйтесь к разработке инструмента, который играет важнейшую роль в управлении инфраструктурой и её мониторинге в одной из крупнейших технологических компаний!
Обязанности:
Разрабатывать высоконагруженные компоненты на C++Агент функционирует как многомодульная система, где каждый модуль отвечает за сетевое взаимодействие и операции с файловой системой. Чтобы оптимизировать использование ресурсов, все операции выполняются через общие компоненты, которые создаёт и улучшает команда разработчиков. Оптимизировать производительность при работе с большими объёмами данных
Система непрерывно получает на вход значительные потоки данных, оптимально обрабатывает их и надёжно передаёт на серверы сбора метрик. Нужно создавать эффективные сценарии обработки, тщательно контролируя пропускную способность и производительность всей системы, профилировать и оптимизировать важные участки кода. Разрабатывать надёжное сетевое взаимодействие компонентов системы
Агент обеспечивает взаимодействие с множеством клиентов и обменивается данными с серверами. При этом система должна эффективно управлять входящим потоком данных, превышающим возможности обработки, и соблюдать серверные квоты, не допуская перегрузки инфраструктуры. При создании сетевых протоколов необходимо реализовывать механизмы контроля нагрузки и балансировки трафика, чтобы система работала стабильно при различных условиях эксплуатации. Участвовать в проектировании архитектуры системы и реализовывать новые сценарии сбора метрик и логов
Вы станете проектировать и развивать архитектуру агента, которая должна быть гибкой и масштабируемой, чтобы соответствовать растущей инфраструктуре Яндекса. При этом важно обеспечить поддержку различных протоколов и форматов данных, а также создать механизмы быстрой адаптации системы к изменениям в инфраструктуре компании. Предлагать и внедрять инновационные решения для улучшения продукта
Понадобится активно участвовать в инновационном развитии системы: создавать новые методы оптимизации и эффективные способы сбора и обработки метрик и логов. Вы сможете реализовывать свои идеи, как улучшить систему, и предлагать собственные инновационные решения, чтобы заранее адаптировать агента к изменениям.
Ключевые навыки:
- Владеете C++, разрабатывали надёжные программные продукты
- Понимаете принципы работы многопоточности и умеете эффективно их применять
- Знакомы с принципами работы операционных систем
- Готовы предлагать и реализовывать новые технические решения
- Стремитесь создавать качественный продукт для тысяч пользователей
Дополнительные требования:
- Работали с сетевыми протоколами
- Оптимизировали производительность
- Умеете работать с большими объёмами данных
- Разрабатывали хранилища данных
