コンテナ技術は、デファクトスタンダードだったDockerとKubernetesに決め、オンプレでの学習、構築、運用コストを低減する目的で、クラウドのマネージドサービスを採用することを決めた。マネージドサービスは、2018年1月時点で、日本で唯一正式リリース(GA)されていたものとして、GCP(Google Cloud Platform)のGKE(Google Kubernetes Engine)を採用した。
「GKEは3年以上マネージドサービスとしての安定動作運用を行っていたという実績もあり、信頼性が高いと判断しました」(渕田氏)
渕田氏はマイクロサービス化およびクラウド移行の効果として、レガシーシステムで課題になっていた「スケーラビリティの確保」「保守、運用コストの改善」「機能改善スピードの向上」という3つについて、それぞれ効果があったと説明した。
スケーラビリティについては、システム単位を小さくすることで、負荷の高い機能を分離しやすい構造になった。注文受注量が瞬間的、恒常的に数倍に増加しても処理速度の劣化はなく、多国展開など横展開しやすい構造になった。
保守、運用コストについては、モノリシックな構造が改善され、影響範囲が小さくなったことで、保守コストは大きく削減された。例えば、機能搭載費用は約2分の1になった。また、サーバリソースを有効活用することでランニングコストは約5分の3にまで削減できた。
「負荷増大時にもピンポイントなスケールで不必要なサーバ構築を行わずに済む構造になり、ログ調査やアラート連携も改善されました。これにより分析基盤としての役割を果たせるようになりました。導入から12カ月でサービスダウンタイムもなく、安定して稼働しています」(渕田氏)
機能改善スピードについても、影響範囲が見極めやすくなり、対応速度が約2倍に向上、イベント開催にも柔軟に対応可能な構造になった。
もっとも、新たな課題も出てきていたという。ムサヴィ氏によると、それは「セキュリティの確保」「可観測性の改善」「管理性の向上」だ。
「1つの大きなアプリケーションを小さなサービスに分割したわけですが、やってみると、どんどん小さなサービスが増えることで複雑化していきました。例えば、セキュリティの面では、一つ一つのサービスについてセキュリティを保証しなければならず、サービス同士のコミュニテケーションについてもセキュリティを保証しなければなりません。同じようにサービスのレスポンスタイムが遅いときなどに問題を発見するためには可観測性を高めなければならず、サービスごとの管理も必要になってきました」(ムサヴィ氏)
現在は3つの課題についてそれぞれ対策を検討しているところだ。
セキュリティについては、通信(User-to-Service、Service-to-Service、鍵管理)、サービス(API、認証/認可/監査、ID管理)、プラットフォーム(クラスタ、名前空間、サービス、Podレベル)、データ(暗号化)のレイヤーごとに対策を検討。目指す姿としては、アプリやインフラでのコード変更が不要な「Security of Default」、複数レイヤーで防御する「Defense in Depth」、信頼できないネットワークでの構築を前提にする「Zero-Trust Network」だ。
可観測性の改善に向けては、可視化のためのモニタリングやログ、メトリクスの収集機能を開発するとともに、サービス間関係やデータフロー、パフォーマンスなどをトレーシングする仕組みを導入しようとしている。
「分散アプリでは不具合分析や性能ボトルネックの追跡(分散トレース)が難しい。各サービスの観測は独立で行えますが、サービス間の関係性も含めたシステム全体の観測は非常に困難です」(ムサヴィ氏)
管理性については、サービス間ルーティングやポリシー制御などの「トラフィック制御」、リトライやサーキットブレイカーなどを使った「回復性の確保」、マルチクラスタやマルチリージョン、マルチクラウドでのサービス分割といった「マルチテナント管理」が課題になってきているとした。
そのような中、同社が取り組んでいるのがサービスメッシュだ。
「Kubernetesは、『Infrastructure as Configuration』というコンフィグベースのインフラ管理であり、コンフィグを定義して実装をKubernetesに任せることができます。コンピューティングやストレージは管理できるのですが、ネットワーク管理の仕組みは不足しています。サービスメッシュは、サービス間通信を管理することで、マイクロサービスによって生まれる複雑性を解消できると思っています」(ムサヴィ氏)
具体的には、サービスメッシュ機能をSidecar Proxy(Envoy)で実現するフレームワークである「Istio」を用いて、対応しようとしている。
「IstioをKubernetesにインストールすると、Kubernetesでは不足しているネットワーク管理の機能を拡張できます。具体的には、Gateway、VirtualService、DestinationRule、ServiceRole、Policy、Instance、Ruleなどのネットワーク機能を管理できるようになります」(ムサヴィ氏)
最後にムサヴィ氏は、これまでのプロジェクトを整理しながら、マイクロサービスの難しさを解消するには、3つの技術スタックがあると説明。「モジュラー化とコスト削減のためのコンテナ技術(Docker)、ポータビリティ性やスケーリング、自己回復のためのコンテナオーケストレーション(Kubernetes)、セキュリティや可観測性、管理性を確保するためのサービスメッシュ(Istio)を踏まえて取り組みを進めることがポイントです」と話した。
時は令和。クラウド移行は企業の“花”。雲の上で咲き乱れる花は何色か?どんな実を結ぶのか? 徒花としないためにすべきことは? 多数の事例取材から企業ごとの移行プロジェクトの特色、移行の普遍的なポイントを抽出します。
Copyright © ITmedia, Inc. All Rights Reserved.