0
会員になると、いいね!でマイページに保存できます。
共有する
近年のIT業界では、マイクロサービスアーキテクチャが主流となりつつある。しかし、その運用管理は従来のモノリシックなアーキテクチャとは異なり、新たな課題が生じている。この課題を解決すべく注目されているのが「サービスメッシュ」だ。本記事では、そんなサービスメッシュの基本的な概念や機能、メリット・デメリット、主要な技術とソリューションなどについてわかりやすく解説する。
執筆:藤森みすず、監修:ビジネス+IT編集部
大手Slerにてシステムエンジニアを経験後、フリーランスのライターに。IT・IoT、FX・保険・不動産・フィンテックなど、多様な記事の執筆を手掛ける。
サービスメッシュとは何か?
サービスメッシュとは、「プロキシを使用することにより
マイクロサービス (後述)間通信を容易にできる専用のインフラストラクチャ層」のことである。
各マイクロサービスに対し、まるでモーターサイクルに付随する「サイドカー」のように、主処理を担うアプリケーションに別のコンポーネントを付属させる「Sidecar」を備える構造にする。これにより、サービス間の全コミュニケーションSidecar経由にさせ、インフラストラクチャ層で制御するのだ。
具体的には、アプリケーションレベルの通信をアプリケーション側が制御させないようにする。開発者はアプリケーションのビジネスロジックに専念し、それらの通信に関連する複雑な問題を解決する責任から解放される。
サービスメッシュ利用の目的は、これらの通信を制御するための専用のインフラストラクチャ層を提供し、アプリケーションのスケーラビリティや安全性、可観測性を大幅に改善することにある。
サービスメッシュの背景にある「マイクロサービス」
サービスメッシュが注目される背景にあるのは、「マイクロサービス」だ。
マイクロサービスとは、クラウド、コンテナ環境のサービスを運用するアーキテクチャの1つだ。大規模なアプリケーションをより管理しやすい小さなサービスに分割して管理することで、スケーラビリティと拡張性を向上させるメリットがある。
しかし、マイクロサービスの導入は新たな課題を引き起こすこともある。その課題とは、「複数のサービス間での通信とデータの一貫性をどのように制御し、管理するか」という点だ。
ここでサービスメッシュの出番となる。サービスメッシュは、マイクロサービス間の通信を効率的に制御し、ネットワークの問題を自動的に検出し、解決する能力を提供。これにより、開発者は各マイクロサービスの開発に集中でき、通信とネットワークの問題について心配する必要がなくなる。
サービスメッシュの特徴と機能
強力な機能と特性により、サービスメッシュはマイクロサービスアーキテクチャの運用と管理を大幅に改善する。主な機能は、以下のとおり。
【トラフィック管理】
サービスメッシュは、マイクロサービス間の通信を制御し、ロードバランシング、ルーティング、失敗のリトライなどの複雑なネットワークタスクを自動的に処理する。トラフィック管理機能により、通信の効率性と信頼性が向上する。
【セキュリティ】
サービスメッシュは、マイクロサービス間の通信を暗号化し、アクセス制御ポリシーを強制することで、アプリケーションのセキュリティを強化する。これにより、悪意のある攻撃やデータ漏えいのリスクが軽減される。
【可観測性】
サービスメッシュは、マイクロサービス間のすべての通信について詳細なメトリクス、ログ、トレースを提供する。これにより、開発者と運用チームはアプリケーションのパフォーマンスと問題をリアルタイムで把握し、迅速に対応できる。
これらの機能は、サービスメッシュが提供する差別化された価値の一部だ。これにより企業は複雑なマイクロサービス環境をより効果的に管理し、高いレベルのパフォーマンスとセキュリティを確保できる。
サービスメッシュのメリット
サービスメッシュは、マイクロサービスアーキテクチャの運用と管理を簡単にするだけでなく、多くのメリットも提供する。
相互運用性の向上
サービスメッシュは、異なるマイクロサービスが互いにシームレスな通信ができるようになる点がメリットだ。機能を追加または変更する際の複雑さが軽減され、全体の開発プロセスがスムーズになる。
マイクロサービス検出の強化
マイクロサービスのディスカバリー(検出)を自動化し、それぞれのサービスが他のサービスを見つけられやすくできる点もメリットだ。これは、新しいサービスの導入や既存のサービスの更新をしやすくするだけでなく、全体のシステムのレジリエンス(耐障害性)を向上させる。
ネットワークアクティビティのリアルタイムでの詳細な監視と分析
サービスメッシュは、マイクロサービス間のすべてのネットワーク通信を監視し、詳細なログとメトリクスを提供できる点もメリットの1つだ。これにより、開発者はシステムのパフォーマンスをリアルタイムで監視し、問題を早期に検出して修正できるようになる。
Web スクリプトおよびモバイル スクリプトの強力な自動化
YAMLファイルや、Jenkinsなどのユーティリティの使用で、サービスメッシュ機能をスクリプト化できる点もメリットだ。これにより、Webおよびモバイルのスクリプトを自動化することもできる。スクリプトの自動化により、開発者は手動でこれらのスクリプトを管理する必要がなくなり、開発の効率と生産性が向上する。
サービスメッシュのデメリット
サービスメッシュの導入は、一部の課題をもたらす可能性もある。代表的なデメリットを見ていこう。
通信のパフォーマンスの低下
サービスメッシュは、マイクロサービス間の通信を中継するため、ネットワーク遅延が生じる可能性がある点がデメリットだ。特に、リアルタイムの応答性が必要なアプリケーションで問題となる可能性も否定できない。
使用リソースの上昇
サービスメッシュは、自身の機能を実現するために追加のリソース(CPU、メモリなど)を必要とするため、特にリソースが限られている環境では運用負荷を増加させる可能性がある。そのため、サービスメッシュの導入を考える際は、メリットとコストを慎重に比較しなければならない。
サービスメッシュの主要な技術とソリューション
サービスメッシュには、いくつかの主要な技術がある。ここでは、その中でも特に注目されているIstio、Envoy、AWS App Meshについて詳しく見ていこう。
・Istio
IstioはGoogle、IBM、Lyftによって共同開発されたオープンソースのサービスメッシュ技術。豊富な機能と拡張性から広く採用されている。Istioはトラフィック管理、セキュリティ、監視などの機能を持つ。また、マルチクラスターとマルチプラットフォームに対応しているため、大規模な分散システムの管理にも適している。
・Envoy
Envoyは、Lyftが開発した高性能なオープンソースのエッジ&サービスプロキシで、マイクロサービスアーキテクチャに対応している。微細なネットワーク制御を可能にする機能も多い。具体的には、動的なサービスディスカバリ、負荷分散、TLS終端、HTTP/2とgRPCプロトコルのサポート、回路ブレーカー、ヘルスチェック、段階的なリリース、リッチメトリクスなどが挙げられる。
・IstioとEnvoyの関係
サービスメッシュ技術の中でも、IstioとEnvoyは密接に関係する。Envoyは、マイクロサービスなシステムを構築する際に必要な機能を提供してくれるサイドカープロキシだ。通信のルーティングやセキュリティ、監視といった機能を担当する。一方Istioは、Kubernetes上でEnvoyを効率よく運用するためのツールだ。
IstioとEnvoyにより、開発者はサービス間の通信に関する細かな設定を気にすることなく、本来のアプリケーション開発に集中できる。また、最近の動向として、2022年9月にIstioが新たな仕組み「Ambient Mesh」を発表した。Ambient Meshは、サイドカーなしでサービスメッシュを実現する仕組みだ。
現在のIstioは、サービスごとにプロキシを配置。サービス間のネットワークをプロキシ経由で構成することでサービスメッシュを構築している。しかし、Ambient MeshではPod群をホストしているノードにプロキシを配置し、このプロキシによってサービスメッシュの機能を実現した。
Ambient Meshより、開発者はデプロイや管理がしやすくなり、コンピュータリソースを効率よく利用できると期待されている。
・AWS App Mesh
AWS App Meshは、Amazonが提供するフルマネージド型のサービスメッシュソリューションだ。AWS上で動作するマイクロサービスの通信を制御・観測するために利用する。App Meshは、EnvoyベースでAWSの各種サービス(ECS、EKS、EC2など)に対応している。
これにより、サービス間の通信を統一的にルーティング、トラフィック管理、セキュリティ、監視などを管理することが可能だ。また、これらの操作はすべてAPI経由で行えるため、自動化しやすいのも大きな特長である
(注1) 。
・サービスメッシュを選ぶ際の考慮点
サービスメッシュを選ぶ際には、いくつかの要素を考慮しなければならない。その1つが、対応するプラットフォームや環境だ。たとえば、Kubernetes上での運用がメインならIstioやLinkerd、AWS環境での利用を考えているならApp Meshなどが適している。
また、サービスメッシュが提供する機能も重要な選択基準の1つだ。トラフィック管理、セキュリティ、可観測性など、要求される機能が具体的に何かを理解することで、適したサービスメッシュを選ぶことが可能となる。
サービスメッシュの導入は、マイクロサービスアーキテクチャの運用を大きく助ける可能性がある。しかし、一方で運用の複雑さやリソース消費といったデメリットも考慮しなければならない。導入を検討する際は、自社のニーズとリソース、サービスメッシュが提供する価値をしっかりと比較検討することが重要だ。
サービスメッシュの特徴を把握して導入の検討を
サービスメッシュは、マイクロサービスの運用をスムーズにし、効率的な通信制御やセキュリティ向上、可観測性の確保などのメリットを提供する。一方で、通信パフォーマンスの低下やリソース使用の増加といったデメリットも無視できない。
サービスメッシュの導入は、これらの特徴を十分に理解した上で、あなたの組織やプロジェクトのニーズに合わせて検討することが重要だ。具体的な技術選択においても、IstioやEnvoy、AWS App Meshなど、各ソリューションの特性を理解し、それぞれの状況に最適な選択をしよう。
サービスメッシュは、ソフトウェア開発とその運用に大きな影響を与える可能性がある。特徴を把握し、ビジネスにどのように活用できるのかを検討してみてはいかがだろうか。
評価する
いいね!でぜひ著者を応援してください
会員になると、いいね!でマイページに保存できます。
関連タグ