Kann ich mit Grails Enterprise Applikationen umsetzen?

T
Tobias KraftIT Consultant
Kann ich mit Grails Enterprise Applikationen
umsetzen?
DOAG Nürnberg
21.11.2013
Tobias Kraft, exensio GmbH
Agenda

Grails im Überblick
Anforderungen an Enterprise Applikationen

Enterprise Applikationen mit Grails

2
Was ist Grails?
A Full-Stack Web (MVC) Framework
● Install & GO!
● Nahtlose Java Integration, wird auf der Java Virtual Machine (JVM)
ausgeführt
● Ursprünglich inspiriert von Ruby on Rails
● Open Source
● Grails Historie
● Projekt-Beginn 2005
● Grails 1.0 (02/2008)
● Grails 2.3.2 (11/2013, aktuelles Release)

● Basiert auf Groovy

3
Aufbau von Grails

4
Schlüsselkonzepte
Der Standard-Weg ist konfiguriert, aber Änderungen sind möglich
● Convention over Configuration (CoC)
● Don’t repeat Yourself (DRY)

● Beispiele
● Aufbau Projekt-Struktur

● DB-Mapping
● Klassennamen
● Logging
● Autowiring

5
Groovy als Basis
● Dynamische typisierte Sprache
● Basiert auf JVM
● Bietet zusätzliche Features zu Java

Beispiele
def names = ['DOAG SIG Security', 'SIG MySQL', 'OpenWorld', 'SIG Database: Migration']
println names
def sigEvents = names.findAll{ it ==~ /.*SIG.*/ }.sort()
println "number of SIG events: ${sigEvents.size()}"
sigEvents.each { println it }

6
Einfaches Arbeiten mit Grails am Beispiel von GORM
● Hibernate ist der Standard
● Austausch Persistenzschicht ist möglich
● DB-Operationen erfolgen direkt am Domain-Objekt
Portlet.delete()
Portlet.save(flush:true)

● Queries einfach und intuitiv
Dynamic Finders

Portlet.findAllByPageAndPortal(‘Home’, portalname)

Where-Queries

PortletInst.where{
year(published) == 2013 && right != ‘public’
}
7
Plugins
● In sich abgeschlossenes Bundle von Funktionalitäten
● Wiederverwendbarkeit
● Modularisierung / Kapselung

● Kern-Plugins: hibernate, resources, jquery, …
● Plugins können selbst entwickelt werden
● Grails Plugin-Repository mit ca. 1000 Plugins für
● Frontend
● Integration von Drittsystemen
● Fachliche Funktionalitäten

● Persistenzschicht
● Nichtfunktionale Erweiterungen

8
Wo geht der Weg hin?
● Grails 2.4 (Anfang 2014)
● @CompileStatic Integration
● Spring 4.0 Support

● Groovy 2.2 Support

● Grails 3.0 (2014)
● Gradle als Build System
● Unabhängigkeit vom Servlet Container
● Application Profiles
● Modularisierung

http://www.morguefile.com/archive/display/58914

9
Was ist cool an Grails?
●
●
●
●

Herunterladen und loslegen
Groovy macht vieles kürzer und schneller
Zahlreiche Plugins steigern die Produktivität
Full-Stack Unterstützung / Continuous Integration
● Testing
● Coverage
● Build

http://www.morguefile.com/archive/display/196579

10
Agenda

Grails im Überblick
Anforderungen an Enterprise Applikationen

Enterprise Applikationen mit Grails

11
Was sind Enterprise Applikationen?

http://en.wikipedia.org/wiki/Enterprise_application

Eigenschaften von Enterprise Applikationen sind oftmals
●
●
●
●
●

Komplexe Geschäftslogik
Zugriff auf relationale DB’s
Distributed Computing
Verteilte Transaktionen
Datenaustausch zwischen
heterogenen Systemen
● Message-Oriented Middleware

●
●
●
●
●

Directory und Naming Services
Inter-Kommunikation (Mail, Dokumente, ..)
Security
Integration mit Legacy-Systemen
Integration mit anderer Geschäftsbereichen
/ Organisationen
● Zentrale Administration und Wartung
12
Anforderungen an Enterprise Applikationen
Eine Auswahl relevanter Kriterien
● Verfügbarkeit
● Ausfallsicherheit
● Wartbarkeit, Erweiterbarkeit, Strukturierungsmöglichkeit
● Integration
● Security
● Kein Daten-Verlust bzw. Korruption bei Fehlern
● Testbarkeit
● Betrieb und Monitoring

13
Agenda

Grails im Überblick
Anforderungen an Enterprise Applikationen

Enterprise Applikationen mit Grails

14
Externe Konfigurationsmöglichkeiten
● Auslesen aus der DB

● Auslagerung in externe Dateien (Java-Property- oder Groovy-Datei)

● JNDI (Java Naming and Directory Interface)
15
Nutzung von JNDI-Resourcen
● DB Anbindung
dataSource {
jndiName = 'TW_DEMO_DS'
dialect = 'org.hibernate.dialect.Oracle10gDialect'
driverClassName = 'oracle.jdbc.OracleDriver'
dbCreate = 'create-drop'
}

● Mail-Service
grails {
mail {
jndiName = 'TW_DEMO_MAIL_SESSION'
disabled = false
}
mail.default.from = 'noReply@twitter-demo.de'
}
16
Security
● Spring-Security für Authentifizierung und Autorisierung
Features
● Authentifizierungsketten
● Windows-Authentifizierung
● Authentifizierungsmechanismen für Twitter, Facebook und diverse andere
Provider
● AD- / LDAP-Anbindungen
● Hierarchische Rollen
● Einhängen von kundenspezifischen Mechanismen / Erweiterungen
● Switch-User Mechanismus

17
Fehlerbehandlung
● Exception-Handling: Verwendung des Java-Standard Mechanismus
● URL-Mapping / Error-Controller
"/admin/$action?" (controller:"user")

"500"(controller:"error", action:"show")
"404"(controller:"error", action:"show")

● Action Error Handlers für Controller
● Actions mit einer Exception als erstes Argument werden aufgerufen falls Exception

durch andere Action geworfen wird

class ListController {
...
def syntax(SearchSyntaxException e) {
render view: ' syntaxError'
}
}
18
Testbarkeit
● „Out of the box“ Testing
● Tests-Klassen werden bei create-* Kommandos miterzeugt
● Unterstützte Testarten
● Unit
● Integration

● Functional

● Viele Plugins für Testframeworks und Testdatengenerierung
● Fixtures, Build-Testdata
● Jasmine, jsUnit, Webtest

● Continuous Integration

19
Toolunterstützung
● Entwicklungsumgebung

● Testing

● Build

● Continuous Integration

20
Integration von Drittsystemen
eine Auswahl

21
Integrations-Szenario für JEE
Application Server
grails war

ejb ear
dms_if.jar

dms_if.jar
EJB-Aufruf

dms_ejb.jar

DB

DokumentenManagementSystem

22
Integrations-Szenario für JEE
resources.groovy

Aufruf im
Service

23
Produktivbetrieb
● Grails Deployment erfolgt über WAR-Datei
 Funktionalitäten der Java-Laufzeit-Umgebung sind verfügbar
● Vorhandene JEE Infrastruktur und KnowHow kann verwendet werden
● Clustering
● Load-Balancing

● Session Replication

● Logging
● Monitoring
● JMX
● App-Server Überwachungs-Tools
● Nagios

24
Clusterszenario für Produktivbetrieb
Hardware
Load-Balancer

Apache
Web Server 1

Tomcat 1
(Weblogic, …)

Server 1

Apache
Web Server 2

Tomcat 2
(Weblogic, …)

Tomcat 3
(Weblogic, …)

Database

Server 2

Tomcat 4
(Weblogic, …)

Server 3

(Oracle, MySQL, …)
Replication
Server 4

Database
25
Verhalten von Grails in „großen“ Projekten
Keine negativen Erfahrungen bei Applikationen mit
● 200 Domain-Klassen
● 20 GB großen Datenbanken
● über 400 PT Aufwand
● dem Anbinden mehrerer DB‘s in einer Applikation
● der Verwendung von mehreren eigenen Plugins

 Größere Vorhaben nach fachlichen Gesichtspunkten schneiden und Teile
über den Plugin-Mechanismus auszulagern.

26
Performance Groovy

What makes Groovy groovy? — JAX London 2013 by Guillaume Laforge
27
Support und Verbreitung
● Regelmäßige Releases
● Patches
● Community
● Mailinglisten
● Zahlreiche Blogs

● Dokumentation
● Bücher
● http://grails.org/doc/latest/

● Konferenzen
● Jährlich ca. 4 Konferenzen des Groovy/Grails Ökosystems

28
Warum Grails für Enterprise Applikationen einsetzen?
● Kompletter „Java-Stack“ ist
verfügbar
● Einfache Integration von
Drittsystemen
● Schnelle Umsetzung
neuer Anforderungen
● Einfaches Testing mit Continuous
Integration Unterstützung

http://www.morguefile.com/archive/display/865864

29
Was sollte beachtet werden?
● Strukturierung Code
● Schichtentrennung
● Keine schwergewichtige Taglibs

● Logik in Services

●
●
●
●

Vernachlässigung der Tests
Zielplattform
Version-Upgrades
Vorsicht bei „0“-er Versionen (2.3.0, …)

http://www.morguefile.com/archive/display/28600

30
Fazit
● Grails bringt Basis zur Umsetzung von
Enterprise Applikationen mit
● Tragfähigkeit für große Applikationen
ist in Praxis erprobt

● Fehlende Funktionalitäten können
bei Bedarf einfach selbst umgesetzt
werden

31
Vielen Dank!
exensio Gesellschaft für Informationstechnologie mbH
Am Rüppurrer Schloß 12
76199 Karlsruhe
http://www.exensio.de
http://blog.exensio.de
http://twitter.com/exensio

Partner:
1 of 32

Recommended

Enterprise 2.0 Portale mit Grails. Geht das? by
Enterprise 2.0 Portale mit Grails. Geht das?Enterprise 2.0 Portale mit Grails. Geht das?
Enterprise 2.0 Portale mit Grails. Geht das?Tobias Kraft
1.9K views40 slides
Grails im Überblick und in der Praxis by
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
2.4K views56 slides
Informatik Seminar Groovy Und Grails by
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grailsschmichri
790 views20 slides
GWT – Google Web Toolkit in der Praxis by
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisCenarion Information Systems GmbH
4.5K views41 slides
Eintauchen in MVP mit GWT by
Eintauchen in MVP mit GWT Eintauchen in MVP mit GWT
Eintauchen in MVP mit GWT Cenarion Information Systems GmbH
2.6K views38 slides
GWT: Eintauchen in MVP und Internationalisierung by
GWT: Eintauchen in MVP und InternationalisierungGWT: Eintauchen in MVP und Internationalisierung
GWT: Eintauchen in MVP und InternationalisierungCenarion Information Systems GmbH
2.7K views74 slides

More Related Content

What's hot

Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011) by
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Michael Kurz
1.9K views28 slides
JavaServer Faces 2.2 (Herbstcampus 2013) by
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)Michael Kurz
3.7K views43 slides
Zend Framework 2 feat. MongoDB by
Zend Framework 2 feat. MongoDBZend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDBRalf Eggert
2.6K views33 slides
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS by
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSWebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSOliver Hader
2.8K views23 slides
Metadatenbasierte Validierung by
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierungos890
1.8K views36 slides
Ü̈ber Ant und Maven zu SBT und Gradle by
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradleadesso AG
1.8K views32 slides

What's hot(20)

Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011) by Michael Kurz
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Michael Kurz1.9K views
JavaServer Faces 2.2 (Herbstcampus 2013) by Michael Kurz
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)
Michael Kurz3.7K views
Zend Framework 2 feat. MongoDB by Ralf Eggert
Zend Framework 2 feat. MongoDBZend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDB
Ralf Eggert2.6K views
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS by Oliver Hader
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSWebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
Oliver Hader2.8K views
Metadatenbasierte Validierung by os890
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierung
os8901.8K views
Ü̈ber Ant und Maven zu SBT und Gradle by adesso AG
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradle
adesso AG1.8K views
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P... by Oliver Hader
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
Oliver Hader1.8K views
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012) by Christian Janz
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
Christian Janz2.5K views
JAX 2015 - Continuous Integration mit Java & Javascript by dzuvic
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
dzuvic756 views
JSF und JPA effizient kombinieren (W-JAX 2011) by Michael Kurz
JSF und JPA effizient kombinieren (W-JAX 2011)JSF und JPA effizient kombinieren (W-JAX 2011)
JSF und JPA effizient kombinieren (W-JAX 2011)
Michael Kurz1.7K views
Progressive Web Apps mit Angular by Jens Binfet
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
Jens Binfet522 views
Verteilte Anwendungen bei Azure mit Docker und Kubernetes by Gregor Biswanger
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Gregor Biswanger1.4K views
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017 by Torsten Kleiber
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
Torsten Kleiber1.7K views
Agile Oracle database modeling and development - APEX Connect 2020 by Torsten Kleiber
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
Torsten Kleiber239 views
Web-GUIs mit Vaadin by gedoplan
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadin
gedoplan1.5K views
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen by NETWAYS
OSMC 2009 | NagVis 1.4 - What´s new by Lars MichaelsenOSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
NETWAYS68 views

Viewers also liked

EHI Marktzahlen 2011 by
EHI Marktzahlen 2011EHI Marktzahlen 2011
EHI Marktzahlen 2011figo GmbH
653 views7 slides
Presentación picaresca copia by
Presentación picaresca   copiaPresentación picaresca   copia
Presentación picaresca copiaDaniel Mariño
169 views10 slides
Liderazgo w by
Liderazgo wLiderazgo w
Liderazgo w3zkap
266 views12 slides
Glosario web 2 by
Glosario web 2Glosario web 2
Glosario web 2Kandy Mau
419 views30 slides
Liderazgo w by
Liderazgo wLiderazgo w
Liderazgo w3zkap
113 views12 slides
Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ... by
Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ...Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ...
Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ...Sco_1992
453 views22 slides

Viewers also liked(20)

EHI Marktzahlen 2011 by figo GmbH
EHI Marktzahlen 2011EHI Marktzahlen 2011
EHI Marktzahlen 2011
figo GmbH 653 views
Presentación picaresca copia by Daniel Mariño
Presentación picaresca   copiaPresentación picaresca   copia
Presentación picaresca copia
Daniel Mariño169 views
Liderazgo w by 3zkap
Liderazgo wLiderazgo w
Liderazgo w
3zkap266 views
Glosario web 2 by Kandy Mau
Glosario web 2Glosario web 2
Glosario web 2
Kandy Mau419 views
Liderazgo w by 3zkap
Liderazgo wLiderazgo w
Liderazgo w
3zkap113 views
Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ... by Sco_1992
Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ...Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ...
Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ...
Sco_1992453 views
Expsicion by RA Lopez
ExpsicionExpsicion
Expsicion
RA Lopez188 views
Presentación2 by danddy
Presentación2Presentación2
Presentación2
danddy237 views
CRIPTOGRAFÍA by fidsimmor
CRIPTOGRAFÍACRIPTOGRAFÍA
CRIPTOGRAFÍA
fidsimmor536 views
Ingresos recaudados por la sunat semana 2 by Alexander Molina
Ingresos recaudados por la sunat semana 2Ingresos recaudados por la sunat semana 2
Ingresos recaudados por la sunat semana 2
Alexander Molina630 views
M learning!!! #EHUMOOC by Karmele17
M learning!!! #EHUMOOCM learning!!! #EHUMOOC
M learning!!! #EHUMOOC
Karmele17445 views
Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana) by Manu Abad
Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)
Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)
Manu Abad632 views
Dn12 u3 a22_lvo by yizeth3111
Dn12 u3 a22_lvoDn12 u3 a22_lvo
Dn12 u3 a22_lvo
yizeth3111295 views

Similar to Kann ich mit Grails Enterprise Applikationen umsetzen?

TDD für Testmuffel by
TDD für TestmuffelTDD für Testmuffel
TDD für TestmuffelHendrik Lösch
419 views85 slides
Gradle - Beginner's Workshop (german) by
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Joachim Baumann
6.1K views27 slides
GWT by
GWTGWT
GWTDennis Simon
1.1K views52 slides
Gameduell Glassfish Migration by
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migrationdehms
1.1K views32 slides
Server Revolutions- Der Spring Source DM Server by
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
600 views44 slides
Von Maven zu Gradle in 45 Minuten by
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenQAware GmbH
978 views37 slides

Similar to Kann ich mit Grails Enterprise Applikationen umsetzen?(20)

Gradle - Beginner's Workshop (german) by Joachim Baumann
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
Joachim Baumann6.1K views
Gameduell Glassfish Migration by dehms
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migration
dehms1.1K views
Server Revolutions- Der Spring Source DM Server by Sandro Sonntag
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
Sandro Sonntag600 views
Von Maven zu Gradle in 45 Minuten by QAware GmbH
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 Minuten
QAware GmbH978 views
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded! by adesso AG
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
adesso AG4.4K views
Oracle WebLogic for DevOps by Andreas Koop
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
Andreas Koop1.4K views
3D - Spiel mit der Technik, Tekom 2016 by Robert Siegel
3D - Spiel mit der Technik, Tekom 20163D - Spiel mit der Technik, Tekom 2016
3D - Spiel mit der Technik, Tekom 2016
Robert Siegel891 views
A textual DSL for UI Developement - Lessons from the Practice by rmuecke
A textual DSL for UI Developement - Lessons from the PracticeA textual DSL for UI Developement - Lessons from the Practice
A textual DSL for UI Developement - Lessons from the Practice
rmuecke612 views
EnterJS 2015 - JavaScript von Morgen schon heute by Philipp Burgmer
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
Philipp Burgmer666 views
Java für eingebettete Systeme by rdmeyer
Java für eingebettete SystemeJava für eingebettete Systeme
Java für eingebettete Systeme
rdmeyer534 views
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m... by Marc Müller
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
Marc Müller91 views
Boost your APEX Deployment and Provisioning with Docker by Steven Grzbielok
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
Steven Grzbielok1.3K views
Oracle Data Warehouse Integration Builder - Ein Selbstversuch (DOAG 2013) by Trivadis
Oracle Data Warehouse Integration Builder - Ein Selbstversuch (DOAG 2013)Oracle Data Warehouse Integration Builder - Ein Selbstversuch (DOAG 2013)
Oracle Data Warehouse Integration Builder - Ein Selbstversuch (DOAG 2013)
Trivadis1.2K views
Ist Gradle auch für die APEX-Projekte? by MT AG
Ist Gradle auch für die APEX-Projekte?Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?
MT AG458 views

Kann ich mit Grails Enterprise Applikationen umsetzen?

  • 1. Kann ich mit Grails Enterprise Applikationen umsetzen? DOAG Nürnberg 21.11.2013 Tobias Kraft, exensio GmbH
  • 2. Agenda Grails im Überblick Anforderungen an Enterprise Applikationen Enterprise Applikationen mit Grails 2
  • 3. Was ist Grails? A Full-Stack Web (MVC) Framework ● Install & GO! ● Nahtlose Java Integration, wird auf der Java Virtual Machine (JVM) ausgeführt ● Ursprünglich inspiriert von Ruby on Rails ● Open Source ● Grails Historie ● Projekt-Beginn 2005 ● Grails 1.0 (02/2008) ● Grails 2.3.2 (11/2013, aktuelles Release) ● Basiert auf Groovy 3
  • 5. Schlüsselkonzepte Der Standard-Weg ist konfiguriert, aber Änderungen sind möglich ● Convention over Configuration (CoC) ● Don’t repeat Yourself (DRY) ● Beispiele ● Aufbau Projekt-Struktur ● DB-Mapping ● Klassennamen ● Logging ● Autowiring 5
  • 6. Groovy als Basis ● Dynamische typisierte Sprache ● Basiert auf JVM ● Bietet zusätzliche Features zu Java Beispiele def names = ['DOAG SIG Security', 'SIG MySQL', 'OpenWorld', 'SIG Database: Migration'] println names def sigEvents = names.findAll{ it ==~ /.*SIG.*/ }.sort() println "number of SIG events: ${sigEvents.size()}" sigEvents.each { println it } 6
  • 7. Einfaches Arbeiten mit Grails am Beispiel von GORM ● Hibernate ist der Standard ● Austausch Persistenzschicht ist möglich ● DB-Operationen erfolgen direkt am Domain-Objekt Portlet.delete() Portlet.save(flush:true) ● Queries einfach und intuitiv Dynamic Finders Portlet.findAllByPageAndPortal(‘Home’, portalname) Where-Queries PortletInst.where{ year(published) == 2013 && right != ‘public’ } 7
  • 8. Plugins ● In sich abgeschlossenes Bundle von Funktionalitäten ● Wiederverwendbarkeit ● Modularisierung / Kapselung ● Kern-Plugins: hibernate, resources, jquery, … ● Plugins können selbst entwickelt werden ● Grails Plugin-Repository mit ca. 1000 Plugins für ● Frontend ● Integration von Drittsystemen ● Fachliche Funktionalitäten ● Persistenzschicht ● Nichtfunktionale Erweiterungen 8
  • 9. Wo geht der Weg hin? ● Grails 2.4 (Anfang 2014) ● @CompileStatic Integration ● Spring 4.0 Support ● Groovy 2.2 Support ● Grails 3.0 (2014) ● Gradle als Build System ● Unabhängigkeit vom Servlet Container ● Application Profiles ● Modularisierung http://www.morguefile.com/archive/display/58914 9
  • 10. Was ist cool an Grails? ● ● ● ● Herunterladen und loslegen Groovy macht vieles kürzer und schneller Zahlreiche Plugins steigern die Produktivität Full-Stack Unterstützung / Continuous Integration ● Testing ● Coverage ● Build http://www.morguefile.com/archive/display/196579 10
  • 11. Agenda Grails im Überblick Anforderungen an Enterprise Applikationen Enterprise Applikationen mit Grails 11
  • 12. Was sind Enterprise Applikationen? http://en.wikipedia.org/wiki/Enterprise_application Eigenschaften von Enterprise Applikationen sind oftmals ● ● ● ● ● Komplexe Geschäftslogik Zugriff auf relationale DB’s Distributed Computing Verteilte Transaktionen Datenaustausch zwischen heterogenen Systemen ● Message-Oriented Middleware ● ● ● ● ● Directory und Naming Services Inter-Kommunikation (Mail, Dokumente, ..) Security Integration mit Legacy-Systemen Integration mit anderer Geschäftsbereichen / Organisationen ● Zentrale Administration und Wartung 12
  • 13. Anforderungen an Enterprise Applikationen Eine Auswahl relevanter Kriterien ● Verfügbarkeit ● Ausfallsicherheit ● Wartbarkeit, Erweiterbarkeit, Strukturierungsmöglichkeit ● Integration ● Security ● Kein Daten-Verlust bzw. Korruption bei Fehlern ● Testbarkeit ● Betrieb und Monitoring 13
  • 14. Agenda Grails im Überblick Anforderungen an Enterprise Applikationen Enterprise Applikationen mit Grails 14
  • 15. Externe Konfigurationsmöglichkeiten ● Auslesen aus der DB ● Auslagerung in externe Dateien (Java-Property- oder Groovy-Datei) ● JNDI (Java Naming and Directory Interface) 15
  • 16. Nutzung von JNDI-Resourcen ● DB Anbindung dataSource { jndiName = 'TW_DEMO_DS' dialect = 'org.hibernate.dialect.Oracle10gDialect' driverClassName = 'oracle.jdbc.OracleDriver' dbCreate = 'create-drop' } ● Mail-Service grails { mail { jndiName = 'TW_DEMO_MAIL_SESSION' disabled = false } mail.default.from = 'noReply@twitter-demo.de' } 16
  • 17. Security ● Spring-Security für Authentifizierung und Autorisierung Features ● Authentifizierungsketten ● Windows-Authentifizierung ● Authentifizierungsmechanismen für Twitter, Facebook und diverse andere Provider ● AD- / LDAP-Anbindungen ● Hierarchische Rollen ● Einhängen von kundenspezifischen Mechanismen / Erweiterungen ● Switch-User Mechanismus 17
  • 18. Fehlerbehandlung ● Exception-Handling: Verwendung des Java-Standard Mechanismus ● URL-Mapping / Error-Controller "/admin/$action?" (controller:"user") "500"(controller:"error", action:"show") "404"(controller:"error", action:"show") ● Action Error Handlers für Controller ● Actions mit einer Exception als erstes Argument werden aufgerufen falls Exception durch andere Action geworfen wird class ListController { ... def syntax(SearchSyntaxException e) { render view: ' syntaxError' } } 18
  • 19. Testbarkeit ● „Out of the box“ Testing ● Tests-Klassen werden bei create-* Kommandos miterzeugt ● Unterstützte Testarten ● Unit ● Integration ● Functional ● Viele Plugins für Testframeworks und Testdatengenerierung ● Fixtures, Build-Testdata ● Jasmine, jsUnit, Webtest ● Continuous Integration 19
  • 20. Toolunterstützung ● Entwicklungsumgebung ● Testing ● Build ● Continuous Integration 20
  • 22. Integrations-Szenario für JEE Application Server grails war ejb ear dms_if.jar dms_if.jar EJB-Aufruf dms_ejb.jar DB DokumentenManagementSystem 22
  • 24. Produktivbetrieb ● Grails Deployment erfolgt über WAR-Datei  Funktionalitäten der Java-Laufzeit-Umgebung sind verfügbar ● Vorhandene JEE Infrastruktur und KnowHow kann verwendet werden ● Clustering ● Load-Balancing ● Session Replication ● Logging ● Monitoring ● JMX ● App-Server Überwachungs-Tools ● Nagios 24
  • 25. Clusterszenario für Produktivbetrieb Hardware Load-Balancer Apache Web Server 1 Tomcat 1 (Weblogic, …) Server 1 Apache Web Server 2 Tomcat 2 (Weblogic, …) Tomcat 3 (Weblogic, …) Database Server 2 Tomcat 4 (Weblogic, …) Server 3 (Oracle, MySQL, …) Replication Server 4 Database 25
  • 26. Verhalten von Grails in „großen“ Projekten Keine negativen Erfahrungen bei Applikationen mit ● 200 Domain-Klassen ● 20 GB großen Datenbanken ● über 400 PT Aufwand ● dem Anbinden mehrerer DB‘s in einer Applikation ● der Verwendung von mehreren eigenen Plugins  Größere Vorhaben nach fachlichen Gesichtspunkten schneiden und Teile über den Plugin-Mechanismus auszulagern. 26
  • 27. Performance Groovy What makes Groovy groovy? — JAX London 2013 by Guillaume Laforge 27
  • 28. Support und Verbreitung ● Regelmäßige Releases ● Patches ● Community ● Mailinglisten ● Zahlreiche Blogs ● Dokumentation ● Bücher ● http://grails.org/doc/latest/ ● Konferenzen ● Jährlich ca. 4 Konferenzen des Groovy/Grails Ökosystems 28
  • 29. Warum Grails für Enterprise Applikationen einsetzen? ● Kompletter „Java-Stack“ ist verfügbar ● Einfache Integration von Drittsystemen ● Schnelle Umsetzung neuer Anforderungen ● Einfaches Testing mit Continuous Integration Unterstützung http://www.morguefile.com/archive/display/865864 29
  • 30. Was sollte beachtet werden? ● Strukturierung Code ● Schichtentrennung ● Keine schwergewichtige Taglibs ● Logik in Services ● ● ● ● Vernachlässigung der Tests Zielplattform Version-Upgrades Vorsicht bei „0“-er Versionen (2.3.0, …) http://www.morguefile.com/archive/display/28600 30
  • 31. Fazit ● Grails bringt Basis zur Umsetzung von Enterprise Applikationen mit ● Tragfähigkeit für große Applikationen ist in Praxis erprobt ● Fehlende Funktionalitäten können bei Bedarf einfach selbst umgesetzt werden 31
  • 32. Vielen Dank! exensio Gesellschaft für Informationstechnologie mbH Am Rüppurrer Schloß 12 76199 Karlsruhe http://www.exensio.de http://blog.exensio.de http://twitter.com/exensio Partner: