DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
KOEN
Read Original

Contents

Continue Reading

  • More from Airbnb
  • Related reads#Kubernetes
#Backend

Sitar-agent: 대규모 환경에서 안정적인 동적 구성 사이드카 구축하기

Sitar-agent: 대규모 환경에서 안정적인 동적 구성 사이드카 구축하기
01

Summary

에어비앤비는 어떻게 수만 개의 서버 설정을 재배포 없이 10초 만에 바꿀까?

안정성과 성능을 모두 잡은 Java 기반 사이드카 sitar-agent의 설계 노하우와 SQLite 마이그레이션 전략

에어비앤비의 핵심 동적 구성 시스템인 Sitar의 진화 과정을 다룹니다. 대규모 트래픽 환경에서 설정 전파의 신뢰성을 확보하기 위해 사이드카 아키텍처를 선택하고, 로컬 스토리지 최적화를 통해 성능 한계를 극복한 엔지니어링 여정을 소개합니다.

  • 01S3 스냅샷 프리로딩을 활용한 빠른 포드 시작 및 서버 장애 복원력 강화
  • 02메인 컨테이너 통합 대신 사이드카를 선택하여 얻은 리소스 격리 및 언어 중립성
  • 03Sparkey에서 SQLite로 전환하며 해결한 데이터 동시성 및 다중 언어 클라이언트 지원 문제
  • 04서버 부하를 최소화하면서도 10초 이내의 전파 속도를 보장하는 풀(Pull) 모델 최적화
  • 05섀도우 리드(Shadow Reads)와 기능 플래그를 활용한 무중단 스토리지 마이그레이션 전략

+RECOMMENDATION

대규모 마이크로서비스 환경에서 설정 관리 시스템을 설계하거나, 성능과 운영 단순성 사이에서 고민하는 인프라 엔지니어에게 적극 추천합니다.

The Problem

수만 개의 서비스 인스턴스가 운영되는 에어비앤비 환경에서 서비스 재배포 없이 실시간으로 동적 설정을 빠르고 안정적으로 전달해야 하는 과제가 있었습니다. 특히 설정 서버의 장애 상황에서도 서비스 가동성을 유지하고 수초 내에 모든 노드에 설정을 전파하는 성능이 요구되었습니다.

The Solution

Ruby에서 Java로 재작성된 경량 Kubernetes 사이드카 'sitar-agent'를 도입하여 S3 스냅샷 프리로딩 기능을 구현했습니다. 또한 로컬 데이터스토어를 기존 Sparkey에서 동시성 제어가 우수한 SQLite로 교체하고, 서버 부하를 줄이기 위해 캐싱 최적화된 풀(Pull) 모델을 채택했습니다.

The Result

S3 스냅샷을 통해 포드 시작 시 부트스트랩 속도를 높이고 서버 의존성을 낮추었으며, SQLite 도입으로 멀티 언어 지원 및 읽기/쓰기 성능을 대폭 개선했습니다. 결과적으로 수만 개의 포드에 수십 초 내로 설정을 안전하게 전파할 수 있는 확장성을 확보했습니다.

Trade-off

비용 절감을 위해 메인 컨테이너 내 라이브러리 방식을 고려했으나, 다국어 지원의 복잡성과 리소스 격리 부족으로 인해 사이드카 방식을 유지하기로 결정했습니다. 실시간성을 위해 푸시 모델을 고려할 수 있었으나 운영 단순성을 위해 최적화된 풀 모델을 선택했습니다.

03

Key Concepts

Concept · 01

Kubernetes Sidecar

기본 컨테이너와 동일한 포드 내에서 실행되는 보조 컨테이너로, 메인 서비스 로직과 독립적으로 기능을 수행합니다.

  • sitar-agent를 별도 컨테이너로 실행하여 메인 앱과 리소스를 격리함
  • 다양한 언어로 작성된 에어비앤비 서비스에 동일한 설정 기능을 제공함
Concept · 02

S3 Snapshot Preloading

설정 상태를 압축하여 S3에 저장하고 포드 시작 시 이를 로드하여 서버 부하를 줄이는 기술입니다.

  • 설정 서버의 가용성과 상관없이 포드가 독립적으로 시작될 수 있게 함
  • 서버로부터 모든 변경 이력을 다시 가져오는 대신 최신 상태를 즉시 복구함
Concept · 03

SQLite WAL Mode

Write-Ahead Logging 기술을 사용하여 데이터베이스의 읽기와 쓰기 작업을 동시에 수행할 수 있도록 지원하는 모드입니다.

  • Sparkey의 전역 락 문제를 해결하여 빈번한 설정 업데이트 시 성능을 보장함
  • 다양한 프로그래밍 언어에서 공식 라이브러리를 통해 안정적으로 접근 가능함
Continue reading · same source

AirbnbMore from Airbnb

View all posts from Airbnb
  • 프로젝트 라이트하우스 3부 — project-lighthouse-anonymize를 소개합니다

    Data PrivacyAnonymizationPython
    4일 전
  • 코로나19의 종식을 알게 된 방법 (그리고 우리 모델이 잊어야 했던 것들)

    ForecastingBayesian MethodsMachine Learning
    1주 전
  • 유연한 인증(Flexible Authentication): 에어비앤비의 수백만 사용자를 위한 인증 시스템 재설계

    Server-Driven UIAuthenticationMobile Architecture
    2주 전
  • 평가 주도 개발: 대규모 GenAI 평가를 통해 얻은 교훈

    LLM EvaluationGenerative AIEval-Driven Development
    1개월 전
  • 게스트 여정 학습을 통한 에어비앤비 검색 개인화

    TransformerRecommendationSearch Personalization
    1개월 전

Related reads#Kubernetes

Explore #Kubernetes
여기어때·EKS

EKS 컨테이너 메모리 스파이크 추적기

#Kubernetes3일 전
여기어때·SRE

SRE 업무에 AI 녹여내기 — 1편: Smart RI Calc로 인프라 비용 산정 자동화

#Kubernetes6일 전
토스·LLM Serving

LLM 서빙, 띄우는 것과 잘 띄우는 것 사이

#Kubernetes1주 전
아임웹·VPC Lattice

VPC Lattice 기반 서비스 네트워크 재설계와 비용 최적화 사례

#Kubernetes1주 전
채널 톡·Sandboxing

AI가 방금 짠 코드, 저희 서버에서 돌아갑니다

#Kubernetes1개월 전

Source

Airbnb
Airbnb
Engineering Blog

Published · June 4, 2026

Topics

KubernetesSidecarSQLiteScalabilityMicroservices