О проекте
Мы формируем команду платформы отказоустойчивости Такси, которая будет отвечать за стабильную работу бэкенда приложений Яндекс Go и Яндекс Про. Для этого нам предстоит решить множество технических проблем, например:
Вхождение сервисов в metastable failure state при перегрузке СУБД.
Примеры возможных решений:
- Перейти на Envoy как Reverse Proxy, включить фильтр Adaptive Concurrency, а по пути решить массу сложностей.
- Настроить Load Shedding прокси перед СУБД.
Нетестируемые фолбэки.
Примеры возможных решений:
- Построить хороший application-level chaos engineering. У нас уже есть простой chaos engineering, нужно его усилить. Например, с помощью похожего решения.
- Создать инфраструктуру или внедрить паттерн constant work для фолбэков: всегда параллельно обращаться к логике фолбэков.
Некритичные сервисы могут ухудшать стабильность Такси, особенно в самом сложном случае — при росте Latency.
Примеры возможных решений:
- Улучшить или переработать circuit breakers.
- Улучшить chaos engineering.
Нехватка эластичности сервисов, балансеров и СУБД при всплесках нагрузки в 2–4 раза после инцидентов.
Примеры возможных решений:
- Перейти на балансировку через локальный Sidecar, а не через отдельный под. Например, перейти на Envoy.
- Сформировать инфраструктуру для большей мультитенантности в СУБД и сервисах со всеми гарантиями по изоляции тенантов.
- Поддержать автоскейлинг подов.
Мы описали только примеры возможных решений, выбор которых всегда остаётся за разработчиком.
Команда платформы отказоустойчивости будет плотно работать с CTO, командой SRE и другими платформенными командами.
Что нужно делать
- Проектировать надёжные системы в микросервисной архитектуре, которые будут работать не только в корнер-кейсах под обычной нагрузкой, но и под многократной нагрузкой при даунтаймах.
- Уметь делать быстрый ресёрч: как в мире решают текущую проблему и каков State of the Art в этой области; разобраться в деталях работы конкретной технологии, например MongoDB.
- Разрабатывать, разворачивать и внедрять решения, участвовать в разборе инцидентов, обучать разработчиков отказоустойчивым паттернам.
- Писать код сервисов и библиотек (в том числе инфраструктурных), за которые команда не отвечает напрямую.
- Влиять на аптайм. Например, результат разработки автоскейлинга — не просто его запуск, а фактическое сокращение даунтаймов за счет автоскейлинга.
- Работать с сотнями микросервисов (в Такси их уже больше 600).
Ожидания
- Знаете один или несколько языков программирования.
- Понимаете базовые паттерны микросервисных архитектур: Circuit Breaker, Deadline Propagation, Exponential Back-off, очереди задач и сообщений, отсутствие общих баз между сервисами и т. п.
- Готовы отвечать за решение проблемы, а не за реализацию того решения, которое выбрал руководитель или техлид.