Google, IBM, Lyftがマイクロサービスを管理、セキュア化、監視するフレームワークであるIstio(ギリシャ語で“帆”を意味する)をオープンソース化した。
マイクロサービスは、複雑なシステムを構成するタスクを数ダース、あるいは数百の小さいサービスに分割することで、開発に簡潔さをもたらす。各サービスはソフトウェアエンジニアの小さなチームにとって理解しやすく変更しやすいものとなる。しかし、複雑さは実際には排除されず、これら大量のサービスの接続、管理、監視の領域へ移動する。数百ものサービスの管理、デプロイの扱い、バージョン管理、セキュリティ、フェイルオーバー、ポリシー強制、計測、監視、等は簡単ではない。Istioはこれらの問題を解決しようとするものだ。
Googleによれば、Istioは“サービスとネットワーク間のインフラストラクチャのレイヤー”であり、“サービスデプロイメントと組み合わせて一般にサービスメッシュと呼ばれる”。Istioのウェブページではサービスメッシュをより詳細に説明している。
サービスとネットワーク間に、開発者が分散システムの問題に対する解決策をコードに書き込むことなく、オペレーターに必要なコントロールを提供してくれるようなインフラストラクチャ層を透過的に注入できたとしたらどうでしょうか。このインフラストラクチャとサービスデプロイメントの統一レイヤーは一般にサービスメッシュと呼ばれます。マイクロサービスが機能チームを切り離すことに役立つのと同様に サービスメッシュはオペレーターをアプリケーション機能のデプロイメントとリリースプロセスから切り離すことに役立ちます。Istioは、システム的にネットワークパスへプロキシーを注入することで、まったく別のマイクロサービスを統合されたサービスメッシュに変容させます。
Istioはクラウドまたはオンプレミスのどの環境でも実行できる。はじめのαバージョン(0.1)はKubarnetesで実行するが、必須要件ではない。Istioの主な機能は以下のとおりだ。
- HTTP, gRPC, TCPトラフィックによる自動ロードバランス
- リッチなルーティングルールによるきめ細かいトラフィック制御
- トラフィックの暗号化、サービスからサービスへの認証、強力な同一性の表明
- 全体的なポリシー強制
- 綿密な測定とレポート
裏側では、IstioはLyftが昨年9月にオープンソース化した、サービスプロキシかつコミュニケーションバスであるEnvoyを使用している。Envoyはプロダクションで“10,000のVMを束ね、毎秒2Mのリクエストを処理するような100以上のサービスを管理する”ために使用されている。Shriram Rajagopalan氏(IBM)とLouis Ryan氏(Google)は最近GlueCon 2017にてIstioの技術詳細 (PDF) を紹介した。以下がシステムの高レベルなダイアグラムだ。
Envoyはトラフィックのフィルタリングとルーティング、サービス発見、回復性のあるロードバランシングのためのヘルスチェック、セキュリティのためのTLSサポート、通信のためのgRPC、データベースアクセスの統計を収集するためのMongoDBとDynamoDBのパース、などを行う。EnvoyはC++11で書かれており、C++、Go、Java、PHP。Pyhhonで書かれたマイクロサービスでテストされているが、他の言語と組み合わせることもできる。Istioはネットワークモニタリングも可能で、PrometheusとGrafanaで参照でき、Zipkin と統合してレイテンシーの問題をトラブルシューティングすることもできる。
Istioの開発チームはGoogle Cloud EndpointsとApigee.との統合を計画中だ。また、Red Hat、Pivotal、Weaveworks、Tigera、そしてDatawireは、それぞれの製品をIstioと統合しようとしている。ロードマップにはこれから、今年中に計画されているバージョン1.0で何が期待されているかの詳細が含まれている。
Rate this Article
- Editor Review
- Chief Editor Action