Frage

Ich habe einen Kunden, der bereits einige Anwendungen in der Produktion hat und daher bereits einige Entscheidungen darüber getroffen hat, wie ihre Produktionsumgebung für dieses nächste Projekt sein wird:

  • Sun IPLANET 6.1 SP7 (W/ Apache)
  • JDK 1.6
  • Oracle Weblogic 10 mp3
  • Oracle 10g
  • 1024-Bit SSL

Sie haben auch einige Unternehmensstandards für Web -Apps:

  • Kater
  • Streben
  • Kompatibilität mit Safari, Firefox, IE6, IE7

Mir wird auch gesagt, dass diese App wahrscheinlich keine vollständige Java ee 5 -Umgebung benötigen (wahrscheinlich nur einen Webcontainer), muss jedoch mit einer in einer separaten Weblogic -Instanz über Client EJBs usw. kommunizieren und verschiedene Web ausführen Serviceanrufe an andere Unternehmensdienste.

Ich habe die Aufgabe erhalten, einige Entscheidungen darüber zu treffen, wie unsere Entwicklungs- und Testumgebungen für dieses neue Team aussehen werden (kleine, wahrscheinlich 2 oder 3 Personen, einschließlich mir, aber in den kommenden Monaten möglicherweise wachsen). Ich möchte eine schaffen, in der Menschen die IDE nutzen können, die sie lieben, und eine gute Entwicklungserfahrung auf Localhost haben, aber dennoch einen reibungslosen Weg zum Einsatz in einer Testumgebung und dann wieder in die Produktionsumgebung haben. Ich denke, dass HTTP auf lokalen Workstations in Ordnung ist, aber der Integrationstestserver genau wie der Produktionsserver aussehen sollte, und der gesamte Datenverkehr sollte HTTPS sein, um sicherzustellen, dass wir eine genaue Darstellung dessen erhalten, was ProD sein wird.

Zu wissen, dass die lokalen Arbeitsstationen von Entwicklern sehr unterschiedlich sein werden und möglicherweise Mac OS X 10.6 (Schneeleopard) oder Windows 7 auf ihren lokalen Workstations ausführen. Ein gemeinsamer Testserver müsste jedoch auch spezifisch sein: Welcher Technologiestapel würde uns geben würden Ein schöner reibungsloser Weg von der lokalen Entwicklung, durch Test und in Produktion?

Bearbeiten: Entschuldigung, wenn ich Technologiestapel sage, meine ich zum Beispiel Ant + JBoss + Tomcat + Oracle XE gegen Maven + Geronimo + Derby. Grundsätzlich eine Liste der Betonspezifikationsimplementierungen, die wir auf jedem Entwicklungsgerät und dem Testserver installieren müssen, der uns eine flexible Entwicklerumgebung und einen reibungslosen Übergang zu Test- und Produktionsumgebungen bietet.

Edit2: Es ist wahrscheinlich erwähnenswert, dass diese App, wenn sie überhaupt Informationen bestehen muss (was ich annehme Wille Seien Sie der Fall), was auch immer es ist, wird definitiv nicht kompliziert sein. Wahrscheinlich ist es etwas, das einer rudimentären Produktdatenbank ähnelt.

War es hilfreich?

Lösung

Ich würde gehen für:

  1. Hudson für nächtliche Builds (oder für jeden Checkin)
  2. Quecksilber oder Subversion Für die Quellvertretung (funktioniert sowohl unter Windows als auch für Mac hervorragend)
  3. Frühling, Frühling, Frühling. Ja, ich meine es ernst, Frühling löst viel mehr Probleme als nur die Abhängigkeitsinjektion. Wie Sicherheit, Batch -Verarbeitung, Transaktionen zur Handhabung, Systemintegration.
  4. EclipSelink für orm. Es sind viele fortgeschrittene Funktionen (die Hibernate fehlt) oft gespeichert (wie bei der ordnungsgemäßen Unterstützung für den gespeicherten Verfahren).
  5. Ein leichtes Gewichtbehälter wie Steg, Tomcat oder Harz. Sie werden Teamizide begehen, wenn Sie schwere langsame Sachen wie verwenden Geronimo oder Jboss.
  6. Deltawalker Für Merge/Diff -Tool (funktioniert erneut auf allen Plattformen).
  7. Wenn Sie erweiterte Datenbankfunktionen verwenden möchten, gehen Sie nach Oraklex (und Sqldeveloper). Beide sind schöne Werkzeuge. Wenn nicht, dann etwas Licht wie H2 oder Derby ist gut.
  8. Jung (oder Testng) und Mockito Für Einheitenprüfung/Verspottung.
  9. Bitte verwenden Sie nicht Streben. Ernsthaft, gehen Sie zumindest mit Struts2 oder vorzugsweise so etwas wie JSF2, Streifen oder Gwt.
  10. Ein anständiger Bugtracker wie, JTRAC, Redmine oder Fogbugz
  11. Selen Für Integrationstests
  12. Sonar für Codequalität

Wenn Sie verschiedene IDEs verwenden, dann verwenden Sie dann Maven Könnte eine gute Idee sein, da jeder Ideen von pom.xml konfiguriert werden kann (funktioniert in Intellij/Netbeans großartig). Aber der beste Rat, den ich Ihnen geben kann, ist das.

  • Gehen Sie mit dem, was Sie bereits kennen und mit denen Sie Erfahrung haben. Sie wechseln nicht über Nacht von Streben zu JSF2.
  • Holen Sie sich die besten Werkzeuge, die Sie bekommen können, ernsthaft kostenlose Dinge sind nicht immer der richtige Weg (obwohl es oft ist).

Frohe Hacking

Andere Tipps

Es ist wirklich nicht klar, was genau Sie fragen, wann Sie "Technology Stack" sagen. Meinst du Server, Bibliotheken, Build -Tools? Wie auch immer, hier sind einige flippige Empfehlungen:

  • Hudson für die kontinuierliche Integration
  • Vermeiden Sie Maven, es sei denn, Sie brauchen es wirklich, wirklich. Es lockt Sie wie eine Sirene mit dem Versprechen deklarativer Abhängigkeiten und Konventionen gegenüber der Konfiguration, aber die Praxis unterscheidet sich sehr von der Theorie
  • Verwenden Sie die Feder, wo immer dies möglich ist, die Standard -Java Se/Java ee APIs. Zusätzlich zu den einfacheren APIs erleichtert es auch Testbarkeit und AOP -Funktionen, die viel einfacher sind als direkt mit Aspektj. Natürlich bietet es auch eine Abhängigkeitsinjektion, die eine lose Kopplung unterstützt
  • Winterschlaf für ORM oder wenn Ihre Persistenzanforderungen sehr einfach sind, kann Frühlings-JDBC ausreichen

Die Testumgebung sollte die Produktion genau replizieren. Führen Sie auch Leistungstests in der Testumgebung durch. Wenn Hardware ein Problem darstellt und die Anzahl der Server im Cluster begrenzt sein muss, dann weniger Server beim Test erstellen, aber die gleiche Umwelt wie Sie auf Prod IE haben, um IPLANET zu sagen (Apache ) + Weblogic + Oracle db so auf ....

In Bezug auf die lokale Umgebung können Sie Tomcat verwenden (da Sie nur den Webcontainer benötigen), und für den EJB -Client können Sie das Glas bündeln und Remote -Anrufe tätigen (wenn Sie Remote -Anrufe an eine Remote -App tätigen). Wenn Sie Sie tätigen lokale Anrufe über lokale EJBs, dann müssen Sie Weblogic in der Entwicklung auf lokaler Box verwenden.

Versuchen Sie, dieselbe IDE zu verwenden (obwohl es sich hauptsächlich um eine Frage der Auswahl der Entwickler handelt). Wie das Betriebssystem betrifft, ist es nicht wichtig, da Sie eine kompatible IDE verwenden, wenn Sie nur den Code aus diesem erstellen.

Stellen Sie außerdem sicher, dass die IDE fest mit Tomcat (wenn Sie das verwenden) oder Weblogic, um den Code im Debug -Modus auszuführen.

Eine sehr wichtige Sache: Entscheiden Sie zuerst über eine Codestruktur und überprüfen Sie diese dann bei der Versionskontrolle, so dass der Benutzer aus der IDE in derselben Struktur eingeht. Verzweigen Sie den Code in CVS oder Versionskontrolle in jeder Version und Checkout von Head. Verwenden Sie sehr wichtig eine einzelne Build -Datei und verwalten Sie ein Setup -Dokument, um die Umgebung in lokalem Feld zu erstellen. Wählen Sie auch das Framework aus, das Sie in Codierung und Wartung am wohlsten fühlen. Auf diese Weise reduzieren Sie die Anzahl der Fehler im Code. Heutzutage sind Menschen, die die Frühlings-/Hibernate -Kombination verwenden, aber es hängt davon ab, ob es zu Ihrem Projekt passt. Hoffe das hilft.

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