BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Mott Klein氏に聞く- LyftでのEnvoyの開発

Mott Klein氏に聞く- LyftでのEnvoyの開発

ブックマーク

原文(投稿日:2017/01/25)へのリンク

Microservices.com Practitioners Summitは,マイクロサービスを採用した現実の大規模アプリケーションに注目した,実践者が主導するマイクロサービスのカンファレンスだ。2017年1月31日にサンフランシスコで開催され,UberやNew Relic,Lyft,PayPal,Googleなどのマイクロサービス専門家たちが講演する。

LyftのシニアソフトウェアエンジニアであるMatt Klein氏は,このサミットで講演を行なう予定だ。氏は主として,Lyftのサービス指向アーキテクチャで使用されているレイヤ7コミュニケーションバスのEnvoy上で開発を行なっている。

InfoQは講演を控えたKlein氏に会って,Lyftのネットワークニーズに対してカスタムツールを開発したことのメリットや,他のマイクロサービスアーキテクチャに対するメリットについて議論した。

InfoQ: 現在のサービス指向アーキテクチャは,モノリス内のインライン処理ではなく,ネットワーク通信とRPC呼び出しに大きく依存しています。複雑なネットワークインフラストラクチャへの依存を改善する上で,Envoyはどのように役立つのでしょう?

Matt Klein 過去5年から10年の間,SoAにはいくつかの大きな変革がありました。まず最初に,インフラストラクチャのライフサイクルの初期において,多くの人たちがSoAを構築するようになりました。それにも増して重要なのは,多くの企業が“多言語”(一度に3つ以上の言語を使用)展開を行なったということです。

歴史的に見て,高度なSoAネットワークに関する複雑性の大部分は,極めて複雑なライブラリによって実現されてきました。ロードバランシングやルーティング,サービスディスカバリ,再試行,レート制限,サーキットブレーカ,統計情報,ログ情報,トレースといった機能がこれに含まれます。企業の使用する言語の数が極めて少ないか,あるいはリソースが潤沢であるかしない限り,すべての使用言語に対して高度なネットワーキングライブラリを用意することは事実上不可能です。

EnvoyはSoAに共通するネットワーク問題を一ヶ所で解決する,アウトオブプロセスなハイパフォーマンスプロキシです。(あらゆる言語で記述された)あらゆるアプリケーションに対応し,ネットワークの複雑性を隠蔽するように設計されています。アプリケーション開発者はビジネスロジックに集中し,ローカルのEnvoyと通信を行なうだけで,サービスディスカバリやロードバランシング,ルーティングといったことはすべてEnvoyが行なってくれます。Envoyのおそらく最も重要な存在価値は,SoAの全ホップに対して一貫した監視性を提供することにあるでしょう。これはデバッグの面から見て,極めて重要なことです。

InfoQ: Lyftでマイクロサービスを開発するためには,ネットワークスタックをどの程度理解しなければならないのでしょう?この精神的なオーバヘッドを削減する上で,Envoyはどのような役割を果たしますか?

Klein: ごくわずかです!LyftでEnvoy全体をデプロイするために,私たちは“EnvoyClient”と呼んでいる極めて薄いライブラリを使って,開発者が対話するための世界を構築しました。コードの開発中,テスト中,あるいは運用中においても,EnvoyClientがインスタンス化されてリモートサービスとの通信に使用されます。このライブラリが内部的に行なっているのは,いくつかのヘッダ情報を付加してローカルのEnvoyと通信するだけで,後はすべてEnboyが処理してくれます。開発者にはライブラリを通じて適切な再試行ポリシやタイムアウトを設定するように推奨しています。それだけでよいのです。後はライブラリがコールを行い,結果を返してくれます。それ以外のことをする必要はありません。

Envoyはどこでも動作しますから,一貫性のあるデータを大量に生成して,デバッグに役立てることも可能です(統計,ログ,トレース,ダッシュボードなど)。

InfoQ: Envoyを開発するまでは,L7ルーティングにはどのようなコンポーネントを使用していたのでしょう?それはどのような点で不十分で,どのような部分がカスタムソリューションの開発工数を正当化させたのですか?

Klein: 最近のほとんどの企業と同じように,Lyftは“多言語”です。PHPやPyhon,Goなどで開発したサービスを運用しています。Envoyを導入するまでは,言語毎に異なるライブラリや統計情報の違いなど,さまざまなソリューション間のミスマッチがありました。また,AWSのELB製品に多くを依存していたため,それに起因する複雑な問題(不安定性,監視能力の不足など)を抱えていました。要するに,全体としてカオスだったのです。開発者はネットワークを信用せず,複雑な問題をデバッグできませんでした。ハイパフォーマンスなネットワークサービスをクリティカルパスに置くことに反対していたのです。

共通基盤が必要なことは明白でした。このような多くの経験と結果からEnvoyが生まれたのです。

InfoQ: 企業がマイクロサービスアーキテクチャに移行する上で,Envoyは有用な存在だと思いますか?まずは何から始めればよいのでしょう?

Klein: ある程度複雑なSoAを展開する企業ならば,Envoyが役に立つことは間違いありません。一貫性のある環境を提供し,開発者の負担を緩和し,複雑な問題をデバッグする上で,共通基盤の存在は極めて重要です。

当社のサイトには多くの前例が資料化されていますので,一読を強く奨めたいと思います。試行のためのDockerコンテナ構成例もいくつか用意しています。さらに,EnvoyをもっとダイレクトにKubernetesに組み込む作業も進行中なので,より小さな企業でも使いやすくなると思います。

 

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT