This is what we do to privatize the output service grid
Introduce
マイクロサービス開発の課題
マイクロサービスアーキテクチャの開発には、主に 4 つの課題があります。
• 多言語対応の問題:Node.js、Java、GoLang など複数のプログラミング言語が存在し、マイクロサービスは各言語ごとにミドルウェア SDK を維持する必要があります
• アップグレード推進の難しさ:SDK のアップグレードには、ビジネスアプリケーションのコード変更とリリースを推進する必要があり、ビジネスへの影響が大きく、ビジネスプレッシャーの下での推進コストが高くなります
• イテレーション速度の低下:複数の言語とバージョンが存在するため、過去のバージョンの維持に多くの工数を費やす必要があり、イテレーション速度とアップグレード速度が低下します(データプレーンの選定においても R&D 効率が考慮されます)
• マルチバージョンの問題:各言語の SDK はバージョンアップに直面しており、多数の異なるバージョンが相互にアクセスしています。互換性とテストの維持コストは膨大です
これらの課題を解決するため、サービスメッシュの Sidecar + アプリケーションモデルは有効なソリューションです
サービスメッシュ
サービスメッシュは、サービス間の通信を扱うインフラストラクチャレイヤーです。クラウドネイティブアプリケーションから成るサービスの複雑なトポロジー下で、信頼性の高いリクエスト伝送を担います。実装上は、アプリケーションサービスと併せてデプロイされる一組の軽量ネットワークエージェントであり、アプリケーションサービスに対して透過的です。サービスメッシュの概念は数年前から提唱されており、Istio、Linkerd、Open Service Mesh などさまざまな実装が存在します。また、eBPF + Envoy、プロキシレスメッシュなどの手法もあります。いずれも、現在の開発と本番運用における課題をいかに解決するかを追求しています。最も馴染み深い Istio のアーキテクチャは以下の通りです。
Sidecar とビジネスアプリケーションの分離を通じて、コントロールプレーンの Istiod がトラフィック全体を制御します。Istio と Envoy の機能により、マイクロサービスの接続、セキュリティ、制御、オブザーバビリティを実現します。サービスメッシュは、マイクロサービスアーキテクチャの下でアプリケーションとデカップリングされたプラットフォームレベルのサービスガバナンス能力を体現しており、マルチプロトコルおよびマルチ言語のマイクロサービスガバナンスを統一推進します。同時に、インフラストラクチャとアプリケーションのデカップリングを維持し、アップグレードと運用保守のコストを削減し、マイクロサービス間の安全で信頼性の高い通信を実現することで、さまざまなタイプのマイクロサービスの通信を可観測化します。
Alibaba Cloud プライベートクラウドサービスメッシュの機能
サービスメッシュの利点は広く認識されており、現在では多くのユーザーが本番環境やビジネスシステムでサービスメッシュを活用しています。しかし、多くの一般ユーザーにとって、このようなシステムの運用と保守はまだ複雑すぎます。通常の運用でグレーリリースを行うにも、さまざまなルール設定が必要で、非常にミスが発生しやすい状況です。VirtualService や DestinationRule などのルールをどう定義するかは、大半のユーザーにとって学習コストが高いものです。利用コストと運用保守の難易度を下げるため、Alibaba Cloud プライベートクラウドサービスメッシュは、サービスメッシュの機能を高度にプロダクト化して提供しています。コンソールで一般的な操作手順に従うだけで、グレーリリース、ラベルルーティング、認証、フルリンクなどの機能を簡単に実現できます。
以下は、Alibaba Cloud プライベートクラウドサービスメッシュの機能全体像です。プロトコル、環境、サービスガバナンス、オブザーバビリティ、安全な本番運用をカバーしています。
次に、プロダクトの機能を紹介していきます。
サービスガバナンス
• トラフィック管理
トラフィック管理には多数の機能があります。負荷分散、サーキットブレーカー、レート制限、タイムアウト、リトライ、トラフィックミラーリング、接続プール管理、フォールトインジェクション、AZ 間ルーティング、サービス Mock などです。
レート制限機能では、サーバー単位のレート制限、ヘッダーベースのレート制限、パスベースのレート制限を提供しています。
フォールトインジェクションでは、オープンソースコミュニティのサービスレベルの障害に加えて、サービスの個別 Pod に対するフォールトインジェクションも提供されており、個別 Pod のテストを実施できます。
サービス Mock 機能では、開発用の Mock インターフェースレスポンスを指定できます。インターフェースがまだ開発されていない場合でも、開発とテストの効率を向上させることができます。サービス Mock の設定では、リクエストパス、ポート番号、メソッド、ステータスコード、ヘッダー、JSON データの戻り値を指定できます。
• ラベルルーティング
ラベルルーティングでは、ベースラインバージョンを選択し、対応するルーティングバージョンを選択して、ウェイトベースやコンテンツベースのルーティングポリシーを設定できます。シンプルな設定操作で、ルーティングルールの設定を簡単に完了できます。
• サービス登録
サービス登録は、その名の通りマイクロサービスをレジストリに登録する機能です。主に Java 以外のサービスが、既存の Java タイプサービスと通信できるようにするために使用されます。たとえば、Spring Cloud サービスが Java 以外のサービスと通信する必要がある場合、コードの記述を容易にするため、Spring Cloud サービスは他の Spring Cloud サービスと同じように Java 以外のサービスを呼び出せる必要があります。そのため、Java 以外のサービスを対応するレジストリに登録する必要があり、ここでは Nacos と Eureka レジストリでの登録をサポートしています。
• 運用モニタリング
サービスの運用モニタリングデータを表示します。処理されたリクエストの平均数やリクエスト成功率などです。
• グレーリリース
バージョンを公開してグレーリリースを実行できます。対応するバージョン番号とイメージを入力し、ウェイトベースやコンテンツベースのルーティングルールを設定し、ロールバックやグレーリリースの成功確認機能を利用できます。
• ゼロトラストセキュリティ
双方向 ID 認証、リクエストの JWT 認証、対応する認可ポリシーを設定できます。
フルリンクルーティング
フルリンクルーティングは、指定されたルールに従って、呼び出しチェーン全体でルーティングを実装できます。たとえば、あるサービスが期待通りに動作するかをテストする際に、そのテストサービスが他のサービスに依存している場合があります。この場合、フルリンク機能を使って開発環境のスイムレーンを作成し、指定タグのトラフィックをテストサービスに送信しつつ、他のリクエストはベースライン環境に維持できます。さらに他のテスト対象サービスがある場合も、このスイムレーンに追加してテストできます。フルリンクルーティングの利点は、サービスチェーンの中間サービスに自由にルーティングできることです。R&D やテスト担当者は、ベースライン環境の外に独立した環境を簡単にデプロイでき、R&D とテストの効率を向上させ、運用保守のコストを削減できます。
• スイムレーンの作成
対応するサービスグリッドに属するスイムレーンを作成します。つまり、異なる環境を作成します(スイムレーン作成前にベースラインバージョンの環境を確定させます)。
• サービスの公開/インポート
スイムレーン作成後、サービスをスイムレーンに公開するか、デプロイ済みのサービスをインポートできます。
入口となるアプリケーションを選択し、ルールを設定します(どのトラフィック特性を持つリクエストがスイムレーンに入るかを指定します)。
ポータルゲートウェイ
サービスグリッドの Istio Ingress Gateway の機能を通じて、サービスグリッド内のサービスを外部に公開できます。プロトコルは HTTP、HTTPS、gRPC をサポートしています。外部公開だけでなく、ルーティングルールの設定もサポートしており、入口サービスのトラフィックを管理できます。
外部サービス
外部サービス管理では、メッシュ外のサービスを管理できます。サービスのプロトコル、アドレス、エンドポイントを設定でき、サービスの異なるエンドポイントのラベルも設定できます。
サービストポロジー
Prometheus と Kiali を組み合わせることで、呼び出しリンク全体のトポロジーを表示できます。呼び出し先のサービスとバージョンを含みます。
メッシュ管理
• クラスター管理
既存の K8s クラスターは、シンプルなクラスター追加操作で追加できます。追加後、メッシュ管理のメッシュ作成機能を通じて、対応するクラスターにサービスメッシュをデプロイできます。メッシュ作成時には、ゲートウェイの高可用性、コントロールプレーン Istiod の高可用性、クラスター内のサービスの Sidecar リソース(個別設定も可)、AccessLog ログの有効化を設定できます。
• メッシュ設定管理
サービスメッシュの作成後、メッシュの管理と設定が必要です。詳細オプションには、ゲートウェイの高可用性、コントロールプレーンの高可用性、ゲートウェイリソース、コントロールプレーンリソース、サービスアクセス制限、オブザーバビリティなどの一般的な設定があります。
これらに加えて、サービスメッシュをレジストリに接続する機能も提供しています。ここでは、Nacos、Eureka、ZooKeeper、Consul の一般的なレジストリをサービスメッシュに接続できます。
• マルチクラスター管理
シングルクラスターは大半のユーザーの要件を満たせますが、ディザスタリカバリのためにはマルチクラスターの管理と相互接続も非常に重要です。サービスメッシュのマルチクラスター機能はコミュニティバージョンでもサポートされていますが、設定が複雑です。製品では、ワンクリックでのマルチクラスター管理機能を提供しています。マルチクラスター設定とクラスター管理機能を通じて、複数クラスター間のアプリケーションの相互接続とガバナンスを簡単に実現できます。
デプロイと出力
Alibaba Cloud Hybrid Cloud Enterprise Edition と CNStack の出力に対応しています。同時に、独立デプロイの出力もサポートしています。K8s クラスター一つあれば、プライベートクラウドサービスメッシュの機能を素早く簡単に立ち上げ、プロダクト化されたサービスメッシュを体験できます。
マイクロサービス開発の課題
マイクロサービスアーキテクチャの開発には、主に 4 つの課題があります。
• 多言語対応の問題:Node.js、Java、GoLang など複数のプログラミング言語が存在し、マイクロサービスは各言語ごとにミドルウェア SDK を維持する必要があります
• アップグレード推進の難しさ:SDK のアップグレードには、ビジネスアプリケーションのコード変更とリリースを推進する必要があり、ビジネスへの影響が大きく、ビジネスプレッシャーの下での推進コストが高くなります
• イテレーション速度の低下:複数の言語とバージョンが存在するため、過去のバージョンの維持に多くの工数を費やす必要があり、イテレーション速度とアップグレード速度が低下します(データプレーンの選定においても R&D 効率が考慮されます)
• マルチバージョンの問題:各言語の SDK はバージョンアップに直面しており、多数の異なるバージョンが相互にアクセスしています。互換性とテストの維持コストは膨大です
これらの課題を解決するため、サービスメッシュの Sidecar + アプリケーションモデルは有効なソリューションです
サービスメッシュ
サービスメッシュは、サービス間の通信を扱うインフラストラクチャレイヤーです。クラウドネイティブアプリケーションから成るサービスの複雑なトポロジー下で、信頼性の高いリクエスト伝送を担います。実装上は、アプリケーションサービスと併せてデプロイされる一組の軽量ネットワークエージェントであり、アプリケーションサービスに対して透過的です。サービスメッシュの概念は数年前から提唱されており、Istio、Linkerd、Open Service Mesh などさまざまな実装が存在します。また、eBPF + Envoy、プロキシレスメッシュなどの手法もあります。いずれも、現在の開発と本番運用における課題をいかに解決するかを追求しています。最も馴染み深い Istio のアーキテクチャは以下の通りです。
Sidecar とビジネスアプリケーションの分離を通じて、コントロールプレーンの Istiod がトラフィック全体を制御します。Istio と Envoy の機能により、マイクロサービスの接続、セキュリティ、制御、オブザーバビリティを実現します。サービスメッシュは、マイクロサービスアーキテクチャの下でアプリケーションとデカップリングされたプラットフォームレベルのサービスガバナンス能力を体現しており、マルチプロトコルおよびマルチ言語のマイクロサービスガバナンスを統一推進します。同時に、インフラストラクチャとアプリケーションのデカップリングを維持し、アップグレードと運用保守のコストを削減し、マイクロサービス間の安全で信頼性の高い通信を実現することで、さまざまなタイプのマイクロサービスの通信を可観測化します。
Alibaba Cloud プライベートクラウドサービスメッシュの機能
サービスメッシュの利点は広く認識されており、現在では多くのユーザーが本番環境やビジネスシステムでサービスメッシュを活用しています。しかし、多くの一般ユーザーにとって、このようなシステムの運用と保守はまだ複雑すぎます。通常の運用でグレーリリースを行うにも、さまざまなルール設定が必要で、非常にミスが発生しやすい状況です。VirtualService や DestinationRule などのルールをどう定義するかは、大半のユーザーにとって学習コストが高いものです。利用コストと運用保守の難易度を下げるため、Alibaba Cloud プライベートクラウドサービスメッシュは、サービスメッシュの機能を高度にプロダクト化して提供しています。コンソールで一般的な操作手順に従うだけで、グレーリリース、ラベルルーティング、認証、フルリンクなどの機能を簡単に実現できます。
以下は、Alibaba Cloud プライベートクラウドサービスメッシュの機能全体像です。プロトコル、環境、サービスガバナンス、オブザーバビリティ、安全な本番運用をカバーしています。
次に、プロダクトの機能を紹介していきます。
サービスガバナンス
• トラフィック管理
トラフィック管理には多数の機能があります。負荷分散、サーキットブレーカー、レート制限、タイムアウト、リトライ、トラフィックミラーリング、接続プール管理、フォールトインジェクション、AZ 間ルーティング、サービス Mock などです。
レート制限機能では、サーバー単位のレート制限、ヘッダーベースのレート制限、パスベースのレート制限を提供しています。
フォールトインジェクションでは、オープンソースコミュニティのサービスレベルの障害に加えて、サービスの個別 Pod に対するフォールトインジェクションも提供されており、個別 Pod のテストを実施できます。
サービス Mock 機能では、開発用の Mock インターフェースレスポンスを指定できます。インターフェースがまだ開発されていない場合でも、開発とテストの効率を向上させることができます。サービス Mock の設定では、リクエストパス、ポート番号、メソッド、ステータスコード、ヘッダー、JSON データの戻り値を指定できます。
• ラベルルーティング
ラベルルーティングでは、ベースラインバージョンを選択し、対応するルーティングバージョンを選択して、ウェイトベースやコンテンツベースのルーティングポリシーを設定できます。シンプルな設定操作で、ルーティングルールの設定を簡単に完了できます。
• サービス登録
サービス登録は、その名の通りマイクロサービスをレジストリに登録する機能です。主に Java 以外のサービスが、既存の Java タイプサービスと通信できるようにするために使用されます。たとえば、Spring Cloud サービスが Java 以外のサービスと通信する必要がある場合、コードの記述を容易にするため、Spring Cloud サービスは他の Spring Cloud サービスと同じように Java 以外のサービスを呼び出せる必要があります。そのため、Java 以外のサービスを対応するレジストリに登録する必要があり、ここでは Nacos と Eureka レジストリでの登録をサポートしています。
• 運用モニタリング
サービスの運用モニタリングデータを表示します。処理されたリクエストの平均数やリクエスト成功率などです。
• グレーリリース
バージョンを公開してグレーリリースを実行できます。対応するバージョン番号とイメージを入力し、ウェイトベースやコンテンツベースのルーティングルールを設定し、ロールバックやグレーリリースの成功確認機能を利用できます。
• ゼロトラストセキュリティ
双方向 ID 認証、リクエストの JWT 認証、対応する認可ポリシーを設定できます。
フルリンクルーティング
フルリンクルーティングは、指定されたルールに従って、呼び出しチェーン全体でルーティングを実装できます。たとえば、あるサービスが期待通りに動作するかをテストする際に、そのテストサービスが他のサービスに依存している場合があります。この場合、フルリンク機能を使って開発環境のスイムレーンを作成し、指定タグのトラフィックをテストサービスに送信しつつ、他のリクエストはベースライン環境に維持できます。さらに他のテスト対象サービスがある場合も、このスイムレーンに追加してテストできます。フルリンクルーティングの利点は、サービスチェーンの中間サービスに自由にルーティングできることです。R&D やテスト担当者は、ベースライン環境の外に独立した環境を簡単にデプロイでき、R&D とテストの効率を向上させ、運用保守のコストを削減できます。
• スイムレーンの作成
対応するサービスグリッドに属するスイムレーンを作成します。つまり、異なる環境を作成します(スイムレーン作成前にベースラインバージョンの環境を確定させます)。
• サービスの公開/インポート
スイムレーン作成後、サービスをスイムレーンに公開するか、デプロイ済みのサービスをインポートできます。
入口となるアプリケーションを選択し、ルールを設定します(どのトラフィック特性を持つリクエストがスイムレーンに入るかを指定します)。
ポータルゲートウェイ
サービスグリッドの Istio Ingress Gateway の機能を通じて、サービスグリッド内のサービスを外部に公開できます。プロトコルは HTTP、HTTPS、gRPC をサポートしています。外部公開だけでなく、ルーティングルールの設定もサポートしており、入口サービスのトラフィックを管理できます。
外部サービス
外部サービス管理では、メッシュ外のサービスを管理できます。サービスのプロトコル、アドレス、エンドポイントを設定でき、サービスの異なるエンドポイントのラベルも設定できます。
サービストポロジー
Prometheus と Kiali を組み合わせることで、呼び出しリンク全体のトポロジーを表示できます。呼び出し先のサービスとバージョンを含みます。
メッシュ管理
• クラスター管理
既存の K8s クラスターは、シンプルなクラスター追加操作で追加できます。追加後、メッシュ管理のメッシュ作成機能を通じて、対応するクラスターにサービスメッシュをデプロイできます。メッシュ作成時には、ゲートウェイの高可用性、コントロールプレーン Istiod の高可用性、クラスター内のサービスの Sidecar リソース(個別設定も可)、AccessLog ログの有効化を設定できます。
• メッシュ設定管理
サービスメッシュの作成後、メッシュの管理と設定が必要です。詳細オプションには、ゲートウェイの高可用性、コントロールプレーンの高可用性、ゲートウェイリソース、コントロールプレーンリソース、サービスアクセス制限、オブザーバビリティなどの一般的な設定があります。
これらに加えて、サービスメッシュをレジストリに接続する機能も提供しています。ここでは、Nacos、Eureka、ZooKeeper、Consul の一般的なレジストリをサービスメッシュに接続できます。
• マルチクラスター管理
シングルクラスターは大半のユーザーの要件を満たせますが、ディザスタリカバリのためにはマルチクラスターの管理と相互接続も非常に重要です。サービスメッシュのマルチクラスター機能はコミュニティバージョンでもサポートされていますが、設定が複雑です。製品では、ワンクリックでのマルチクラスター管理機能を提供しています。マルチクラスター設定とクラスター管理機能を通じて、複数クラスター間のアプリケーションの相互接続とガバナンスを簡単に実現できます。
デプロイと出力
Alibaba Cloud Hybrid Cloud Enterprise Edition と CNStack の出力に対応しています。同時に、独立デプロイの出力もサポートしています。K8s クラスター一つあれば、プライベートクラウドサービスメッシュの機能を素早く簡単に立ち上げ、プロダクト化されたサービスメッシュを体験できます。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
