
яндекс · 10 июн.
SaaS (Search-as-a-Service) — общая поисковая платформа в Яндексе. Мы создаём технологии, благодаря которым другие команды получают готовый полнотекстовый поиск, key-value-хранилище (eventually consistent) или kNN — и не тратят месяцы на разработку и поддержку собственного решения.
Сегодня нашей платформой уже пользуются сотни сервисов компании. При таком масштабе управлять всем вручную невозможно, поэтому мы строим большую инфраструктуру, которая позволяет создавать поисковые сервисы и управлять их компонентами, масштабировать и обновлять сервисы под нагрузкой, вести учёт потребляемых пользователями ресурсов — и делать многое другое. За всем этим стоит команда инфраструктуры SaaS.
Отдельную сложность добавляют множество внешних зависимостей и периодически изменяющееся мультидатацентровое окружение. Кроме того, мы должны уметь жить в условиях частичных отказов, когда деградируют смежные сервисы или целый дата-центр выходит из строя.
Большая часть текущей инфраструктуры написана на Python — это живая и сложная система. Мы постепенно унифицируем и переписываем отдельные процессы на Go — в частности, переходим на общепоисковые Kubernetes-контроллеры для развёртывания и управления поисковыми сервисами. Это осознанный шаг: мы хотим, чтобы наша инфраструктура стала ближе к тому, как устроены другие поисковые проекты в компании.
Основная работа впереди — у вас есть возможность присоединиться и повлиять на ключевые технические решения.
Управление жизненным циклом поисковых сервисов
Мы отвечаем за полный жизненный цикл сервиса: от первого деплоя до изменения конфигурации под нагрузкой. Автоматически создаём, масштабируем и удаляем инсталляции. Эти процессы постоянно развиваются, и вам предстоит перестраивать их под новые требования — так, чтобы платформа могла одинаково хорошо работать как с небольшими, так и с самыми крупными пользователями.
Проектирование надёжных алгоритмов
Сердце наших инструментов автоматического масштабирования — алгоритмы перешардирования и репликации. Они не прощают ошибок: неверный порядок действий может привести к потере трафика или данных на сервисах, которыми пользуются миллионы людей. Вам предстоит проектировать, разрабатывать и развивать такие алгоритмы — с учётом динамически меняющегося окружения и различных особенностей системы.
Учёт ресурсов и эффективность их использования
Платформа потребляет сотни тысяч ядер, поэтому учёт железа и эффективность его использования — отдельная инженерная задача, результат которой измеряется в реальных деньгах. У нас есть собственная модель учёта ресурсов, но она далека от идеала: вам предстоит переработать её, перестроить логику смежных процессов и улучшить работу с заказами железа. А чтобы заказанные ресурсы не простаивали, нужно разработать инструменты, которые помогут следить за эффективностью их использования.
Миграция на новый механизм доставки данных
Мы находимся в процессе миграции на общий механизм доставки распределённых индексов. Это не просто рутинный переезд — вам необходимо практически с нуля построить инфраструктуру миграции и помочь нам провести её так, чтобы не потерялось ни байта данных и ни капли трафика на сотнях работающих сервисов.
Больше о бэкенде в Яндексе — в канале Yandex for Backend
* Уверенно владеете Go или Python — и готовы работать с обоими языками
* Имеете опыт разработки и эксплуатации распределённых систем
* Готовы разбираться в сложных инфраструктурных задачах и не боитесь запутанных внешних зависимостей
* Решали похожие инфраструктурные задачи — строили системы оркестрации сервисов, автоматизировали деплой или управление ресурсами в распределённых системах
* Знаете и используете классические алгоритмы и структуры данных
* Понимаете, как работают поисковые системы и как устроены поисковые индексы