Sandbox

Язык буткемпа: Python
Технологии: MongoDB

Sandbox — это внутренняя система для выполнения задач общего назначения.Является основным рантаймом, в котором выполняются этапы CI flow практически всех команд Яндекса. Кроме этого в Sandbox пользователи решают тысячи других собственных сценариев автоматизации (любая рутина: аналитика, регулярные проверки и пр.) и даже обрабатывают события в реальном времени.

В состав системы входят планировщик очереди, SDK для описания самих задач, API, приложение для компьютера, а также клиентские приложения на хостах.

Стек

Python 3, Python 2.7 Основной язык программирования
Flask, uWSGI Основные фреймворки
MongoDB, SQLite Базы данных
mongoengine ORM
ClickHouse Храним здесь большой объём статистических данных
Zookeeper Отвечает за выборы Primary наших сервисов

Команда

У нас распределённая команда: по три человека в Москве и Белграде + по одному в Санкт-Петербурге и Ереване.

Среди нас есть крутые специалисты по Python, эксперты в Linux и люди, которые умеют проектировать нагруженные системы.

Особенности

  • Под нашим управлением находятся тысячи серверов, на которых в сутки выполняется более 1,5М задач. К системе предъявляются высокие требования, которые касаются надежности, доступности и производительности.
  • Есть возможность поработать в команде, где есть как высокоуровневая разработка (API, очереди сообщений, СУБД), так и низкоуровневая (файловая система, cgroup, взаимодействие процессов).
  • Уникальный стек: наш рантайм работает поверх Linux и MacOS самых разных версий, а также Windows.

Что нужно принять во внимание

  • У нас есть легаси код на Python 2. Он обусловлен тем, что код некоторых задач архитектурно «встроен» в наш серверный компонент, а это — код сотен пользовательских задач. Однако у нас есть план как минимизировать поверхность этого кода, чтобы он не приносил особых неудобств.
  • Есть SRE-дежурства: иногда требуется реагировать на уведомления, разбираться с первопричиной проблемы и устранять её, либо настраивать сами уведомления. Мы сами отвечаем за стабильность сервиса, поэтому сами настраиваем алерты, которые считаем необходимыми, и пороги, которые нам кажутся разумными.

Вызовы

Ключевые задачи, которые стоят перед сервисом на ближайшее время:

  • повышение утилизации, чтобы более эффективно расходовать железо;
  • как следствие, улучшение изоляции по ресурсам;
  • улучшение безопасности, чтобы предоставить более гранулированный доступ к ресурсам, порождаемых задачами.

Дополнительные материалы

https://habr.com/ru/company/yandex/blog/544842/ — статья про Sandbox.

Выступление Константина Кардаманова про Sandbox

Предыдущая
Следующая