JHipster – ein Erfahrungsbericht

Sombra González

JHipster gilt als renommierte Entwicklungsplattform, um Webapplikationen und Spring Microservices mit Spring Boot und Angular oder React zu generieren. Wir haben unsere ersten Erfahrungen gesammelt und erzählen euch, ob mit dem Einsatz von JHipster wirklich Zeit gespart werden kann.

For the english version, please click here.

Innovation und Agilität benötigen meistens eine kurze TTM (Time To Market). Das heisst, man muss so schnell wie möglich eine Plattform bieten, wo man iterativ weiterentwickeln kann, bis eine erste produktive Version bereit ist. Diese TTM spielt eine wichtige Rolle bei der Auswahl der Tech-Stack und anderen Entwicklungstools.

Wir wurden von einem Kunden angefragt, einen MVP (Minimum Viable Product) für ein innovatives Projekt herzustellen. Der Zeitdruck war spürbar. Wir sollten innert Kürze eine Webapplikation bauen. Das Ziel für unseren ersten Sprint war, eine Webapplikation mit den Funktionen einer grundlegenden Userverwaltung zum Laufen zu bringen.

Obwohl wir schon Erfahrung mit dem Techstack Angular-Java EE hatten, waren wir nicht gänzlich überzeugt, ob wir die erste Version in einer Woche schaffen. Jemand hatte uns den Tipp zu JHipster gegeben. Ich selbst hatte mal einen Vortrag über das Thema an der Devoxx Konferenz in Belgien besucht. Aber: Können wir damit tatsächlich Zeit sparen? Als Team entschieden wir uns, JHipster eine Chance zu geben.

Was genau ist JHipster?

JHipster ist ein Applikationsgenerator für moderne und responsive Webapplikationen und Microservices mit Angular/React fürs Frontend und Spring im Backend. Dieser Applikationsgenerator soll vor allem die Produktivität von Entwicklern und die Qualität der Software erhöhen. Dank der Integration von Yeoman kann man den Scaffold einer WebApplikation in wenigen Schritten bereitstellen.

Hier eine kurze Zusammenfassung der bekanntesten Frameworks sowie Tools, die JHipster bietet.

Client-Side Technologien:

  • Webpack für das Front-End Build
  • Weit verbreitete Javascript Frameworks wie Angular und React
  • Bootstrap

Server-Side Technologien:

  • Maven und Gradle als Java Build Tools
  • Spring Boot
  • Netflix OSS für Microservices
  • Database Update Management mit Liquibase
  • Integration mit unterschiedliche DBs wie PostgreSQL, MongoDB
  • Spring Data JPA
  • Spring Security
  • Spring MVC Rest für Rest-Full Applikationen

Vielfältige Testing Frameworks: JUnit, Jest, Gatling, Cucumber, Protractor…

Minification and CSS Optimierung so wie automatische Generierung von Docker Compose Dateien kommen zusätzlich dazu. Falls du mehr über die Möglichkeiten und Funktionalitäten von JHipster erfahren willst, findest du auf dessen Webseite die vollständige Liste.

Unsere Erfahrung mit JHipster

Unser Team hat sich rasch geeinigt: in 4 Stunden eine WebApplikation mit JHipster generieren und auf eine OpenShift Umgebung deployen. Unsere TechStack: Angular 6 und Spring Boot 1.5 mit PostgreSQL. Also los!

Mit der neuesten Version von JHipster haben wir nach wenigen Fragen zu Konfigurationen eine einfache Webapplikation generiert, inklusive Userverwaltung. Unsere CI Pipeline in Jenkins und das Deployment auf OpenShift haben wir manuell konfiguriert, obwohl das von JHipster auch teilweise angeboten wird. Warum? Wir hatten bereits mehrere Beispielprojekte, wobei wir ähnliche Pipelines und Deployments fertiggestellt haben. Time is gold. Besonders wenn man ein MVP baut.

Folgende Punkte haben uns besonders angesprochen:

  • Automatische Integration von DB Anpassungen mit Liquibase im Maven.
  • Internationalisation Support für Angular mit NG2 translate.
  • “Developer Experience”: Hot Reload, gute Integration mit unserer IDE (intelliJ)
  • Produktion Build inkl. minify

Nach dem Generieren des Projekts haben wir mehrere Komponenten, die von JHipster default integriert sind, entfernt. Zum Beispiel die Tools für das Runtime-Monitoring der Applikation. Mit der Zeit haben wir bemerkt, dass wir solche hochwertige Funktionalitäten hätten stehen lassen sollen. Lesson learned.

Obwohl JHipster auch die automatische Generierung von Spring Entitäten (inklusive Test für CRUD Operationen), Controllers und Services bietet, haben wir solche Funktionalitäten nicht verwendet. Ob wir damit etwas Zeit gespart hätten, kann ich noch nicht beurteilen.

Was wir gelernt haben

Nach unserem ersten Sprint waren die Kunden positiv überrascht. Man konnte schon etwas testen und nicht nur auf Basis von statischer Mockups weiter iterieren und entwickeln. JHipster hat uns eine gute Basis geboten, um relativ schnell die ersten Business Funktionalitäten zu implementieren. Klar mussten wir während der nächsten Sprints kleine Anpassungen an verschiedenen Komponenten machen.

Mir ist bewusst, dass nicht jeder von solchen Scaffolding Tools begeistert ist. Zugegeben: Ich war eine davon. Manche meinen, dass mit automatisch generierten Projekten der Überblick über die gesamte Applikation relativ schnell verloren geht. Falls Probleme auftauchen, weiss man nicht ganz genau wo, was und wie konfiguriert ist und man verlässt sich auf die gute Praxis des Generators. Klar lernt man mehr, wenn man aus dem Nichts eine neue Applikation erstellt. Aber man darf als Entwickler die Vorteile von Tools wie JHipster auch geniessen.

Besonders positiv finde ich in an JHipster, dass gewisse “Best practices“ für den ausgewählten Tech-Stack zur Verfügung stehen. Nach der automatischen Generierung erhält man ein Projekt mit fester Modularisierung und darauf folgend die State-of-the-art Konventionen. Man kann die generierten Entitäten und Services als Musterbeispiele brauchen und ohne grossen Aufwand die erste Business Logik integrieren. Die Teamorganisation (Front-End und Back-End Entwicklung) wird mit der Modularisierung stark unterstützt.

Im Grossen und Ganzen kann ich JHipster für ähnlich Aufträge wie unser Projekt (kurze TTM und MVP) weiterempfehlen. Ich bleibe etwas neugierig, wie der Einsatz in komplexeren skalierbaren Microservice-Umgebungen ist.

Schreibe einen Kommentar