コンテンツに移動
デベロッパー

Service Directory クイック リファレンス

2021年11月17日
https://storage.googleapis.com/gweb-cloudblog-publish/images/sd_header.max-2600x2600.png
Google Cloud Japan Team

※この投稿は米国時間 2021 年 11 月 3 日に、Google Cloud blog に投稿されたものの抄訳です。

多くの企業は、さまざまなクラウドやオンプレミス環境にデプロイされた多種多様なサービスを抱えています。こうしたサービスを検索、公開、接続するのは複雑ですが、デプロイのベロシティ、セキュリティ、スケーラビリティのためには不可欠といえます。そこで、Service Directory の出番です。

Service Directory は、環境に関係なく、サービスを検出、公開、接続できるフルマネージドのプラットフォームです。すべてのサービスに関するリアルタイム情報を 1 か所にまとめ、サービス エンドポイントが少数であっても数千であっても、サービスのインベントリ管理を大規模に実施できます。

Service Directory を使う理由

シンプルな API を構築していて、そのコードがほかのアプリケーションを呼び出す必要があるとします。エンドポイントの情報が固定されていれば、これらの場所をコードにハードコードしたり、小さな構成ファイルに保存したりしても問題はありません。しかし、マイクロサービスやマルチクラウドでは、インスタンス、サービス、環境がすべて変わる可能性があるため、こういった問題を処理するのは非常に困難です。

Service Directory はこの問題を解決します。各サービス インスタンスは Service Directory に登録されると DNS(ドメイン ネーム システム)に即座に反映され、実装や環境にかかわらず、HTTP / gRPC を使ってクエリできます。各環境をまたいで機能するユニバーサル サービス名の作成、DNS によるサービスの提供、サービス アカウントのネットワーク、プロジェクト、および IAM ロールに基づくサービスへのアクセス制御の適用などができます。

Service Directory を使うと、以下のような問題を解決できます。

  • 相互運用性: Service Directory は、Google Cloud、マルチクラウド、オンプレミスで動作するユニバーサルなネーミング サービスです。サービスの登録とエンドポイントの解決に使用するサービス名を維持しつつ、これらの環境間でサービスを移行することができます。

  • サービス管理: Service Directory はマネージド サービスです。高可用性、冗長性、スケーリング、および独自のサービス レジストリのメンテナンスの心配をする必要はありません。

  • アクセス制御: Service Directory では、IAM を使って、誰がサービスを登録でき、名前解決できるかを制御できます。また、Service Directory のロールをチーム、サービス アカウント、組織に割り当てることができます。

  • 純粋な DNS の限界: DNS リゾルバは、TTL やキャッシュの観点から信頼性が低く、大きなレコードサイズに対応できず、ユーザーにメタデータを提供する簡単な方法も提供しません。Service Directory は DNS サポートに加え、サービスをクエリし解決するための API を HTTP と gRPC で提供しています。

ロードバランサと Service Directory の連携

Service Directory とロードバランサの連携は、以下のようにして行われます。

  • Service Directory において、ロードバランサが各サービスのプロバイダとして登録されます

  • クライアントが Service Directory を介してサービス ルックアップを行います

  • Service Directory がロードバランサのアドレスを返します

  • クライアントがロードバランサを介してサービスの呼び出しを実行します

Service Directory での Cloud DNS の使用

Cloud DNS は、Google のインフラストラクチャ上で動作する、高速でスケーラブルかつ信頼性の高い DNS サービスです。一般公開 DNS ゾーンに加え、Cloud DNS は Google Cloud 上のプライベート ネットワークのためのマネージドな内部 DNS ソリューションも提供しています。限定公開 DNS ゾーンは、仮想マシン(VM)インスタンス、ロードバランサ、その他のリソースに内部で名前を付けることができます。この限定公開 DNS ゾーンに対する DNS クエリは、プライベート ネットワークからのみ行えます。Service Directory のゾーンを使用して DNS ルックアップでサービス名を得られるようにする方法は、次のとおりです。

  • エンドポイントは、Service Directory API を使用して、Service Directory に直接登録されます。これは、Google Cloud と Google Cloud 以外のサービスの両方に対して行えます。

  • 外部、内部どちらのクライアントでも、https://servicedirectory.googleapis.com でサービスを検索できます。

  • DNS リクエストを有効にするには、Service Directory 名前空間に関連付けられた Service Directory ゾーンを Cloud DNS に作成します。

  • 内部のクライアントが DNS、HTTP、または gRPC を介してサービスを解決できるようになります。外部の(プライベート ネットワーク上にない)クライアントは HTTP か gRPC を使ってサービス名を解決する必要があります。

Service Directory についてさらに詳しくは、このドキュメントをご覧ください。  

#GCPSketchnote をさらにご覧になるには、GitHub リポジトリをフォローしてください。同様のクラウド コンテンツについては、Twitter で @pvergadia をフォローしてください。thecloudgirl.dev もぜひご覧ください。

- Google デベロッパー アドボケイトPriyanka Vergadia

投稿先