Яндекс — это данные. Это то, что мы потребляем и производим. Каждую секунду мы обрабатываем петабайты данных на сотнях тысяч машин в миллионах контейнеров. И этой обработкой нужно эффективно управлять.
Мы разрабатываем Kubernetes в Яндексе — Yandex Planner. Yandex Planner обеспечивает инфраструктуру управления ресурсами (оборудование) и сервисами (контейнеры) во внутреннем облаке Яндекса, где живут: Поиск, баннерные системы, кластеры MapReduce и просто все остальные сервисы Яндекса. Именно нам доверили разрабатывать решение, влияющее на весь Яндекс. Наша область интересов затрагивает всю инфраструктуру Яндекса: серверы, сети, пропускную способность и разделение I/O, предсказание нагрузки и распределение ресурсов, сетевые топологии внутри датацентров и между датацентрами. Реализуется это решение в виде отказоустойчивых горизонтально масштабируемых систем, соединяющих датацентры.
====Задачи, которые мы готовы доверить вам:
- дизайн, разработка и автоматизация Yandex Planner и окружающей экосистемы;
- анализ производительности, поиск узких мест, мониторинг и интерпретация работы системы, планирование роста и масштабированиe;
- разбор сложных ситуаций как на уровне приложений, так и на уровне оборудования;
- оптимизация прикладных и аппаратных решений;
- взаимодействие с другими командами Яндекса для поддержки их решений в экосистеме Yandex Planner.
Мы ищем уникальных специалистов.
====Мы ждем, что вы:
- знаете, что такое Paxos, и понимаете, что такое split-brain и как писать код с учетом network partitioning;
- разбираетесь в том, что такое eventual consistency (CAP), знаете, что такое exactly once, at least once и at most once, и понимаете, в каком случае что лучше;
- пишете код на С++ на fiber-корутинах в событийно-ориентированной архитектуре;
- можете написать горизонтально масштабируемый бекенд с 10 млн запросов в секунду, хорошо понимаете возможные проблемы, алгоритмы и подходы, помогающие в их решении;
- разбираетесь в TCP/IP-стеке, понимаете, что такое TCP-окно и ECN, и умеете это отлаживать;
- понимаете внутреннее устройство Linux и процессоров достаточно хорошо, чтобы выбрать hyper-threading или CPU affinity; working set или shared memory, когда нужно использовать huge pages, а когда нет.
Мы ищем разработчиков очень высокого уровня и понимаем, что сложно найти человека, разбирающегося сразу во всем. Поэтому даже если вы знаете и умеете не 100% перечисленного, мы с удовольствием с вами встретимся. У разработчиков такого высокого уровня мы не проверяем знание синтаксиса C++, мы сразу назначаем встречи с ведущими разработчиками Яндекса.