Behaviour Trees в инфраструктуре: как мы переписывали стейт-машину хостового агента деплой-платформы

Архитектура и масштабируемость

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

Backend-инженеры и инфраструктурные инженеры, которые проектируют оркестраторы, агенты и системы управления жизненным циклом, борются со сложностью стейт-машин и ищут баланс между наглядностью, тестируемостью и масштабируемостью.

Тезисы

Хостовой агент — компонент, который на каждом хосте собирает контейнеры, поддерживает их жизнеспособность и управляет их жизненным циклом, обслуживая сразу несколько систем деплоя и несколько типов контейнеров с разной архитектурой. И при этом не имеет права упасть сам. Внутри это большая иерархическая стейт-машина с сотнями переходов. За время жизни компонента мы прошли три подхода к её проектированию: плоский switch/case, объектный Statechart и, наконец, Behaviour Trees — паттерн из геймдева. В докладе честно разбираю, где каждый подход ломается на масштабе, какую боль мы накопили и почему BT оказались рабочим решением для инфраструктурного кода на Java и C++.

Примечание для ПК: BT используется не только в рамках инфраструктуры Яндекса, но и в других компаниях, например, MWS. Поэтому про исключительный опыт Я речи не идет.

Сергей Курганов

Yandex Infrastructure

Руководитель группы разработки и агентов систем деплоя

Видео

Другие доклады секции

Архитектура и масштабируемость