SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
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:

Contenu connexe

Tendances

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)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Michael Kurz
 
JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)Michael Kurz
 
Zend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDBZend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDBRalf Eggert
 
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSWebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSOliver Hader
 
Metadatenbasierte Validierung
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierungos890
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈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
 
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...
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...Oliver Hader
 
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)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)Christian Janz
 
Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020Torsten Kleiber
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascriptdzuvic
 
JSF und JPA effizient kombinieren (W-JAX 2011)
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 Kurz
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit AngularJens Binfet
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
 
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
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 2017Torsten Kleiber
 
Agile Oracle database modeling and development - APEX Connect 2020
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 2020Torsten Kleiber
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadingedoplan
 
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
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 MichaelsenNETWAYS
 

Tendances (20)

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)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
 
JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)
 
Zend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDBZend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDB
 
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSWebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
 
Metadatenbasierte Validierung
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierung
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradle
 
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...
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
 
Web Components
Web ComponentsWeb Components
Web Components
 
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)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
 
Query Result Caching
Query Result CachingQuery Result Caching
Query Result Caching
 
Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
JSF und JPA effizient kombinieren (W-JAX 2011)
JSF und JPA effizient kombinieren (W-JAX 2011)JSF und JPA effizient kombinieren (W-JAX 2011)
JSF und JPA effizient kombinieren (W-JAX 2011)
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
 
JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
Plsql drum test automatisiere, wer sich sich ewig bindet! - DOAG 2017
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
 
Agile Oracle database modeling and development - APEX Connect 2020
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
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadin
 
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
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
 

En vedette

EHI Marktzahlen 2011
EHI Marktzahlen 2011EHI Marktzahlen 2011
EHI Marktzahlen 2011figo GmbH
 
Presentación picaresca copia
Presentación picaresca   copiaPresentación picaresca   copia
Presentación picaresca copiaDaniel Mariño
 
Liderazgo w
Liderazgo wLiderazgo w
Liderazgo w3zkap
 
Glosario web 2
Glosario web 2Glosario web 2
Glosario web 2Kandy Mau
 
Liderazgo w
Liderazgo wLiderazgo w
Liderazgo w3zkap
 
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. ...
Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ...Sco_1992
 
Presentación2
Presentación2Presentación2
Presentación2danddy
 
CRIPTOGRAFÍA
CRIPTOGRAFÍACRIPTOGRAFÍA
CRIPTOGRAFÍAfidsimmor
 
Ingresos recaudados por la sunat semana 2
Ingresos recaudados por la sunat semana 2Ingresos recaudados por la sunat semana 2
Ingresos recaudados por la sunat semana 2Alexander Molina
 
M learning!!! #EHUMOOC
M learning!!! #EHUMOOCM learning!!! #EHUMOOC
M learning!!! #EHUMOOCKarmele17
 
Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)
Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)
Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)Manu Abad
 
Dn12 u3 a22_lvo
Dn12 u3 a22_lvoDn12 u3 a22_lvo
Dn12 u3 a22_lvoyizeth3111
 

En vedette (20)

EHI Marktzahlen 2011
EHI Marktzahlen 2011EHI Marktzahlen 2011
EHI Marktzahlen 2011
 
Presentación picaresca copia
Presentación picaresca   copiaPresentación picaresca   copia
Presentación picaresca copia
 
Liderazgo w
Liderazgo wLiderazgo w
Liderazgo w
 
Glosario web 2
Glosario web 2Glosario web 2
Glosario web 2
 
Liderazgo w
Liderazgo wLiderazgo w
Liderazgo w
 
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. ...
Presentación de la vida controvertida de j. rousseau. sergio camacho onieva. ...
 
Expsicion
ExpsicionExpsicion
Expsicion
 
Auditoria de mercadotecnia, 08 08-14
Auditoria de mercadotecnia, 08 08-14Auditoria de mercadotecnia, 08 08-14
Auditoria de mercadotecnia, 08 08-14
 
Wir sind alle anders
Wir sind alle andersWir sind alle anders
Wir sind alle anders
 
Presentación2
Presentación2Presentación2
Presentación2
 
Círculos y cuadrados
Círculos y cuadradosCírculos y cuadrados
Círculos y cuadrados
 
Ajax, Comet & Co.
Ajax, Comet & Co.Ajax, Comet & Co.
Ajax, Comet & Co.
 
Trabajo casos sena
Trabajo casos senaTrabajo casos sena
Trabajo casos sena
 
CRIPTOGRAFÍA
CRIPTOGRAFÍACRIPTOGRAFÍA
CRIPTOGRAFÍA
 
Ingresos recaudados por la sunat semana 2
Ingresos recaudados por la sunat semana 2Ingresos recaudados por la sunat semana 2
Ingresos recaudados por la sunat semana 2
 
M learning!!! #EHUMOOC
M learning!!! #EHUMOOCM learning!!! #EHUMOOC
M learning!!! #EHUMOOC
 
Tema 8
Tema 8Tema 8
Tema 8
 
Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)
Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)
Terrazas marinas pleistocenas en Bahoruco (Rep. Dominicana)
 
Dn12 u3 a22_lvo
Dn12 u3 a22_lvoDn12 u3 a22_lvo
Dn12 u3 a22_lvo
 
Teclado
TecladoTeclado
Teclado
 

Similaire à Kann ich mit Grails Enterprise Applikationen umsetzen?

Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Joachim Baumann
 
Gameduell Glassfish Migration
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migrationdehms
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
Von Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenQAware GmbH
 
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!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!adesso AG
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOpsAndreas Koop
 
3D - Spiel mit der Technik, Tekom 2016
3D - Spiel mit der Technik, Tekom 20163D - Spiel mit der Technik, Tekom 2016
3D - Spiel mit der Technik, Tekom 2016Robert Siegel
 
Deployment mit Ansible auf JBoss Servern
Deployment mit Ansible auf JBoss ServernDeployment mit Ansible auf JBoss Servern
Deployment mit Ansible auf JBoss ServernHarald Schmaldienst
 
A textual DSL for UI Developement - Lessons from the Practice
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 Practicermuecke
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heutePhilipp Burgmer
 
Java für eingebettete Systeme
Java für eingebettete SystemeJava für eingebettete Systeme
Java für eingebettete Systemerdmeyer
 
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...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 
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)
Oracle Data Warehouse Integration Builder - Ein Selbstversuch (DOAG 2013)Trivadis
 
CCD 2013: JIRA goes i18n
CCD 2013: JIRA goes i18nCCD 2013: JIRA goes i18n
CCD 2013: JIRA goes i18nCommunardo GmbH
 
Ist Gradle auch für die APEX-Projekte?
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 AG
 

Similaire à Kann ich mit Grails Enterprise Applikationen umsetzen? (20)

TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
GWT
GWTGWT
GWT
 
Gameduell Glassfish Migration
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migration
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
Von Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 Minuten
 
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!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
 
Oracle WebLogic for DevOps
Oracle WebLogic for DevOpsOracle WebLogic for DevOps
Oracle WebLogic for DevOps
 
3D - Spiel mit der Technik, Tekom 2016
3D - Spiel mit der Technik, Tekom 20163D - Spiel mit der Technik, Tekom 2016
3D - Spiel mit der Technik, Tekom 2016
 
Deployment mit Ansible auf JBoss Servern
Deployment mit Ansible auf JBoss ServernDeployment mit Ansible auf JBoss Servern
Deployment mit Ansible auf JBoss Servern
 
Infrastructure Solution Day | Core
Infrastructure Solution Day | CoreInfrastructure Solution Day | Core
Infrastructure Solution Day | Core
 
A textual DSL for UI Developement - Lessons from the Practice
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
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
 
Java für eingebettete Systeme
Java für eingebettete SystemeJava für eingebettete Systeme
Java für eingebettete Systeme
 
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...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
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)
Oracle Data Warehouse Integration Builder - Ein Selbstversuch (DOAG 2013)
 
CCD 2013: JIRA goes i18n
CCD 2013: JIRA goes i18nCCD 2013: JIRA goes i18n
CCD 2013: JIRA goes i18n
 
Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?Ist Gradle auch für die APEX-Projekte?
Ist Gradle auch für die APEX-Projekte?
 

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: