Ich erstelle eine kleine Monolith-ETL-Software neu, die in Python geschrieben wurde. Ich finde eine Microservice-Architektur geeignet, da sie uns die Flexibilität gibt, bei Bedarf verschiedene Technologien zu verwenden (Python ist meiner Meinung nach nicht die beste Sprache für Unternehmenssoftware). Wenn wir also drei Microservices hätten (nennen wir sie Extract, Transform, Load), könnten wir in Zukunft Java for Transform Microservice verwenden.Microservice-Architektur für ETL
Das Problem ist, es ist hier nicht möglich, das Ergebnis eines Serviceaufrufs in einer API-Antwort (sagen wir HTTP) zu übergeben. Die Ausgabe von Extract wird Gigabytes an Daten sein.
Eine Idee besteht darin, Extract aufzurufen und die Ergebnisse in einer Datenbank speichern zu lassen (was wirklich das ist, was das Modul im Monolith macht, also einfach zu implementieren). In diesem Fall gibt der Dienst nur eine Ja/Nein-Antwort zurück (war der Prozess erfolgreich oder nicht).
Ich fragte mich, ob es eine bessere Möglichkeit gäbe, sich dem zu nähern. Was wäre eine bessere Architektur? Ist das, was ich vorschlage, vernünftig?
Ich bin gespannt, warum Sie Micro Services für Ihre Lösung finden? Abgesehen von der Flexibilität, welche anderen nicht funktionalen Funktionen Sie suchen. Ich würde HTTP nur verwenden, wenn ich kein anderes schnelleres Protokoll in meinem ETL-Prozess verwenden kann. Wenn ich auf deine Frage schaue, habe ich das Gefühl, dass du nach verteilter Architektur und einer Trickglot-Anwendung suchst. Ist Ihr aktuelles ETL-Tool eine Desktopanwendung? – Sumanth
Ist die Verwendung von HTTP zwingend erforderlich, damit die Architektur als Micro-Service-basiert betrachtet werden kann? Ich erwog andere Formen der Integration verschiedener Komponenten, z. Amazon Daten Pipeline (im Grunde ruft Dienste in einer bestimmten Reihenfolge usw.) – lfk