※このページはAnnouncing Oracle Cloud Infrastructure Service Mesh general availabilityの翻訳です
マイクロサービスの開発と運用を大幅にシンプルにするために、新たにOracle Cloud Infrastructure Service Meshを発表します。
OCI Service Meshは、アプリケーションに変更を加えることなく、Cloud Nativeアプリケーションにセキュリティ、可観測性、およびネットワーク・トラフィック管理を提供する無料のマネージド・サービスです。 フルマネージド・サービスにより、あらゆるユーザーが規模に関係なくこれらの機能を簡単に実装できます。
Cloud Nativeアプリケーションは一般的に、相互接続された複数のマイクロサービスで構成されており、これらのマイクロサービスが連携してアプリケーションを提供します。したがって、各サービスの信頼性は非常に重要であり、アプリケーション提供側はすべてのマイクロサービスにわたるセキュリティ、可観測性、および接続を管理する必要があります。
OCI Service Meshは、復元力の高い中央管理レイヤーと、マイクロサービスと管理レイヤー間の通信を可能にするプロキシ・コンポーネントを提供します。 そのプロキシは、広く使用されているOSSプロキシ・コンポーネントであるEnvoyをベースとしています。 アプリケーションにメッシュを追加すると、各マイクロサービスの前にプロキシが自動的に挿入され、トラフィックが管理されます。
管理をアプリケーション・コードから切り離すことにより、開発者の生産性と運用上のメリットの両方を、宣言型のセルフサービス方式で実現できます。 開発者とアプリケーションチームは、ネットワーキングチームに依存したりセキュリティや接続ロジックをアプリケーション自体にコーディングしたりすることなく、アジャイルでセルフサービスの方法でサービスのセキュリティを構成できるようになりました。 また、メトリックとログの自動収集のメリットもあります。これにより、本番環境で問題が発生した場合のエンド・ツー・エンドの可視性とトラブルシューティングがシンプルになります。 運用上、エンジニアはマイクロサービスの開発に使用される言語やフレームワークを気にせずに、またはサービスメッシュを維持および更新するためにチームに負担をかけることなく、マイクロサービスがどのように相互作用するかを定義できます。
これらの機能は、Kubernetesやマイクロサービス・ドリブン・アーキテクチャに関連する複雑さを伴わずに、必要な俊敏性とスピードを企業に提供します。
現在、OCI Service Meshは、Oracle Container Engine for Kubernetes(OKE)で実行されているすべてのアプリケーションをサポートしており、次の利点があります:
開発者の生産性の向上 ー サービスメッシュを使用すると、開発者はアプリケーションを変更することなく、メッシュレイヤーで提供されすぐに使用できるアプリケーション・インフラストラクチャ要件により、アプリケーションの機能に集中できます。
運用効率の向上 ー サービスメッシュはセキュリティ、可観測性、ネットワークをアプリケーション・コードから分離する一元管理されたレイヤーを提供します。 これにより、アプリケーションチームがネットワークチームを関与させることなく、マイクロサービスをより迅速かつ簡単に保護できます。 開発と運用の作業においては、自動化・一元化されたメトリックとログ収集の恩恵を受け、本番環境での潜在的な問題に対処するのに役立ちます。
ワークロードを保護する ー 証明書とキー・ローテーションの自動化により、サービスメッシュはサービス間のトラフィックを暗号化し、ゼロトラスト・セキュリティ・アーキテクチャをデフォルトで実現します。 アクセス・ポリシーを使用して、相互に通信できるマイクロサービスを指定できます。
エンド・ツー・エンドの可視性 ー サービスメッシュは、ネットワークおよびサービスのさまざまなメトリックとログを自動的にキャプチャします。 これらのメトリックとログには、エラー、遅延、およびトラフィック量が含まれます。 これらは、アプリケーションの全体的な状態を監視し、問題の分析を支援するためのソースとして機能します。
マイクロサービスを動的に接続する ー サービスメッシュは、マイクロサービス間のすべてのトラフィックをキャプチャし、アプリケーション・トラフィック制御を一元化します。 これによりA / Bテストを実行し、マイクロサービス・インスタンスの特定のサブセットのトラフィックに異なる負荷分散ポリシーを適用し、カナリア・デプロイメントを実行して、マイクロサービスの中断を最小限に抑えてデプロイメントを高速化できます。
アプリケーションでメッシュを有効化する
OCIネイティブのインターフェイス、またはkubectlを使用して、OCI Service Meshを作成および管理できます。 OCI API、CLI、SDK、Terraform、コンソールなどの使い慣れたOCIのインターフェイスを使用できます。 kubectlを使用してKubernetesクラスタを管理し、メッシュ管理に同じツールを使用したい場合は、kubectlを使用してメッシュを作成および管理することもできます。

図1:OCIネイティブのツールを使った場合:OCIコンソールから直接メッシュ・リソースを作成および管理可能

図2:Kubectlを使った場合:メッシュリソースを使用してYAMLを作成し、kubectlからメッシュを直接作成および管理可能
アプリケーションでメッシュを有効にする手順は次のとおり:
- OCI Service Operator for KuberentesをOKEクラスタに追加します。これは、OCIチームが開発したOSSのKubernetesアドオンであり、サービスメッシュをKubernetesオブジェクトとして管理できます。
- メッシュとそれに関連するリソース(virtual serviceやvirtual deploymentなど)をセットアップします。virtual serviceはアプリケーション・サービスのように見え、virtual deploymentはこのサービスのバージョンを表します。
- アクセス・ポリシーを定義して、サービスメッシュがvirtual service間でアプリケーション・トラフィックをルーティングする方法を決定します。
- 最後に、マイクロサービス・バージョンを表すpodをvirtual deploymentに関連付けます。 これにより、OCIはpodを自動的にリサイクルすることでプロキシを挿入できます。 podを再起動すると、アプリケーションでメッシュが有効になります。
図3は、メッシュ対応アプリケーションを示しています。緑のボックスはメッシュの作成時に作成されたメッシュのリソースを示し、青のボックスはKubernetesアプリケーションを示しています。このアプリケーションには、AとBの2つのvirtual serviceと、B1とB2のラベルが付いたサービスBの2つのvirtual deploymentがあります。B1とB2は、サービスBの2つの独立した実装です。たとえば、B1を現在のバージョンにし、B2を中断せずにデプロイする新しいバージョンにすることができます。 OCI Service Meshは、アプリケーションとそのすべてのバージョンを簡単に管理するためのリソースを作成します。 新しいバージョンB2をデプロイするには、B1からB2バージョンへの単純なトラフィック切り替えを使用するか、問題が無いことを確認しつつB2へのトラフィックを徐々に増やします。

図3:Kubernetesとメッシュのリソースが示されたメッシュ対応のアプリケーション
あなたのアプリケーションでメッシュを取り入れる準備はできていますか?
まず、Oracle Cloud Free Tierにサインアップし、新しいService Meshをテストします。 詳細については、ドキュメントを参照してください。“Getting started” とともにリファレンス・アーキテクチャを使用して、OKEアプリケーションにサービスメッシュを簡単に追加できます。
