検索検索
English

DX推進の鍵になる気鋭のサービスメッシュKumaをいち早くレビュー

2020年9月8日、オンライン開催されたCloudNative Days Tokyo 2020でサイオステクノロジー シニアアーキテクトの槌野雅敏が登壇。オープンソースのKumaに焦点を当て、モダナイズやDXの文脈で注目されるサービスメッシュの可能性を探りました。

テクノロジー2020年9月28日

複雑化・多階層化するシステム管理の悩みを解決するには

「くま(Kuma)でメッシュなマイクロサービス - Kuma最速レビューしてみました -」と題して発表をおこなったサイオステクノロジーのシニアアーキテクト槌野は現在、社内でAPI*1マネジメント、マイクロサービス*2、サービスメッシュ*3などに関する技術コンサル・アドバイザリーなどを中心に活動している。顧客と接する中で得た知見をプロダクト開発にも生かしており、現在は、さまざまな事業者のサブスクリプションビジネスを支援するプラットフォームサービス「SIOS bilink(サイオスビリンク)」の開発に携わる。

「SIOS bilinkにより、自社のソフトウェアサービスなどをサブスクリプション化して提供したい事業者は複雑な課金の仕組みもコストを抑えて円滑に導入することが可能です。クラウドネイティブを意識したアーキテクチャーであり、操作はすべてAPI経由でおこなうことができます。今後、高レベルのAPIの実装といった機能強化、お客様ごとに異なる請求管理の仕組みの差異を吸収するネットワーク機能を拡充するうえで、サービスメッシュに注目しています」(槌野)

マイクロサービスは一般に、ひとまとまりのサービス単位ごとにそれを動かすマシンとしてVM(バーチャルマシン)やコンテナ*4を用意する。併せてサービス間通信をおこなうためにネットワーク層のコンテナ(サイドカー型プロキシーやデータプレーンと呼ばれるコンポーネント)を必要とする。マシンの自動構成や自己修復は主にコンテナオーケストレーションフレームワークであるKubernetes(クーバネティス)*5が、ネットワーク側の管理や制御はサービスメッシュおよびコントロールプレーンが担うイメージだ。外部サービスの発見(サービスディスカバリー)にも欠かせない。またアプリケーションの開発者はネットワークを管理するコードを開発する負担を減らして本来の業務に専念できる。

このサービスメッシュは、DXを迫られるエンタープライズ領域でも注目されている。

「日本のエンタープライズにおけるモダナイズのアプローチは、いわゆるレガシーシステムと言われる既存オンプレミスの仕組みをクラウドサービス上に段階的に移行するLift&Shiftが一般的です。たとえば、J2EE(Java 2 Platform, Enterprise Edition)サーバーで稼働する『会員管理機能』や『認証機能』といった機能群をコンテナ化し、VPNなどのネットワークを介してオンプレミス環境と並行運用するなど、さまざまなアーキテクチャーのサブシステムが混在します。そのため、セキュリティ、拡張性、可用性、可観測性などにおける統一的な手段・プロセスがないというが実情です。それを解決するうえでサービスメッシュの可能性に注目しています」(槌野)

CND-槌野さん.pngのサムネイル画像
CloudNative Days Tokyo 2020 で講演をおこなう槌野雅敏

サービスメッシュKumaの特徴と強み

サービスメッシュとして日本国内では先行するIstio、Linkrd、HashiCorp Consulなどが知られるが、槌野が注目するのがKuma(くま)だ。

槌野はKumaに注目する理由として特に次の2つを指摘する。Kumaがオープンソース技術を推進するCNCF(Cloud Native Computing Foundation)に寄贈され、オープンソース・コミュニティの中でさらに進化の加速が期待されていること。とりわけ、配車サービスで知られるLyftが同じくCNCFに寄贈したサービスメッシュ(データプレーン)であるenvoyを制御するコントロールプレーンとして組み合わせることで相乗効果が得られる。もう1つは、Kuma Mesh1.0では開発元であるKong社のオフィシャルな有償サポートが受けられることだ。

「Kumaは荒削りな部分がありますが、上記の理由から今後伸びていく可能性が高いと見ています。特に2点目は商用OSSを望むエンタープライズのニーズに応えるでしょう」(槌野)

Kumaの語源は日本語の「熊」だ。日本人にとってはより親しみの持てる製品名だろう。また、開発元はオープンソースのAPIゲートウェイKongを開発するKong社である。

WAN/LAN環境を制御するAPIゲートウェイであるKongが「縦」の接続を管理すると考えると、LAN環境内のマイクロサービス間の通信、いわば「横」の管理をKumaが担う相補的関係になる。

デモ環境でKumaによるマイクロサービスの可観測性を検証

槌野は事前にサイオステクノロジーでおこなったKumaのデモ環境での検証結果をスライドで紹介した。

「デモ環境ではKubernetes上に、マイクロサービスおよびサービスメッシュを構築し、性能監視に必要な、CPUやメモリの使用率といったメトリクス、挙動を調べるトレーシング、ロギング(各種ログ収集管理)を一元化し、可視化しました。ログデータにトレースIDを付与してトレースデータとリンクしています。異常をログ検知した際に、どのマイクロサービスで問題が起きたかを追跡することが非常に容易になり、運用の効率化につながるのではないかと考えています」(槌野)

Kumaによりネットワークの構成情報などはコードで明示的に記述する設定が可能だ。これはKubernetesなどと同様だ。

「宣言ひとつでサイドカーをマイクロサービスに挿入できるなど、宣言的命令に慣れていれば使いやすいでしょう。コードで記述することからシステムのブラックボックス化を避け、セキュリティレベルを高めることにもつながります。一方、ドキュメント類がまだ少ないので今後の拡充に期待しつつ、コミュニティの活性化に私たちも貢献したいと思います」と槌野は意気込みを述べた。

今回のデモ環境の構築手順やスクリプトはGithubや「SIOS Tech. Lab(エンジニア技術ブログ)」にも公開する予定。ぜひご注目ください。

*1 API(Application Programming Interface):アプリケーションやソフトウェアとプログラムをつなぐ機能。
*2 マイクロサービス:1つのアプリケーションを、ビジネス機能に沿った複数の小さいサービスの集合体として構成するサービス指向アーキテクチャーの1種。
*3 サービスメッシュ:APIを使用してマイクロサービス間のサービス間通信を容易にするための専用インフラストラクチャレイヤー。
*4 コンテナ:ホストOSのリソースを論理的に分離し、アプリケーションを動作させるのに必要なライブラリやアプリケーションなどをひとつにまとめ、個別サーバーのように使用できるようにしたもの。
*5 Kubernetes:Linux コンテナの操作を自動化するオープンソース・プラットフォームのこと。

記事の関連情報