2017-01-05 2 views
0

Ich arbeite an einem Projekt, bei dem mehrere Selleriearbeiter an verschiedenen Standorten in den USA arbeiten werden, die über das Internet kommunizieren werden.REST API oder "direkter" Datenbankzugriff für remote Sellerie/Django Arbeiter?

Ist es besser, mein Django-Projekt an jede Maschine zu verteilen und sie mit den Datenbankanmeldeinformationen für meinen Datenbank-Host zu konfigurieren, oder sollte ich einen "Haupt" Django/Datenbank-Host haben, der eine REST-API für Remote-Sellerie-Aufgaben und Arbeiter darstellt für den Datenbankzugriff zu treffen?

Meistens auf der Suche nach Vor-/Nachteile und alle Faktoren, an die ich nicht gedacht habe.

Ich kann einzelne einfache API-Endpunkte bereitstellen, die alle Daten bereitstellen, die meine Aufgaben abfragen müssen, und einfache POST-API-Endpunkte, die alle Datenbankeinträge erstellen können, die meine Aufgaben erstellen müssen.

Ich habe nicht mehr als sagen 10 Remote-Mitarbeiter, die vielleicht insgesamt 1 Anfrage pro Minute tun würde.

Ich denke ich dies wahrscheinlich bedeutet, dass meine Sorgen sind nicht so sehr um die Anfrage/Antwort-Overhead, sondern mehr über die Wartbarkeit, Architektur, Sicherheit ...

Antwort

1

Die Antwort hängt von zu vielen Variablen, Sorgen, Kräfte und whatnots, etwas anderes zu sein als "es hängt ... ab".

Ich nehme an, Sie schon gedacht die folgenden Vor- und Nachteile, aber trotzdem:

eine API verwenden wird für längere Request/Response-Zyklen (offensichtlich) und setzen ganz gewisse Last auf dem Django-Projekt (Front-Server zu machen, App-Server usw.). Außerdem bedeutet dies, dass Ihre Aufgaben nicht alle Datenbankfunktionen (komplexe Abfragen, Aggregationen usw.) verwenden können.

OTHO das Hinzufügen eines API-Layers isoliert die Worker vom inneren db-Schema, was Migrationen (auf der Django-Seite) und Deployment einfacher macht, da Sie nicht alle Worker stoppen, für alle bereitstellen und neu starten müssen Arbeitskräfte. Nun, es macht sogar möglich, die API-seitige Technologie zu ändern, ohne die Arbeiter zu beeinflussen (nicht, dass ich viel Grund dazu sehe, aber trotzdem ...). Aber es bedeutet auch, dass Sie eine ganze API pflegen müssen, und die Wahrscheinlichkeit ist groß, dass Modelländerungen - oder zumindest ein Teil davon - Ihre API und/oder Ihren Aufgabencode beeinflussen werden (wenn die Änderungen Funktionen hinzufügen, die die Worker verwenden sollten) etc).

IOW, es hängt wirklich davon ab (ja, das habe ich schon gesagt, oder?), Was die Anforderungen und Einschränkungen Ihres Projekts angeht, und nur Sie/Ihr Team wissen, welche Lösung am besten zu Ihrem Projekt passt.

+0

Diese Antwort ist gut, da ich nur für Pro/Contra der verschiedenen Methoden und alles, was ich nicht gedacht habe suchen. –

+0

@DustinWyatt froh, wenn es in irgendeiner Weise geholfen hat - aber Sie sollten vielleicht mehr darüber erzählen, was Sie bereits gedacht haben, sowie über Ihr Projekt selbst - nicht unbedingt, worum es in dem Projekt geht, sondern eher darüber, welche Art von Verarbeitung in Ihrem passiert Aufgaben usw. –