ハイブリッド・クラウド・アーキテクチャー Part 1: コネクティビティー

こんにちは。IBMのデベロッパー・アドボケイト、Sai Vennamです。本日はハイブリッド・クラウド・アーキテクチャー・シリーズのパート1、接続性(コネクティビティ―)についてお話しします。

alt

接続性はハイブリッド・クラウド戦略を開始するうえで、非常に重要な課題です。接続性の説明から始めるのもそのためです。接続性を確立したら、それ以外の要件を検討し、このシリーズの別のパートへと進むことができます。この動画では接続性の3つの主要項目について説明していきます。

まずは非常にシンプルな、プライベート・クラウド環境とパブリック・クラウド環境の接続方法です。次にサービス・メッシュ。これによってアプリケーションとマイクロサービスを1つのメッシュとして相互に連携させることができます。最後に統合ツールです。統合ツールを使用すると、お使いのサービスや、サード・パーティーのサービスなどを簡単に接続できます。

説明をわかりやすくするために、Stock Traderサンプル・アプリケーションを使用しましょう。このアーキテクチャーは後続のトピックでも引き続き使用します。それでは始めましょう。

[Stock Traderサンプル・アプリケーション]

Trader

ここにコンシューマー・アプリケーションがあります。モバイル・アプリ、Webブラウザーなど何でも構いません。ユーザーがStock Traderアプリケーションを利用する場合は、プライベート・クラウドのエンドポイントにアクセスします。この時点でKubernetesクラスターに接続されます。

alt

Kubernetesクラスターには複数のサービスがあります。ユーザーが最初にアクセスするサービスがTraderです。したがってこれがアプリケーションのフロントエンドです。ここからTraderのサービスがクラスターの外部に公開されます。

alt

ポートフォリオ

次に、Traderはポートフォリオを作成します。ユーザーがStock Traderを使用する理由はここにあります。つまりポートフォリオを作成し、投資や取引などを管理するためです。ポートフォリオ・アプリケーションにはTraderが利用できるサービスがいくつかありますこれを使ってパブリック・クラウドからデータを取得します。

alt

Get

まずは株価を取得する必要があります。そのために、パブリック・クラウドには、「Get」というサービスがあり、Investors Exchange (IEX) APIと通信して最新の株価にアクセスします 。

alt

これを利用して、データを返送します。Egressを設定し、外部API要求によって、ポートフォリオ・アプリケーションがパブリック・クラウドのサービスと直接連携できるようにします。

alt

メッセージ・キューイング機能 Stock Traderアプリケーションを支援するもう1つのサービスはMQ、つまりメッセージ・キューイング機能です。これを使用して、ユーザーがポートフォリオを操作する際に、ロイヤルティー・レベルを追跡します。ユーザーが個々の株をポートフォリオに保持している期間に基づいて、各種手数料が変更されます。

alt

ポートフォリオがパブリック・クラウドと連携するのと同様に、MQサービスもパブリック・クラウドにアクセスします。ただしMQサービスは株価の取得に関知しません。その代わりに、ロイヤルティーやポートフォリオに変化があるとユーザーに通知します。

alt

そのためにCloud Functionsのサーバーレス機能を活用し、Slackインテグレーションを使用してユーザーにメッセージを送信します。これでStock Traderアプリケーションの各部品の準備が整いました。

alt

ポートフォリオのデータの保持

もう1つ忘れてはならないのがポートフォリオのデータの保持です。プライベート・クラウドでは専用データベース・サービスがホストされており、ポートフォリオ・アプリケーションがデータをクラスター外で保持するために使用します。これで最初の主要項目である「接続」の説明に入ることができます。

alt

[接続]

VPN

ここにアーキテクチャーを書き出しましたが、これらのアプリケーションがどのようにパブリック・クラウド・サービスと連携するかについてはお話ししていません。一般的にプライベート・クラウドはファイアウォールの内側に配置された制限付きのネットワークです。

VPNトンネル

プライベート・クラウドからパブリック・クラウドに、サービスを公開する非常に簡単な方法があります。それがVPNトンネルです。これは最も着手しやすい方法の1つです。IPSec VPNトンネルは、プライベート・クラウドから、パブリック・クラウドにIPのサブネットを公開し、接続を可能にします。

2つの環境の間にVPNトンネルを作成します。ここで大事な点は、すべてがパブリック・インターネット上で実行されるということです。

alt

VPN注意点

したがって注意点がいくつかあります。VPNトンネルのセットアップは非常に簡単ですが、パブリック・インターネットを使用する場合、プライベート-パブリック・クラウド間での要求の移動時間(ディレイ)にばらつきがあるという問題があります。さらに、VPNではインターネット・フローを経由するため、最良の帯域幅は得られません。

POP

VPNの代わりに直接リンク機能を使用すると、プライベート-パブリック・クラウド間で、完全にプライベートな接続を確立できます。それにはPOP(Point of Presence)を利用します。通常、POPはパブリック・クラウドで提供され、パブリック・クラウドへの完全にプライベートな接続を可能にします。POPは常設されています。

alt

これに既存のアーキテクチャーを適合させるには、ネットワーク・サービス・プロバイダーと連携して、プライベート・クラウドからのすべての接続に使用する直接接続を作成する必要があります。おそらくはWAN、広域ネットワークを使用して、すべての接続がプライベートで行われるようにします。

alt

この方法では接続にインターネットを使用しません。完全にプライベートな接続です。さらに、格段に広い帯域幅が使用できるのも大きなメリットです。

VPNとPOPの組み合わせ

ただし注意すべき点が1つあります。このように直接リンクをセットアップすると、フェイルオーバーの可能性もあります。直接リンクが機能しない場合は、元に戻ってインターネット経由のVPNが使用されます。おそらくこの2つを組み合わせて使用するのが、プライベート-パブリック・クラウド環境間にネットワークを構築する最良の方法でしょう。

[サービス・メッシュ]

Istio

次はサービス・メッシュについてご説明します。サービス・メッシュに利用できる優秀なプロジェクトがあります。皆さんもご存じかもしれません。完全にオープン・ソースのプロジェクトで、Istioと呼ばれています。IstioはGoogle、IBM、Lyftなど多数の業界リーダーによって開始されました。

alt

ご覧のように、プライベート・クラウドではKubernetesを使用しています。ではパブリック・クラウドでもKubernetesを使用することにします。ただし、今のところサービスは1つしかありません。後ほど他のサービスも追加していきましょう。

alt

現在、2つの異なるクラスターが異なる環境に配置されています。これらを簡単な方法で管理して、運用チームが複数の環境や複数のクラスターに配慮しなくてすむようにしたいと思います。複数の環境やクラスターへの対応は負荷の増大や、管理の複雑化を招くおそれがあるからです。

サービス・メッシュとは

サービス・メッシュは基本的に、Istioのコンテキストで言うと、単一のクラスター内で複数のサービスを管理します。ただしIstioの新しい機能を使用すると、複数のクラスターを接続し、複数のサービスを1つのクラスターとして動作させることができます。複数の環境に対してメッシュは1つです。

新しいバージョンのTrader作成

わかりやすくするために、Stock Traderで、新しいバージョンのTraderを作成しましょう。これがV1で、V2を作成しますが、今回はそれをパブリック・クラウドでホストします。なぜなら、このアプリケーションのフロントエンドは、多くのお客様と地理的に近い場所に配置されているからです。

alt

もう1つのTraderアプリケーションを作成し、これをV2とします。

alt

では、すべてのトラフィック、100%のトラフィックがこのアプリケーションに到着するとします。Istioを使用して、ここにゲートウェイを設定します。このゲートウェイにはいくつかのポリシーがあり、ポリシーの有効化や設定はコントロール・プレーンが行います。

alt

ここにIstioコントロール・プレーンを配置します。ここにあるIstioを使って、このIngressゲートウェイのポリシーを作成できます。基本的には着信するすべての要求が対象になります。

alt

それでは、トラフィックの50%をV1に送信し、残りの50%をV2に送信することにします。作業は非常に簡単です。サービス・メッシュを設定しておけば、あとはIstioでポリシーを作成して、ゲートウェイに別のトラフィックを経路指定するよう指示するだけです。

alt

サービス・メッシュを設定しておけば、あとはIstioでポリシーを作成して、ゲートウェイに別のトラフィックを経路指定するよう指示するだけです。ゲートウェイはVPN接続または直接リンク接続を使用して、トラフィックの50%をこちらのバージョンのTraderアプリケーションに送信します。

alt

このようにIstio、既存の接続ポリシー、コントロール・プレーンを使用して実に簡単にポリシーを作成し、トラフィックの一部を新バージョンのアプリケーションに経路指定することができます。これはアプリケーションの新しいバージョンを作成して、ユーザーに提供する場合に非常に便利です。

Istioの機能

Istioについてもう1つ紹介したいのは、アナリティクス、メトリック、トレース、管理など多数の優れた機能です。Istioが提供するすべてのヘルス管理機能は、クラスターだけを対象としているわけではありません。

alt

これらの機能はIstioメッシュに接続されたすべてのサービス間でやり取りされる要求を管理します。したがって運用チームは単一の管理拠点から、複数の環境にまたがるすべてのサービスに対応できます。

[統合]

最後に統合についてご説明します。サービスの中には頻繁に繰り返し利用されるものが多数あります。これはお客様が特定の操作を絶えず実行していることを意味します。そこでIBMは、それらのサービスを簡単に統合できるツール・スイートを開発しました。

alt

コネクター

例えば、あなたが一連のユーザー・データをSalesforceに保存しているとします。これはアカウント・データで、あなたは既にオンプレミスのプライベート・クラウド・アプリケーションでこのデータを利用していますが、パブリック・クラウドでこれらの機能を再利用することにしました。

alt

パブリック・クラウドでは、特定のネットワークや、ネットワークの課題によってデータの実装方法が変わる可能性があります。これらの統合ツールを利用するとSalesforceとパブリック・クラウドのマイクロサービス・アプリケーションの間で、素早くデータを移動することができます。

alt

それを可能にするのがコネクターです。コネクターはSalesforceだけでなく、お客様が頻繁に利用している多数のサービスも接続します。

APIゲートウェイ

もう1つご紹介したい統合ツールは、APIゲートウェイです。ハイブリッド・クラウド・アーキテクチャー全体において、APIゲートウェイが非常に重要であるという認識は高まりつつあります。サード・パーティー・サービスを利用する場合はなおさらです。ここにはSalesforce、Slack、Investors Exchangeなど複数のサード・パーティー・サービスがあります。

alt

エンジニアの一人が実行したコードのバグによって、Investors Exchangeへの偶発的なアクセスが頻発したとしましょう。これで混乱状態に陥り、最後にはシステム全体が停止してしまいます。

このような事態を防止する、つまりサード・パーティー・サービスへのアクセスの安全性を高めるには、パブリック・クラウドと、サード・パーティー・サービスの間にゲートウェイを作成します。ゲートウェイを使用してレート制限の管理や、OAuthなどの認証および、基本鍵の作成などを行い、パブリック・クラウド・サービスだけでなく、ユーザーがサード・パーティー・サービスにアクセスする方法を制限できます。

alt

先に述べたツール・スイートに加えてAPIゲートウェイもクラウド・サービスとサード・パーティー・サービス、さらにはプライベート・クラウド・サービスの接続で、中心的な役割を果たします。ハイブリッド・クラウド・アーキテクチャーの接続性(コネクティビティ―)を理解するには、これら3つの主要項目について考える必要があるでしょう。

alt

最後までご覧いただきありがとうございました。