web-dev-qa-db-ja.com

疎結合のマイクロサービスアーキテクチャでは、依存関係をどのように追跡しますか?

最新のプログラムで人気のある高レベルのアーキテクチャの選択肢は、RESTベースのマイクロサービスシステムです。これには、疎結合、容易な再利用、使用可能なテクノロジーの制限の制限、高いスケーラビリティなどのいくつかの利点があります。

しかし、そのようなアーキテクチャーで私が予測する問題の1つは、アプリケーションの依存関係が何であるかについての可視性が低いことです。たとえば、1組のREST呼び出しを毎日使用するアプリケーションがあるとします。このアプリケーションは、2番目のREST呼び出しのセットも使用します。ただし、四半期に1回のみです。過去1週間のログをスキャンすると、すべての日次の統計は表示されますが、四半期ごとの呼び出しは表示されない可能性があります。リファクタリングの時期になると、四半期ごとの呼び出しは高リスク速報。

このリスクを軽減し、疎結合アーキテクチャの依存関係をより詳細に可視化するために使用できるパターンまたはツールは何ですか?

このリスクを軽減するために使用できるパターンまたはツール

APIとビジネス機能の下位互換性を維持します。

疎結合アーキテクチャーの依存関係についての可視性を向上させます

ヘルスチェック。

私のサービスは、毎月のAPI機能のクライアントです。しかし、私のサービスが実行されているときはいつでも、私のサービスはあなたのAPIのクライアントです。したがって、サービスは10分ごとに起動するか、毎月のAPIに接続してプロトコルを実行し、サービスに必要な機能が引き続き利用可能であることを確認します。

したがって、ログには、提供する特定の各サービスが実際に使用される頻度が示されているのと同じように、提供する各特定のサービスがまだ利用可能であることを確認するために他のサービスがチェックする頻度が示されます。

4
VoiceOfUnreason

依存関係を見つけることができる場所が少なくとも2つあります。

  • Configuration。外部APIにアクセスするには、それらの各APIに関する一連の情報を知る必要があります。アクセスID、秘密鍵、エンドポイント。このような情報は変更されるため変更されることはできません。例として、最近、すべてのマイクロサービスをSSLに移行し始めました。つまり、移行されるサービスに依存するすべてのサービスは、https://ではなくhttp://バージョンを指すように再構成する必要があります。エンドポイントがハードコーディングされているのではなく、構成内にあったことをうれしく思います。

  • Interfaces。 APIバージョンが変更されるため、コードから直接サービスにアクセスすることはできません。別のAPIに切り替えることもできます。代わりに、抽象化レイヤーを作成し、インターフェイスを通じて依存関係を使用します。これらのインターフェースを作成するときに共通のロジックに従うことで、後で依存関係を検索するときに作業が楽になります。

リファクタリングの時期になると、四半期ごとの呼び出しが中断するリスクが高くなります。

これが回帰テストの目的です。

コードを見て、変更して、何も壊れていないことを信じることはできません。これはマイクロサービスアーキテクチャでは機能しません。これはモノリシックアプリケーションでも機能しません。コンパイラは、コードを変更するときに発生するエラーの一部をキャッチできます。 Haskellなどの一部の言語では、コンパイラーは非常に能力があり、ほとんどのエラーをキャッチできます。ただし、主流の言語用のコンパイラーは、あまり役に立ちません。あなたがテストを持っていない場合、あなたは台無しにされています。マイクロサービスの存在は無関係です。

1