Wie teste ich einen Cluster von Microservices?


7

Ich habe mir Server Spec angesehen und es steht klar:

Anmerkung: Serverspec-Testsuiten sollen auf einem einzelnen Computer (oder Docker-Container) ausgeführt werden. Mit anderen Worten, Sie sollten nicht versuchen, einen einzelnen rspec-Befehl auszugeben, der Tests für mehrere Computer oder Container sammelt und ausführt. Sie müssen für jeden einen rspec-Befehl ausgeben.

So kann ich Tests pro Server durchführen, was in einigen Fällen gut ist. Das Problem ist jedoch das folgende: Meine Microservice-Architektur verfügt über einen Auto-Discovery-Dienst, sodass einige Dienste nach der Abfrage bekannt sind. Gibt es ein Projekt, um dies auszudrücken? Ich weiß, dass ich mit Rubin (oder Python, wenn ich Testinfra oder andere wähle) herumarbeiten kann .

Etwas, das in Consul mit Serverspezifikation oder ähnlichem integriert ist, wird großartig sein. 2014 haben die Leute danach gesucht. Kennt jemand ein Projekt, das dieses Problem angegangen ist?


1
Ich denke, Sie missverstehen den Lauf auf einer einzelnen Instanz (unabhängig von den externen Anforderungen), indem Sie mehrere Instanzen innerhalb desselben Laufs testen.
Tensibai

2
Wie werden Ihre Microservices gehostet? Docker-Container?
Richard Slater

Meine Microservices laufen in VMs und einige in physischen Maschinen (wir machen Genetik, also gibt es einige On-Prem-Cluster neben Sequenzern)
Nicocesar

Ich fand diesen Artikel hilfreich, wenn jemand Zeit hat, ihn zu nutzen. toptal.com/nodejs/nodejs-guide-integration-tests
avi

2
Bitte klären Sie, nach welcher Art von Test Sie suchen. Es gibt verschiedene Ansätze, um System- / Integrationstests der Serverkonfiguration mithilfe von beispielsweise ServerSpec oder KitchenCI durchzuführen oder um zu testen, ob der Microservice aktiv ist, und zwar mithilfe einer einfachen HTTP-Anforderung, die jeder Microservice implementieren sollte. und unterschiedliche End-to-End-Anwendungstests können Whitebox / Blackbox sein, die beispielsweise BDD-Automatisierungstest-Frameworks oder Selen verwenden.
Rombob

Antworten:


2

Wenn es nichts gibt, was den Konsul leicht verspotten könnte, haben Sie darüber nachgedacht, einen Konsulendienst zusammen mit Ihren anderen Mikrodiensten aufzubauen? Consul kann in Docker ausgeführt werden. Dies sollte daher recht einfach sein, wenn Sie Docker-Compose verwenden und Ihre Apps so konfiguriert werden können, dass sie auf einen anderen Consul-Endpunkt verweisen.

Sobald Ihr Docker-Compose so konfiguriert ist, dass alle für Ihren Test erforderlichen Infrastrukturen / Mikrodienste hochgefahren werden, können Sie alle Ihnen vertrauten Tools zum Testen Ihrer Mikrodienste verwenden, z. B. Selen.


1

Ich mag SaltStack, weil das Konfigurationsmanagement Knotentests bereitstellt, wenn Sie dies in den Status pro Knoten wünschen, und die Ergebnisse im Auftragsstatus zusammengeführt und in den Retourern vollständig berücksichtigt werden.

Mit SaltStack-Status können Sie auch Ereignisse bei Erfolgen oder Misserfolgen generieren und Knoten können beliebige Endpunktdaten (dh welchen IP-Port, den sie abhören) ankündigen (Minen), die für die Konfigurationsstatus anderer Knoten verfügbar sind.

Die Kombination der beiden bringt Ihnen das, was Sie wahrscheinlich von Consul wollen.


Wie ist es in Bezug auf die Verfügbarkeit von Diensten mit dem Konsul zu vergleichen? Wenn ein Knoten eines abhängigen Dienstes 3 Stunden nach der Rückkehr Ihres Salt-Jobs in OOM gefallen ist, wie würden Sie diesen Knoten aus dem Service-Cluster entfernen und vermeiden, dass Ihr Bereitstellungsjob ihn aufruft? Ich denke, die letzte Zeile ist absolut außerhalb des Geltungsbereichs.
Tensibai
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.