マイクロサービスとは
皆さんは既にマイクロサービスアーキテクチャ知識を持ってるかもしれませんが、簡単にマイクロサービスの特徴をまとめます。
- ビジネス機能に 沿って複数小さい「マイクロサービス」に分割し、 それらを連携してアプリケーションを構築する
- 各サービス、独立したプロセスで動作する
- 各サービス、よく定義されたオープンなインタフェースを備える (REST(JSON/HTTPS), gRPC 等)
マイクロサービスのメリット
- 複数技術で対応可能
- 障害耐性・保守性が高い
- スケール・冗長化が容易
- 開発チームを小さくできる
- サービス一つ一つが小さいため把握が容易
- サービスの再利用性が高くなる
マイクロサービスの課題
- サービスディスカバリ: サービスや存在関係の発見
- セキュリティ: 安全に接続する
- トラフィック制御: レートリミットやリトライ設定
- 負荷分散:複数サービスインスタンスにルーティング
- 可観測性:全体がどように連携しているかわかりにくい
- 分散トレース: サービス間、内部動作把握が困難
- 高度なデプロイ:安全に効率よくデプロイする
サービスメッシュとは
サービスメッシュはマイクロサービスが抱える問題解決のための1つのアップローチです。
サービスメッシュの主な機能は:
- サービス認証
- 負荷分散
- タイムアウト、リトライサーキットブレーカー
- コネクションプールサイズ管理
- きめ細かいルーティング
- テレメトリ
- リクエスト追跡
- 意図的なエラー実施
サービスメッシュ機能を提供する製品はたくさんありますが、代表的なソフトウエアはIstio、 Linkerd、Consul。次に一番人気のIstioを紹介します。
Istio
Istio」は、IBMやGoogle、Red Hatなどが力を入れている取り組みであり、クラウド上のさまざまなシステムをまたがったマイクロサービス群をサービスメッシュという単位で管理できるようにするものだ。
アーキテクチャ
Istio では、Envoy ベースのサイドカーから成るデータ プレーンが提供されます。 これらのインテリジェント プロキシは、メッシュ化されたアプリとワークロードの内外のすべてのネットワーク トラフィックを制御します。
コントロール プレーンは、次のコンポーネントを使用して、構成、ポリシー、およびテレメトリを管理します。
- Mixer – アクセス制御と使用ポリシーを適用します。 Prometheus にプッシュされたプロキシからテレメトリを収集します。
- Pilot – プロキシのサービス検出やトラフィック管理のポリシー/構成を提供します。
- Citadel – サービス間の mTLS を可能にする ID とセキュリティの機能を提供します。
- Galley – コンポーネントに対する構成の抽象化と提供を行います。
Google CloudのAnthos Service Mesh (ASM)
Anthos Service Mesh(ASM)は、Google Cloudの複雑なマイクロサービス アーキテクチャ向けのフルマネージド サービス メッシュです。マイクロサービスの複雑な環境を管理し、それらが保証するメリットをすべて享受できるようにするための、フルマネージド サービス メッシュです。このプラットフォームにより、トラフィック管理やメッシュ テレメトリ、サービス間の通信保護に至るまで、全体的なサービス運用をシンプルにして、運用チームや開発チームの負担を大幅に軽減します。
次の記事、Anthos Service Mesh利用してマイクロサービス実装と運用のデモを紹介する予定ですので、少々お待ち下さい。