Москва, Санкт-ПетербургC++, PythonПоискСпециалист
Архитектуру крупного сервиса Яндекса, например Поиска, можно представить как большой граф, в котором узлы — это конкретные сервисы, а ребра — это потоки передачи данных.
Apphost — это платформа, исполняющая такой граф в рантайме: балансирующая нагрузку по инстансам различных сервисов, реализующая протокол взаимодействия между сервисами, формирующая запрос в сервис из ответов других сервисов (в соответствии с ребрами в графе).
Apphost уже используется в крупнейших сервисах Яндекса, таких как Поиск, Почта, Новости и Видеохостинг, и планируется к внедрению во многих других.

Нам нужен опытный специалист, который будет помогать нам с развитием Apphost'а и реализацией новой функциональности. В наших планах:

  • внедрить новый алгоритм балансировки нагрузки по инстансам одного узла графа;
  • улучшить систему обработки ошибок от узлов графа;
  • реализовать новую систему доставки данных (графов) под инстансы Apphost'а, работающую за минуты.
Наша цель — максимально упростить внедрение новых сервисов в существующие графы обработки запросов и в идеале позволить автору сервиса реализовывать бизнес-логику, не думая про инфраструктурные задачи.

Вы нам подходите, если у вас есть:

  • хорошее знание C++;
  • знание Python;
  • опыт разработки высоконагруженных приложений (Apphost может обрабатывать более 10 тысяч запросов в секунду на одном хосте);
  • опыт разработки сетевых приложений.

Кроме того, приветствуется:

  • опыт разработки многопоточных приложений;
  • опыт работы с grpc;
  • знание сетевого стека Linux.

Вам предстоит:

  • научиться автоматически разрывать keepalive соединение в http инстанс, который неактивен продолжительное время;
  • улучшить сигналы мониторинга, которые Apphost отдает про клиента;
  • улучшить валидацию новой версии графов, чтобы не допустить «плохой» граф до рантайма;
  • улучшить обработку отладочной/служебной информации от сервисов под Apphost;
  • уменьшить до 0 число рантайм ошибок, вызванных одним выбывшим grpc инстансом под Apphost'ом.