マイクロサービスのクラスターをテストする方法は?


7

Server Specを調べたところ、次のようにはっきりとわかりました。

備考:serverspecテストスイートは、単一のマシン(またはDockerコンテナー)に対して実行するためのものです。言い換えると、複数のマシンまたはコンテナに対してテストをハーベストして実行する単一のrspecコマンドを発行しないでください。それらのそれぞれに対して1つのrspecコマンドを発行する必要があります。

したがって、サーバーごとにテストを行うことができます。しかし、問題は次のとおりです。私のマイクロサービスアーキテクチャには自動検出サービスがあるため、クエリを実行すると一部のサービスが認識されます。これを表現するプロジェクトはありますか?ruby(またはtestinfraなどを選択した場合はpython)でツールを使用できることを知っています

Consulとserverspecまたは類似のものと統合する何かが素晴らしいでしょう、2014年に人々はこれを探していましたが、誰かがこの問題に取り組んだプロジェクトを知っていますか?


1
同じ実行内で複数のインスタンスをテストすることで、単一のインスタンスでの実行(外部のニーズが何であれ)を誤解していると思います。
Tensibai 2017年

2
マイクロサービスはどのようにホストされていますか?Dockerコンテナ?
Richard Slater

私のマイクロサービスはVMで実行され、一部は物理マシンで実行されています(遺伝学を使用しているため、シーケンサーの隣にオンプレミスのクラスターがいくつかあります)
nicocesar 2017年

誰かがそれを利用する時間があれば、この記事は役に立ちました。 toptal.com/nodejs/nodejs-guide-integration-tests
avi

2
探しているテストのタイプを明確にしてください。たとえば、ServerSpecやKitchenCIを使用したサーバー構成のシステム/統合テストに対処するためのさまざまなアプローチがあります。エンドツーエンドのアプリケーションテストは、たとえばBDD自動化テストフレームワークやSeleniumを使用してホワイトボックス/ブラックボックスにすることができます。
ロンボブ2017年

回答:


2

Consulを簡単にモックするものが存在しない場合、他のマイクロサービスと共にConsulサービスをスピンアップすることを検討しましたか?ConsulはDockerで実行できるため、docker-composeを使用し、別のConsulエンドポイントをポイントするようにアプリを構成できる場合、これはかなり簡単なはずです。

docker-composeがテストに必要なすべてのインフラストラクチャ/マイクロサービスを起動するように構成されたら、使い慣れたツールを使用して、マイクロサービス(Seleniumなど)をテストできます。


1

ノードごとの状態で必要な場合、構成管理がノードテストを提供し、結果がジョブステータスに合体され、リターナで完全に考慮されるため、SaltStackが好きです。

SaltStackの状態では、成功または失敗時にイベントを生成することもできます。また、ノードは、他のノードの構成状態で利用可能な任意のエンドポイントデータ(つまり、どのip:portがリッスンしているか)を通知(マイニング)できます。

この2つを組み合わせることで、領事に求めているものを手に入れることができます。


サービスの可用性に関して、領事館とどのように比較しますか?ソルトジョブが返されてから3時間後に依存サービスの1つのノードがOOMに落ちた場合、このノードをサービスクラスターから削除し、展開ジョブがそれを呼び出さないようにするにはどうすればよいですか?最後の行は完全に範囲外です。
Tensibai 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.