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.