連載
» 2021年10月15日 05時00分 公開

サービスメッシュ、Istioがマイクロサービスのトラフィック制御、セキュリティ、可観測性に欠かせない理由Cloud Nativeチートシート(9)

Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する連載。今回は、近年注目を集める「サービスメッシュ」と、そのツールとして人気の高い「Istio」について解説します。

[北村卓也, 毛利健太郎, 望月敬太, 佐藤優太, 岡本隆史,株式会社NTTデータ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

近年注目のサービスメッシュ

 コンテナ技術やクラウドネイティブを語る文脈の中で、「サービスメッシュ」という単語を耳にする機会が増えてきたのではないでしょうか。Linux Foundation傘下のCloud Native Computing Foundation(CNCF)が2020年5〜6月に行った調査「CNCF SURVEY 2020」でも、調査対象のうち27%の組織が既に商用環境でサービスメッシュを利用しており、42%の組織が評価および計画フェーズにあると回答しています。

サービスメッシュの利用状況調査結果(「CNCF SURVEY 2020」から引用)

 このように注目のサービスメッシュとは何なのでしょうか。

 Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する本連載「Cloud Nativeチートシート」。今回から数回に分けてサービスメッシュの基本的な概念や、サービスメッシュのツールとして人気の高い「Istio」について説明します。

「サービスメッシュ」とは

 サービスメッシュとは一言で表すと、「マイクロサービスアーキテクチャにおけるネットワーク面での課題を解決する機能群」といえます。そのため、サービスメッシュの説明をする前に、あらためて「マイクロサービスアーキテクチャ」とは何か、またどのような課題があるのかを解説します。

マイクロサービスアーキテクチャ

 従来のシステム開発では、アプリケーションに必要な全ての機能を1つのコンポーネント(サーバなど)にまとめて実装する「モノリシックアーキテクチャ」が主流でした。

 近年はコンテナ技術の台頭により、アプリケーションに必要な機能を1つのサービスと見なしてコンポーネント分離し、各サービス間を連携させることでアプリケーション全体を構成するマイクロサービスアーキテクチャが脚光を浴びています。マイクロサービスアーキテクチャを採用することで各サービス間の依存関係を疎結合にしたアーキテクチャを設計しやすくなるので、再利用性の向上や開発単位の最小化によるリリースサイクルの高速化、サービス単位でのスケールイン/スケールアウトのしやすさといったメリットが得られるようになります。

マイクロサービスアーキテクチャの課題

 マイクロサービスアーキテクチャでは、複数のサービスが連携して1つのシステムを構成する特徴からモノリシックアーキテクチャでは考慮する必要のなかった以下のような点が課題となります。

  • サービス間のトラフィック制御
    1. あるサービスから複数バージョンを有するサービスへのルーティングをどのように制御するか(BlueGreen Deployment、Canary Releaseをどのように行うか)
    2. あるサービスが障害によって応答できなくなった場合の影響を局所化するために、障害が発生したサービスをどのように切り離すか
    3. 特定のサービスに向けた想定を上回るリクエストが発生した際、リクエストをどう処理するか
  • サービス間通信のセキュリティ確保
    1. サービス間の通信をどのように保護するか
    2. サービス間の通信可否をどのように制御するか
  • アーキテクチャ全体像やサービス間のつながりの把握
    1. 多数のサービスを連携させることで複雑になったシステム構成や通信の流れをどのように把握するか

あらためてサービスメッシュとは

 サービスメッシュという言葉を直訳すると「サービスの網」、つまりはマイクロサービスのように多数のサービスが複雑に接続された状態を指します。そこから転じて、一般的には上記のようなサービス間のトラフィック制御やセキュリティ、可観測性の確保といったマイクロサービスアーキテクチャを用いる場合に発生する課題を解決するための機能群を提供するプロダクトを指すケースが多いです。

 またマイクロサービスアーキテクチャは上記で述べた通り、多数のサービスを柔軟に起動、管理できる必要があることから、仮想マシンと比べてサービス起動やスケールコストの低いコンテナを用いて構成し、そこにサービスメッシュの機能を持たせることが一般的です。

 そのため、以下ではコンテナ基盤として代表的なKubernetes上でマイクロサービスアーキテクチャおよびサービスメッシュを扱う前提で説明を進めます。

サービスメッシュの基本アーキテクチャ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。