Play framework 2.1 Anwendung Bereitstellung
Habe ich meinen ersten Play-Anwendung. Welche ist die geeignete Bereitstellungsmethode für die Produktion? Sollte ich kopieren Sie das gesamte Projekt auf den Produktions-server, und führen Sie Spiel zu starten? oder sollte ich einen Krieg aus meiner Anwendung und bereitstellen von tomcat /jboss? Welche ist die am meisten empfohlene Weg? Immer mit ihm verwechselt werden, im Vergleich zu seiner Schienen Art von Verhalten. Beachten Sie, dass das ist eigentlich ein big-data-Anwendung und kann es auch server geladen-Anfragen später. So denken wir an die Skalierbarkeit, Verfügbarkeit, performance-Aspekte zu. Diese Anwendung wird entschieden werden, bereitgestellt in einer cloud.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie andere gesagt haben, mit der
dist
Befehl ist der einfachste Weg, um bereitstellen von Spielen für eine einmalige Anwendung. Jedoch, zu erarbeiten, habe ich hier einige andere Optionen und meine Erfahrung mit Ihnen:Wenn ich eine app, die ich Häufig aktualisiert werden, ich in der Regel installieren Spielen auf dem server, und führen Sie updates über Git. Tut so, nach jedem update, habe ich einfach laufen
play stop
(den aktiven server stoppen), manchmal habe ich dann ausgeführtplay clean
heraus zu löschen alle potenziell beschädigten Bibliotheken oder binaries, dann Lauf ichplay stage
um sicherzustellen, dass alle Voraussetzungen vorhanden sind, und führen Sie die Kompilierung, und dann schließlichplay start
um den server zu starten, damit die aktualisierte app. Es scheint wie eine Menge, aber es ist einfach zu automatisieren über eine schnelle bash-Skript.Eine weitere Methode ist das bereitstellen von Spielen hinter einer front-end-web-server wie Apache, Nginx, etc. Dies ist vor allem nützlich, wenn Sie möchten, führen Sie eine Art von load-balancing, aber nicht erforderlich, da Spielen im Bundle mit Ihrer eigenen server. Docs: http://www.playframework.com/documentation/2.1.1/HTTPServer
Schaffung eines KRIEGS-Archiv, indem Sie play2war-plugin ist ein weiterer Weg, um bereitstellen, aber ich würde es nicht empfehlen, es sei denn, Sie geben es an jemanden, der bereits über eine große Infrastruktur aufgebaut, diese servlet-Container, die Sie erwähnt (wie viele große Unternehmen). Mit einem servlet-Container fügt eine Ebene der Komplexität, die Spielen entfernen soll von der Natur (daher der integrierte server). Es gibt keine nennenswerten Leistungssteigerungen, die ich bin mir bewusst, mit dieser Methode über die beiden zuvor beschriebenen.
Natürlich, es ist immer die
play dist
erstellt für Sie das Paket, das Sie auf Ihren server hochladen und ausführenplay start
von dort. Dies ist wahrscheinlich die einfachste option. Docs: http://www.playframework.com/documentation/2.1.1/ProductionDistLeistung und Skalierbarkeit, die Netty server im Spiel funktioniert sehr angemessen zu außergewöhnlich für das, was Sie benötigen. Hier ein seriöser link zeigt Netty mit die Schnellste Leistung, die von allen Rahmenbedingungen und ein "Lager" Play-app kommt in irgendwo in der Mitte des Feldes, aber so vor der Rails/Django in Bezug auf Leistung: http://www.techempower.com/blog/2013/04/05/frameworks-round-2/.
Vergessen Sie nicht, können Sie immer ändern Sie Ihre deployment-Architektur die Straße hinunter zu laufen, hinter eine front-end-server, wie oben beschrieben, wenn Sie mehr benötigen load balancing und so für Verfügbarkeit. Das ist eine triviale änderung, die mit Spiel. Ich noch würde nicht empfehlen, den KRIEG deployment-option, es sei denn, wie ich schon sagte, Sie haben schon eine große installierte Basis von servlet-Containern, die jemand zwingt Sie zu dienen, Ihre app mit.
Skalierbarkeit und Leistung hat auch eine Menge mehr zu tun mit anderen Faktoren, wie zum Beispiel Ihre Nutzung von caching, Datenbank-Konfiguration, Einsatz von Parallelität (das Spiel ist gut) und die Qualität der zugrunde liegenden hardware-oder cloud-Plattform. Zum Beispiel, Instagram und Pinterest dienen Millionen von Menschen jeden Tag auf ein Python - /Django-stack die mittelmäßige Leistung von allen gängigen benchmarks. Sie zu mildern, dass mit viel caching und die high-Performance-Datenbanken (das ist meistens der Flaschenhals bei großen Anwendungen).
Auf die Gefahr hin, diese Antwort zu lang ist, werde ich nur hinzufügen, eine Letzte Sache. Auch ich verwendet, um zu ärgern über die Leistung und Skalierbarkeit, ich dachte, ich brauchte die stärkste stack und Konfiguration rund um laufen meine apps. Das ist einfach nicht mehr, es sei denn, du redest wie Google oder Facebook Skala, wo jeder Algorithmus muss fein abgestimmt, wie es bombardiert werden eine Milliarde mal täglich. Hardware (oder cloud) Ressourcen sind Billig, aber Entwickler/sysadmin-Zeit ist nicht. Sie sollten betrachten die einfache Bedienbarkeit und Wartbarkeit für die Bereitstellung der app über raw-Leistung Vergleiche, wenn auch im Fall von Spielen die beste Leistung der deployment-Konfiguration ist wohl die einfachste option.
Brauchen Sie nicht zu verwenden, Spielen Sie die Konsole für die Ausführung der Anwendung, es verbraucht einige Ressourcen, und es ist Hauptziel ist es, schnell zu starten, während der Entwicklung.
Die beste option, mit
dist
- Befehl, wie beschrieben in der doc. Dank dieser, Sie brauchen nicht einmal zu installieren, Spielen Sie auf dem Ziel-Rechner, wiedist
erstellt einsatzbereit stand-alone-Anwendung mit allen erforderlichen Elementen (auch build-server, so dass Sie nicht brauchen, um bereitstellen, mit dem KRIEG in einen container).Wenn Sie planen, eine Wolke, die Sie sollten auch prüfen, bietet der ie. von Heroku, oder CloudBees, das Ihnen erlaubt, um die Anwendung bereitzustellen, nur durch die... drücken änderungen via git-repository, in dem sehr bequemen Weg, überprüfen Sie die Dokumentation home, scrollen Sie nach unten zu den links: Bereitstellen... weitere details.