Код Читати оригінал на Infoq 1 хв читання 1

Як Airbnb оновив Sitar-agent для керування конфігураціями

Інженери Airbnb детально описали архітектуру Sitar-agent — спеціалізованого Kubernetes sidecar, який забезпечує динамічне оновлення конфігурацій для десятків тисяч подів у реальному часі. Система дозволяє розповсюджувати зміни в умовах великої мікросервісної інфраструктури протягом лічених секунд, зберігаючи доступність даних навіть під час збоїв центральних сервісів. Модернізація компонента включає перепис на Java, інтеграцію snapshot-завантаження з Amazon S3 та перехід на SQLite як основне сховище локальних даних.

Технічна діаграма архітектури системи Sitar-Agent з блоками для Git Flow, AWS S3 та контейнерів виробничих сервісів.
Технічна діаграма архітектури системи Sitar-Agent з блоками для Git Flow, AWS S3 та контейнерів виробничих сервісів. · Джерело зображення: Infoq

За даними 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 демонструє прагматичний підхід до масштабування: пріоритет надається стабільності та уніфікації замість мікрооптимізації ресурсів окремих контейнерів.

Контекст для України

Для українських розробників та DevOps-інженерів, які працюють з високонавантаженими мікросервісними архітектурами (наприклад, у Fintech або E-commerce секторах), досвід Airbnb є актуальним кейсом масштабування. Використання sidecar для конфігурацій дозволяє українським командам уникати складнощів з синхронізацією стану між різними мовами програмування в межах одного кластера Kubernetes. Оскільки багато українських компаній релокували інфраструктуру до хмарних провайдерів, інтеграція з Amazon S3 для bootstrap-завантаження стає стандартним сценарієм розгортання.

Часті запитання

Чому Airbnb обрали архітектуру sidecar замість інтеграції в бібліотеки додатків?
Команда дійшла висновку, що окремий агент мінімізує дублювання коду та гарантує консистентну поведінку системи по всьому стеку технологій. Такий підхід спрощує експлуатацію порівняно з інтеграцією логіки безпосередньо в бібліотеки додатків.
Як працює механізм snapshot-завантаження у Sitar-agent?
Конфігурації періодично зберігаються в Amazon S3. При старті нового пода Sitar-agent спочатку завантажує останній snapshot, а вже потім синхронізує інкрементальні зміни з бекендом. Це скорочує час розгортання та забезпечує роботу сервісів під час недоступності центральної платформи.
Telegram

Свіжі новини у нашому Telegram

Отримуйте миттєві сповіщення про нові публікації в рубриці «Код»

@procodeandevenmore