#3096
BigBANG
3 Apr. 2024, 22:46
Zitat von: RichterinWinkelmann
Das wäre nur ein anderer Aufbau um die Verarbeitung des html Dokument zu realisieren. Ich würde es in dem Python Proxy machen, bzw in einem extra Service dann. Der große Vorteil wäre wie gesagt, dass man sich das xfache hin- und herschicken des html docs und die ewig gleichen parsing Operationen spart. Wenn ich mich recht erinnere ist das Standard Beispiel dafür Map-Reduce.
Aussehen könnte das dann etwa wie folgt:
Ablauf wie bei Dir bis 5., dann:
1) Doc von Xenforo kommt an und irgendwo hast Du im Request stehen welche (optionalen) Änderungen ausgeführt werden sollen. Dann wird das Dokument geparsed und die zu ändernden Sektionen kopiert/isoliert.
2) Feste Reihenfolge an Komponenten durch die das Doc läuft, wenn die Änderung für das Doc durchgeführt werden soll, macht der das, schickt es an den nächsten Filter weiter, sonst lässt er es einfach durch und schickts direkt weiter.
z.B. Ingest -> Ersetzen von Piccolo mit Hurensohn -> Anpassen Gallerie -> in den Footer Surenhohn schreiben
3) Entweder bastelt man dann hier das Dokument mit allen Änderungen zusammen oder die Filter arbeiten gleich auf dem Doc und man muss vllt. noch irgendwelche Validierung machen.
Dann weiter wie bei Dir mit 7.
Hat mMn. den großen Vorteil, dass es einfacher zu grokken & debuggen ist weil fixe Reihenfolge. Du hast nicht 12345 Services mit eigener Infrastruktur die alle kapott gehen können + den Kommunikationsoverhead sondern lässt ein Objekt durchrutschen.
Wenn Du die Filter alle isolierst und an unterschiedlichen Orten hostest statt in einem Programm isses tatsächlich wieder eine Art Microservice Architektur. Aber warum ein distributed system bauen, wenns nicht sein muss, macht nur mehr Kopfschmerzen durch Komplexität. Sollte GWN tatsächlich so viele Requests produzieren, dass das eine Instanz ausknoggd kannst Du es auch so bauen, dass der Proxy die Requests an einen Pool von den Dingern schickt.
Natürlich ist das möglich.
Dann gerät man allerdings in eine Situation, in der man den Proxy neu starten muss, weil man einen kleinen Bug in der Darstellung der Galerie beheben muss.
Bei solchen Dingen, die offensichtlich eine in sich geschlossene Aufgabe erfüllen (wie zum Beispiel ein Proxy), halte ich es für sinnvoll, dieses kleine, in sich geschlossene Modul nicht mit zusätzlichen Funktionalitäten zu überfrachten.
Der Kommunikationsoverhead sollte im Bereich von einigen Millisekunden liegen.
Immer wenn Modularität gut möglich ist, würde ich sie auch anwenden. In dem Fall haben wir zwischen der Galerie und den Proxy absolut keine Abhängigkeiten, wodurch einem die Modularität quasi entgegenschreit.
Wenn man sich grundsätzlich fragt, ob es nicht besser ist immer Monolithen zu bauen, dann sage ich nein!
Ich habe diesen Dialog übrigens schon mit mir selbst geführt. Die Versuchung einfach alles im Proxy zu machen, ist durchaus gegeben. Aber ich merkte, wie es eher Faulheit und "Abkürzung nehmen" ist.
Dieser Beitrag wurde von BigBANG am 03.04.2024 22:57:56 bearbeitet.