BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Prana - NetflixOSSベースサービスのための"サイドカー"アプリケーション

Prana - NetflixOSSベースサービスのための"サイドカー"アプリケーション

ブックマーク

原文(投稿日:2014/12/20)へのリンク

NetflixがPranaをリリースした。JVMベースのプラットフォームサポートライブラリであるNetflixOSSを,異種マイクロサービスアプリケーションで使用するために同社が開発した,オープンソースの“サイドカー”アプリケーションだ。

Pranaは各サービスインスタンス上にデプロイされて,“親”となるサービスに概念的にアタッチする。サイドカーがオートバイに取り付けられるのと同じ方法だ。アタッチしたPranaは第2のプロセスとして,サービスと並行して動作し,サービスディスカバリや動的コンフィギュレーション,レジリエントなサービス間通信といった,HTTP APIを介して公開されるプラットフォームのインフラ機能を提供する役割をする。

Netflixのブログでは,マイクロサービスへの依存度の高いエコシステムの操作や管理において,サイドカーアプリケーションの使用は同社の内外でポピュラーになりつつある,としている。Pranaのようなサイドカーアプリケーションは,実装および展開技術の面で異機種化のますます進むサービスのプラットフォームインフラストラクチャに対して,均質なインターフェースを提供することが可能なのだ。

PranaとHTTP経由でプロセス間通信することで,PythonやNode.jsなど異なる言語で記述されたアプリケーション,あるいはMemcached, Spark, Hadoopといったサービスが,NetflixOSSライブラリの提供する機能を利用できるようになる。ターゲットとしる言語やプラットフォーム毎に,ライブラリを書き直す必要はない。

サイドカーアプリケーションとしてアタッチした親サービスに対して,Pranaは次のような機能を提供する。

  • Eurekaサービスを介した,サービスの登録と検出。追加的なNetflixOSSベースのコンポーネントによって,親サービスを"発見可能"にすると同時に,HTTPエンドポイントの状態チェックも実行する。
  • Atchaiusによる動的コンフィギュレーション。これによって親サービスは,動的プロパティの更新を受信できるようになる。
  • レジリエントなサービス間通信。PranaサイドカープロキシがHystrix/Ribbonを使って他のマイクロサービスにリクエストを送ることで,親サービスが他のサービスを呼び出して,それらのライブラリが提供するサーキットブレーカやバルクヘッド,フォールバック機能を利用できるようになる。
  • サービスインスタンスとその対応する環境の,実行時の情報と診断が,Admin Consoleを通じて可能である。

Pranaはまた,カスタムプラグインを追加することで,機能拡張が可能なように設計されている。ただし現時点でこの機能は,プロジェクトのGithubページでは未解決の問題に分類されている。Pranaのコアアプリケーションは,Netflixのマイクロサービス用テンプレートであるKaryon,同じくNetflixの非同期イベント駆動ネットワークアプリケーション用のアプリケーションフレームワークNettyのリアクティブエクステンション(Rx)アダプタであるRxNettyをベースに構築されている。

Pranaのアーキテクチャダイアグラム,Netflix Blogより

サイドカーアプリケーションを利用するこの方法は,Netflix以外の場所,例えばAndrew Spyker氏によるNetflixOSSベースの動的コンフィギュレーションデモアプリであるAcme Airや,Dockerのクロスコンテナリンク,AirBnBのサービスディスカバリ用アプリケーションスイートSmartStackなどにおいては,“アンバサダ”アプリケーションとも呼ばれている。

Pranaサイドカーアプリケーションは,プロジェクトのGithub “Getting Started” ページの指示に従うことで,サービスへの組込みも可能だ。

この記事に星をつける

おすすめ度
スタイル

BT