За даними Infoq, компанія Airbnb оновила свій внутрішній інструмент Sitar-agent для оптимізації керування конфігураціями у масштабних кластерах. Система призначена для того, щоб інженери могли змінювати поведінку додатків без необхідності повторного розгортання сервісів, що критично важливо для операційної гнучкості великих платформ.
Архітектура sidecar та мовна незалежність
Sitar-agent працює як sidecar поруч із контейнерами додатків у Kubernetes. Він забезпечує локальний доступ до конфігурацій через спільну файлову систему та кеш у пам'яті. Такий підхід дозволяє сервісам на різних мовах програмування — Java, Python, Go, TypeScript та Ruby — отримувати дані однаково, при цьому вся логіка доставки конфігурацій централізовано винесена в окремий компонент.
Вибір архітектури sidecar замість інтеграції логіки безпосередньо в бібліотеки додатків був обґрунтований потребою у спрощенні експлуатації. Хоча використання бібліотек могло б знизити споживання ресурсів, команда Airbnb дійшла висновку, що окремий агент мінімізує дублювання коду та гарантує консистентну поведінку системи по всьому стеку технологій.
Snapshot-завантаження та перехід на SQLite
Одним із ключових нововведень став робочий процес запуску на основі знімків (snapshots). Конфігурації періодично зберігаються в Amazon S3, а при старті нового подає Sitar-agent спочатку завантажує останній snapshot, а вже потім синхронізує інкрементальні зміни з бекендом. Це значно скорочує час розгортання та дозволяє сервісам працювати навіть під час тимчасової недоступності центральної платформи.
Також команда замінила попереднє сховище Sparkey на SQLite. Вибір припав на SQLite завдяки його моделі конкурентності, простоті експлуатації та широкій підтримці в екосистемі мов програмування. Для мінімізації ризиків під час міграції інженери використали валідацію через shadow-reads та поступове розгортання за допомогою feature-flags.
Модель розподілу даних
Airbnb продовжує використовувати модель отримання конфігурацій на основі pull-запитів. Агент опитує бекенд приблизно кожні десять секунд. Завдяки серверному кешуванню та відстеженню інкрементальних змін, система забезпечує швидке розповсюдження оновлень при мінімальному навантаженні на центральну інфраструктуру.
Оновлення Sitar-agent демонструє прагматичний підхід до масштабування: пріоритет надається стабільності та уніфікації замість мікрооптимізації ресурсів окремих контейнерів.