マイクロサービスの検出を強化することを目的とした Google Cloud Platform のサービス ディレクトリがベータ版になりました。
企業では数千ものサービスが稼働している可能性があり(例えばMonzoなど)、アプリケーションはこれらのサービスのエンドポイントを見つけて呼び出す必要があります。この検出機能は従来、DNSによって行われてきましたが、GoogleはDNSには限界があると考えています。
Google のドキュメントでは、「DNS リゾルバは、TTL とキャッシュの遵守に関して信頼性が低く、大きなレコード サイズを処理できず、ユーザーにメタデータを提供する簡単な方法を提供しない」と説明されている。
サービスディレクトリは、サービス検索用に設計されたカスタムディレクトリです。一見すると、面倒なほど手動で作成する必要がありそうです。サービスを作成するには、名前とエンドポイント(IPアドレスとポート番号)を入力します。各エンドポイントには、任意の名前と値のペアを1つ以上追加することで、メタデータを追加できます。メタデータにはURLを含めることができます。
すべて非常にシンプルで、エンドポイントはGCP上に存在する必要はなく、オンプレミスやインターネット上のどこにでも配置できます。Service Directoryは、名前空間とGCPリージョン別に整理されています。
サービスディレクトリは、サービスエンドポイントを解決するためのDNSの代替手段です。
しかし、重要なのは、このサービスにはRESTベースのAPIが用意されており、権限に応じてサービスレコードの解決、作成、削除、更新を行うことができることです。DNSゾーンを設定してDNS経由のクエリを許可するオプションもありますが、この方法ではメタデータにアクセスできないようです。そのため、サービスがService Directoryにエントリを登録・更新し、クライアントがDNSまたはAPIを使用してエンドポイントを取得することで、すべてが自動化されます。ディレクトリへのすべてのリクエストはログに記録されます。
クライアントがサービスディレクトリをどのように使用するかを示す図
Service Directory は本質的に DNS より優れているわけではないことに注意してください。サービスの健全性をチェックしたり、サービスのエンドポイントがクライアントから実際にアクセス可能かどうかを確認したりすることはありません。
ただし、独自のシステムを構築することも可能です。Googleは、メタデータを使用してサービスの登録や更新を記録し、システムの健全性を確認するためにメタデータを定期的に更新することを推奨しています。例えば、ディレクトリ内のすべてのサービスの健全性をチェックし、それに応じてタグを付けるアプリケーションを作成することもできます。
AWS には Cloud Map と呼ばれる同様のサービスがあります。
GCP サービス ディレクトリはベータ版では無料で、価格はまだ詳細が発表されていません。®