サービスメッシュとは

マイクロサービスとは

皆さんは既にマイクロサービスアーキテクチャ知識を持ってるかもしれませんが、簡単にマイクロサービスの特徴をまとめます。

  • ビジネス機能に 沿って複数小さい「マイクロサービス」に分割し、 それらを連携してアプリケーションを構築する
  • 各サービス、独立したプロセスで動作する
  • 各サービス、よく定義されたオープンなインタフェースを備える (REST(JSON/HTTPS), gRPC 等)

マイクロサービスのメリット

  • 複数技術で対応可能
  • 障害耐性・保守性が高い
  • スケール・冗長化が容易
  • 開発チームを小さくできる
  • サービス一つ一つが小さいため把握が容易
  • サービスの再利用性が高くなる

マイクロサービスの課題

  • サービスディスカバリ: サービスや存在関係の発見
  • セキュリティ: 安全に接続する
  • トラフィック制御: レートリミットやリトライ設定
  • 負荷分散:複数サービスインスタンスにルーティング
  • 可観測性:全体がどように連携しているかわかりにくい
  • 分散トレース: サービス間、内部動作把握が困難
  • 高度なデプロイ:安全に効率よくデプロイする

サービスメッシュとは

サービスメッシュはマイクロサービスが抱える問題解決のための1つのアップローチです。

サービスメッシュの主な機能は:

  • サービス認証
  • 負荷分散
  • タイムアウト、リトライサーキットブレーカー
  • コネクションプールサイズ管理
  • きめ細かいルーティング
  • テレメトリ
  • リクエスト追跡
  • 意図的なエラー実施

サービスメッシュ機能を提供する製品はたくさんありますが、代表的なソフトウエアはIstio、 Linkerd、Consul。次に一番人気のIstioを紹介します。

Istio

Istio」は、IBMやGoogle、Red Hatなどが力を入れている取り組みであり、クラウド上のさまざまなシステムをまたがったマイクロサービス群をサービスメッシュという単位で管理できるようにするものだ。

アーキテクチャ

Istoアーキテクチャ

Istio では、Envoy ベースのサイドカーから成るデータ プレーンが提供されます。 これらのインテリジェント プロキシは、メッシュ化されたアプリとワークロードの内外のすべてのネットワーク トラフィックを制御します。
コントロール プレーンは、次のコンポーネントを使用して、構成、ポリシー、およびテレメトリを管理します。

  • Mixer – アクセス制御と使用ポリシーを適用します。 Prometheus にプッシュされたプロキシからテレメトリを収集します。
  • Pilot – プロキシのサービス検出やトラフィック管理のポリシー/構成を提供します。
  • Citadel – サービス間の mTLS を可能にする ID とセキュリティの機能を提供します。
  • Galley – コンポーネントに対する構成の抽象化と提供を行います。

Google CloudのAnthos Service Mesh (ASM)

Anthos Service Mesh(ASM)は、Google Cloudの複雑なマイクロサービス アーキテクチャ向けのフルマネージド サービス メッシュです。マイクロサービスの複雑な環境を管理し、それらが保証するメリットをすべて享受できるようにするための、フルマネージド サービス メッシュです。このプラットフォームにより、トラフィック管理やメッシュ テレメトリ、サービス間の通信保護に至るまで、全体的なサービス運用をシンプルにして、運用チームや開発チームの負担を大幅に軽減します。

次の記事、Anthos Service Mesh利用してマイクロサービス実装と運用のデモを紹介する予定ですので、少々お待ち下さい。