Full-Featured Webapplikation mit Grails

Ich möchte heute den Technologie-Stack einer umfangreicheren Webapplikation vorstellen, die ich entwickle und betreibe. Vielleicht entdecken Sie ja für sich ein paar interessante Projekte. Mit der folgenden Auflistung und Beschreibung zeige ich alle am Betrieb beteiligten Technologien:

  • Linux-Root-Server (Einen Root-Server gibt es bereits ab 50€ pro Monat. Wenn man eine Applikation lediglich testen möchte, dann reicht sicherlich auch ein virtueller Server aus. Diese gibt es bereits für unter 10€ pro Monat. Als Betriebsystem habe ich mich für eine Ubuntu-Version mit Long Term Support entscheiden.)
  • MySQL (Trotz des ganzen Hypes um NoSQL benutze ich MySQL. Das ist eine ausgereifte Technologie, die man getrost einsetzen kann.)
  • Apache und mod_jk (Die HTTP-Anfragen nimmt eine Apache-Server entgegen und kommuniziert mit dem Tomcat mittels mod_jk. Durch den vorgeschaltenen Apache ergeben sich vor allem Vorteile in der Konfiguration, beispielsweise für virtuelle Hosts oder SSL)
  • Tomcat (Als Servlet-Container kommt Tomcat zum Einsatz. Es gibt aber auch andere, wie z.B. Jetty, die sich genauso eignen würden.)
  • Grails (Das ist das eigentliche Webapplikation-Framework und auch der wichtigste Teil des Technologie-Stacks. Mit der Wahl des Frameworks entscheidet man sich für ein bestimmtes Programmiermodell und meist auch für eine bestimmte Programmiersprache. Auch die Art der Webapplikation ist damit grob festgelegt, damit ich meine ich z.B. Single-page vs. Multi-page application. Mit Grails haben wir also Groovy als Programmiersprache, ein Framework nach dem Prinzip ‘Coding by convention’ und eine klassische Multi-page application.)
  • Grails-Plugins:
    • resources (Das Resources-Plugin ist seit Grails 2 fester Bestandteil des Frameworks. Es sorgt dafür, dass CSS- und JS-Ressourcen optimiert werden. Bei der richtigen Verwendung kann man mit dem Plugin einen enormen Performance-Gewinn bei Seitendarstellung erreichen, insbesondere durch die Zusammenfassung von JS-Dateien)
    • quartz (Quasi der Standard zur Ausführung von zeitgesteuerten Jobs. Ich verwende es auch häufig, um bestimmte Funktionen asynchron auszuführen um die Requestverarbeitung zu verkürzen.)
    • mail (Das Plugin bietet eine super einfache DSL zum Versenden von E-Mail)
    • jquery (Bereitstellung der JQuery-Bibliothek)
    • bcrypt (Funktionen zum Verschlüsseln von Passwörtern)
    • asynchronous-mail (Das Plugin bietet eine Queue zum Versenden vom Mails. Man kann beispielsweise festlegen, wie viele Mails pro Minute versendet werden dürfen und wann nach einem Fehlerfall versucht wird die Mail erneut zu senden.)
  • Twitter Bootstrap (Bootstrap ist wohl zur Zeit das bekannteste HTML-CSS-Framework. Der große Vorteil ist, dass man auch ohne Designer von Anfang an optisch ordentliche Ergebnisse hat.)
  • Javascript-Bibliotheken:

Zur Vollständigkeit möchte ich noch kurz die wichtigsten Entwicklungswerkzeuge vorstellen:

  • IntelliJ IDEA (Die Ultimate-Version besitzt eine gute Grails-Unterstützung und Git und Groovy sind bereits in der Community-Edition enthalten)
  • GIT als Versionskontrollsystem
  • Redmine als Bugtracker
  • Entwicklerkonsole des Google Chrome Browsers

Das war der Blick hinter die Kulissen, vielleicht waren ein paar Anregungen für Ihre eigenen Projekte dabei.