Sitar-agent: 信頼性の高い動的構成サイドカーを大... ノート

Sitar-agent: 信頼性の高い動的構成サイドカーを大規模に構築する

Airbnbは、数千のサービスインスタンスに動的な構成変更を確実に配信するために、軽量なKubernetesサイドカーであるsitarエージェントを開発しました。構成配信は、開発者がGitまたはUIを通じて値を生成または更新することから始まり、それらはSitar Serviceに保存されます。定期的に、構成の完全な状態は圧縮されたスナップショットにパッケージ化され、AWS S3にアップロードされます。サービスポッドが起動すると、sitarエージェントはまずこれらのS3スナップショットをマウントされたディスクにダウンロードし、迅速なブートストラップを可能にします。その後、スナップショットが作成されてからの変更についてSitar Serviceと同期し、メインアプリケーションコンテナに準備完了を通知します。起動後、エージェントは数秒ごとにSitar Serviceを継続的にポーリングして更新を取得します。メインアプリケーションコンテナは、値のキャッシュとファイル変更の検出を行うSitarクライアントライブラリを使用して、マウントされたディスクから構成を読み取ります。重要な設計上の決定は、わずかなコスト削減よりも信頼性、運用上の安全性、および多言語サポートを優先して、sitarエージェントをメインコンテナに統合するのではなく、個別のサイドカーコンテナとして維持することでした。このシステムは、サーバーサイドキャッシュとトークンベースのデータベースアクセスで最適化されたエージェントがSitar Serviceをポーリングするプルモデルを使用しており、負荷を軽減します。ローカルのオンディスクキーバリューストアには、AirbnbはSQLiteの優れた同時実行性、パフォーマンス、および多言語サポートにより、レガシーのSparkeyベースの実装よりもSQLiteを選択しました。SQLiteの組み込みのWrite-Ahead Loggingは書き込み中の同時読み取りを可能にし、そのシンプルな運用モデルは、RocksDBの高いパフォーマンスとより大きな複雑さよりも好まれました。この堅牢なサイドカー設計により、Airbnbの広大なサービスフリート全体で重要な構成が迅速かつ確実に配信されることが保証されます。
CdXz5zHNQW_7QO75wfm4Y.jpeg