Frage

Die meisten Python-Frameworks wird eine Entwicklung Webserver irgendwelcher Art haben, die eine Warnung haben, dass es nicht für die Verwendung als Produktionsserver ist. Wie viel anders machen sie neigen dazu, aus ihrer Produktion Äquivalente zu sein?

Ich habe nicht ganz entschieden, welchen Rahmen mit zu gehen, geschweige denn, was Produktionsserver zu verwenden, so ist es ein bisschen schwierig für mich festzunageln auf einen „Entwicklungs-Server vergleichen, x zu Produktionsserver y.“ Also mit dieser sagte, lassen Sie mich die Frage ein wenig präzisieren: In Ihrer bisherigen Erfahrungen mit einem Python-Framework, wie viel Zeit mussten Sie verbringen Ihre Anwendung bekommen und mit einem Produktionssystem ausgeführt wird, sobald seine auf einer Entwicklung entwickelt Server? Oder haben Sie den Entwicklungsserver überspringen und entwickeln Sie Ihre Anwendung auf einem Server, der mehr ist wie das, was Sie in der Produktion verwenden?

War es hilfreich?

Lösung

Die unteren Umgebungen sollten versuchen, so genau auf die Produktionsumgebung anzupassen wie möglich die verfügbaren Ressourcen gegeben. Dies gilt für alle Entwicklungsbemühungen unabhängig davon, ob sie Python-basierte oder sogar Web-basiert. In der Praxis sind die meisten Organisationen nicht bereit sind, diese Art von Geld ausgeben. In diesem Fall versuchen Sie, mindestens die Umwelt zu machen, der Produktion möglichst direkt unterhalb Produktion so nah ist.

Einige der Variablen im Auge zu behalten sind:

  • oft gibt es mehrere Maschinen (Applikationsserver, Datenbankserver, Webserver, Loadbalancer, Brandwände, etc.) in einer Produktion. Halten Sie diese alle im Auge behalten.

  • Betriebssysteme

  • Anzahl der CPUs. Der Übergang von einer einer CPU unteren Umgebung zu einer Multi-Produktionsumgebung Kern kann Multi-Thread-Probleme machen, die nicht getestet wurden

  • Load Balancing. Viele Male niedriger Umgebungen sind nicht ausgeglichen laden. Wenn Sie Sitzungen replizieren (zum Beispiel) über mehr Produktions App-Server, sollten Sie versuchen, das gleiche in einer niedrigeren Umgebung zu tun

  • Software / Bibliotheksversionen

Andere Tipps

Ich entwickle mit django. Der Produktionsserver wir haben, ist entfernt, so ist es ein Schmerz, der es für die Entwicklung werden. So zunächst habe ich eine vm und versucht, so weit wie ich konnte, um die Umgebung des prod Server anzupassen. An einem gewissen Punkt, dass vm (aufgrund eines anderen Vorfall) abgespritzt wurde. Ich zog eine Bilanz der Situation damals und realisiert gibt es wirklich keinen guten Grund, eine maßgeschneiderte vm für die Entwicklung zu verwenden. Da die zur Verfügung stehenden Mittel für die App nicht das gleiche wie die prod Server waren, war es nicht gut für Anfragen ohnehin Timing (in einem absoluten Sinne).

Das heißt, ich jetzt Djangos gebaut in dev-Server mit SQLite für die Entwicklung, und Apache / wsgi und postgresql für die Produktion verwenden. Solange die Python-Abhängigkeiten von beiden Seiten erfüllt sind, dann ist es zu 100% kompatibel. Das einzige mögliche Problem würde raw SQL schreiben, anstatt die ORM zu verwenden.

Im Allgemeinen sind sie in Bezug auf die Einstellungen gleichen, die die Anwendungen erforderlich sind, um die die Umgebungseinstellung umfassen.
Allerdings haben die Kunden genereally dev-Systeme, die in Bezug auf die Rechenleistung und andere h / w Ressourcen weniger leistungsfähig sind. Ich habe sie virtuelle Server in dev evironment gesehen verwenden, da sie in der Regel mehrere Projekte parallel going on, das hilft ihnen die Kosten reduziert werden.

Idealerweise ist die logische Konfiguration der Entwicklungs-, Test- und Produktionsserver sollten gleich sein. Sie sollten die gleiche Version von OS, Web-Server und alle anderen Software-Assets verwendet, um die Anwendung auszuführen. Allerdings, je nachdem, wie stark Ihre Umgebung Dinge beschneiden werden -. Hand kopierte Bilder / Skripte usw. auf der Dev-Maschine, die es nicht durch Test machen und oder Produktion

das Sie wahrscheinlich eine Art von Push-Skript müssen, minimieren, die Sie von einer Stufe zur nächsten, dh PushVersionDev, PushVesionTest, PushVersionProd bewegen kann. im Idealfall soll dies das gleiche Skript mit Parametern für Zielserver sein (e), die alles, was Sie benötigen die App durch die verschiedenen Stufen zu bewegen.

Ich würde eine Lese von Theo Schlossnagle Buch empfehlen Scalable Internet Architekturen für mehr Ideen über die Angelegenheit.

Ihre Frage direkt zu beantworten .... Sobald Sie Ihre Anwendung getestet und umgesetzt werden, die Zeit, um productoin zu rollen ist nicht groß - bereitstellen OS, Web-Server, Frameworks unterstützen, wenn sie die Installation, Anwendung benötigen und Sie sind gut zu gehen. Von blankem Metall habe ich Linux-Servern in 1 Stunde online gehen gesehen, Fenster etwa 90 Minuten. wenn Sie das Betriebssystem und Web-Server gehen sogar less..minutes haben.

Ihre Staging-Umgebung sollte die Produktionsumgebung imitieren. Die Entwicklung ist eher wie ein Spielplatz, und die Kontrolle über die Entwicklungsumgebung soll nicht ganz so streng. Allerdings sollte die Entwicklungsumgebung in regelmäßigen Abständen von der Produktionsumgebung aktualisiert (z ,. prod Daten an die dev db kopiert, schließen Sie die Anschlüsse an Entwickler, die auf prod geschlossen sind, usw.).

Idealerweise dev, Stadium und prod sind alle auf separaten Maschinen. Die einzelnen Maschinen können separate physikalische Boxen oder virtuellen Maschinen auf dem gleichen physischen Box, je nach Budget / Bedürfnisse.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top