Sollten Arbeitsprozesse von Webanwendungen in separaten Containern abgelegt werden?

8

Mein Setup basiert auf einer Flask-App mit einer PostgreSQL- und Redis-Datenbank. Darüber hinaus wird ein Arbeitsprozess gestartet, um asynchrone Aufgaben wie das Senden von E-Mails zu erledigen. Ich benutze Gunicorn, um mehrere App-Prozesse zu erstellen. Die Übergabe von Jobs von den App-Prozessen an den Worker-Prozess erfolgt über Redis.

Die Frage ist, ob der Arbeitsprozess in einem separaten Container gestartet werden soll, obwohl er auf demselben Code basiert. Derzeit verwende ich ein Startskript mit dem entsprechenden Bit:

gunicorn --bind=0.0.0.0:8000 --workers=3 manage:app &
python -u manage.py run_worker

Wie kann ich auch sicherstellen, dass sie den gemeinsamen Dateisystemcontainer wiederverwenden, wenn sie getrennt werden sollen? Sollten beim Skalieren von Gunicorn mit der Haupt-App oder den Worker-Prozessen zusätzliche Instanzen des Containers erstellt oder die Anzahl der Prozesse in einem Container erhöht werden?

Verwandte: Was sind die Vorteile der Dockerisierung von Nginx und PHP in verschiedenen Containern?

Moritz
quelle

Antworten:

6

Ich kann mir nur einen Fall vorstellen, in dem der Aufwand für das Ausführen von Workern in separaten Containern gerechtfertigt ist: Wenn Ihr Setup Docker-Schwarm für die Clusterbereitstellung verwendet. Auf diese Weise erhalten Sie alle HA-Vorteile.

Ansonsten sehe ich keinen Grund, solche Aufgaben zu komplizieren, insbesondere wenn sie genau dieselbe Codebasis verwenden müssen (was mich glauben lässt, dass sie sozusagen einen Bereich von Bedenken teilen). Es mag elegant erscheinen, aber ich sehe einfach nicht genug Vorteile

ps Jede Aufteilung dieser Art zwingt Sie dazu, die Zusammenschaltung zu verwalten und die Einrichtung für die lokale Entwicklung zu erschweren

Wintermute
quelle
Ich denke, die Komplexität kann in meinem Fall gut gehandhabt werden, da ich bereits Docker-Compose verwende. Ihr Punkt ist jedoch gültig, da die Last derzeit mit einer einzigen Instanz verarbeitet werden kann und keine Notwendigkeit besteht, die Dinge komplexer zu gestalten, als sie sein müssen
Moritz,