Java-Web-Deployment: erstellen Sie code, oder bereitstellen .Krieg?

Wesentlichen zwei Möglichkeiten zur Bereitstellung einer J2EE - /Java-Web-app (in einer sehr vereinfachenden Sinne):

Bereitstellen versammelten Artefakte, um die Produktion box

Hier, wir schaffen das .war (oder was auch immer) anderswo, konfigurieren es für die Produktion (ggf. erstellen zahlreiche Artefakte für zahlreiche Kästen) und die daraus resultierenden Artefakte, die auf den Produktions-Servern.

  • Profis: Keine dev-tools auf Produktions-Kisten, wieder verwenden können Artefakte aus der Prüfung direkt Mitarbeiter tun, Implementierung braucht keine Kenntnisse von build-Prozess
  • Nachteile: zwei Prozesse für das erstellen und bereitstellen von Artefakten, die potenziell komplexe Konfiguration von bereits erstellten Artefakte machen könnte-Prozess schwer zu Skript/automatisieren; auf version binäre Artefakte

Bauen der Artefakte auf die Produktion box

Hier das gleiche Verfahren verwendet Tag-zu-Tag-erstellen und bereitstellen von lokal auf den Entwickler-Boxen verwendet wird, um in der Produktionsumgebung bereitstellen.

  • Profis: Ein Prozess aufrecht zu erhalten; und es ist schwer getestet/validiert durch häufige Nutzung. Potenziell einfacher zum anpassen der Konfiguration an Artefakt-Erschaffung der Zeit statt, anpassen von pre-built Artefakt Nachwort; keine Versionierung von binären Artefakte benötigt werden.
  • Nachteile: Potenziell komplexe Entwicklungs-tools erforderlich, auf allen Produktions-Boxen; Bereitstellung von Personal zu verstehen-build-Prozess; Sie nicht bereitstellen, was Sie getestet

Habe ich überwiegend verwendet der zweite Prozess, zugegebenermaßen aus der not heraus (keine Zeit/Priorität, für eine andere deployment-Prozess). Ich persönlich kaufen nicht, Argumente wie "die Produktion box muss sauber sein von allen Compilern, etc.", aber ich kann sehen die Logik bei der Bereitstellung, was Sie getestet haben (im Gegensatz zu Gebäude ein anderes Artefakt).

Jedoch Java-Enterprise-Anwendungen sind so empfindlich, Konfiguration, es fühlt sich an wie ärger mit zwei Verfahren zum konfigurieren von Artefakten.

Gedanken?

Update

Hier ein konkretes Beispiel:

Verwenden wir OSCache, und den disk-cache einzuschalten. Die Konfigurations-Datei muss in der .war-Datei und es verweist auf einen Dateipfad. Dieser Pfad ist anders auf jede Umgebung. Der build-Prozess erkennt der Benutzer die konfigurierten Speicherort und sorgt dafür, dass die properties-Datei gesetzt, im Krieg ist die richtige für seine Umwelt.

Wenn wir den build-Prozess für die Bereitstellung, wäre es eine Frage der Schaffung der richtigen Konfiguration für die Produktion von Umweltschutz (z.B. production.build.properties).

Wenn wir Folgen der "bereitstellen versammelten Artefakte, um die Produktion box", bräuchten wir einen zusätzlichen Prozess zum extrahieren der (falsche) OSCache Eigenschaften und ersetzen Sie es mit einem entsprechenden Produktionsumgebung.

Dadurch werden zwei Prozesse, um das gleiche erreichen.

So, die Fragen sind:

  • Ist diese vermeidbare ohne "kompilieren, die auf der Produktion"?
  • Wenn nicht, ist es Ihnen das wirklich Wert? Es wird der Wert "kein kompilieren auf die Produktion" größer als "Don' T Repeat Yourself"?
InformationsquelleAutor davetron5000 | 2008-09-26
Schreibe einen Kommentar