Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails...
Transcript of Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails...
![Page 1: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/1.jpg)
Grails - schneller zum Ziel - für Enterprise-Applikationen?
Tobias Kraft, exensio GmbH
![Page 2: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/2.jpg)
2
Agenda
Grails im Überblick
Anforderungen an Enterprise Applikationen
Enterprise Applikationen mit Grails
Wo ist Grails in der Entwicklung schnell?
![Page 3: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/3.jpg)
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.7 (03/2014, aktuelles Release)
● Basiert auf Groovy
![Page 4: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/4.jpg)
4
Aufbau von Grails
![Page 5: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/5.jpg)
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
![Page 6: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/6.jpg)
6
Groovy als Basis
● Basiert auf JVM
● Dynamisch typisierte Sprache
● Bietet zusätzliche Features zu Java
def names = ['Berlin Expert Days', 'JUG Saxony Day', 'Berlin Buzz Words'] println names def berlinConfs = names.findAll{ it ==~ /(?i).*Berlin.*/ }.sort() berlinConfs.each { println it } println "number of confs: ${berlinConfs.size()}"
Beispiele
![Page 7: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/7.jpg)
7
Groovy als Basis
● Basiert auf JVM
● Dynamisch typisierte Sprache
● Bietet zusätzliche Features zu Java
def names = ['Berlin Expert Days', 'JUG Saxony Day', 'Berlin Buzz Words'] println names def berlinConfs = names.findAll{ it ==~ /(?i).*Berlin.*/ }.sort() berlinConfs.each { println it } println "number of confs in Berlin: ${berlinConfs.size()}"
Beispiele List names = Arrays.asList("Berlin Expert Days", "JUG Saxony Day", "Berlin Buzz Words"); System.out.println(names); Predicate<String> p = (n) -> n.toString().matches("(?i).*Berlin.*"); Stream berlinConfs = names.stream().filter(p).sorted(); berlinConfs.forEach(n -> System.out.println(n)); System.out.println("number of confs: "+ names.stream().filter(p).count());
![Page 8: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/8.jpg)
8
Einfaches Arbeiten mit Grails am Beispiel von GORM
● Hibernate ist der Standard
● Austausch Persistenzschicht ist möglich
● DB-Operationen erfolgen direkt am Domain-Objekt
● Abfragen einfach und intuitiv
Portlet.findAllByPageAndPortal(‘Home’, portalname)
PortletInst.where{ year(published) == 2014 && right != ‘public’ }
Where-Queries
Dynamic Finders
Portlet.delete() Portlet.save(flush:true)
![Page 9: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/9.jpg)
9
Quo vadis Grails?
● Grails 2.4 (Mai 2014)
● @CompileStatic Integration
● Spring 4.0 Support
● Groovy 2.2 Support
● Grails 3.0 (Ende 2014)
● Gradle als Build System
● Unabhängigkeit vom Servlet Container
● Application Profiles / Micro Services
● Modularisierung / Plugin Platform
http://www.morguefile.com/archive/display/58914
![Page 10: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/10.jpg)
10
Agenda
Grails im Überblick
Anforderungen an Enterprise Applikationen
Enterprise Applikationen mit Grails
Wo ist Grails in der Entwicklung schnell?
![Page 11: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/11.jpg)
11
Anforderungen an Enterprise Applikationen
Eine Auswahl relevanter Kriterien
● Wartbarkeit, Erweiterbarkeit
● Strukturierungsmöglichkeit
● Integration / Datenaustausch
● Verteilte Transaktionen
● Security
● Testbarkeit
● Betrieb und Monitoring
● Verfügbarkeit
● Ausfallsicherheit
● Neue Anforderungen schnell umsetzbar
![Page 12: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/12.jpg)
12
Agenda
Grails im Überblick
Anforderungen an Enterprise Applikationen
Enterprise Applikationen mit Grails
Wo ist Grails in der Entwicklung schnell?
![Page 13: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/13.jpg)
13
Funktionalitäten der Java-Laufzeitumgebung sind verfügbar
● Direkte Integration von Java-Source-Code
● Vorhandene JEE Infrastruktur und KnowHow kann verwendet werden
● Deployment erfolgt über WAR-Datei
● Logging
● Monitoring
• JMX
• App-Server Tools
• Nagios
● Clustering
• Load-Balancing
• Session Replication
http://www.morguefile.com/archive/display/72852
![Page 14: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/14.jpg)
14
Integrations-Szenario für JEE
Application Server
DB
Dokumenten- Management-
System
EJB-Aufruf
grails war ejb ear
dms_if.jar dms_if.jar
dms_ejb.jar
![Page 15: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/15.jpg)
15
Integrations-Szenario für JEE
Aufruf im Service
resources.groovy
![Page 16: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/16.jpg)
16
Nutzung von JNDI-Resourcen
● DB Anbindung
● Mail-Service
grails { mail { jndiName = 'TW_DEMO_MAIL_SESSION' disabled = false } mail.default.from = '[email protected]' }
dataSource { jndiName = 'TW_DEMO_DS' dialect = 'org.hibernate.dialect.Oracle10gDialect' driverClassName = 'oracle.jdbc.OracleDriver' dbCreate = 'create-drop' }
![Page 17: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/17.jpg)
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
![Page 18: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/18.jpg)
18
Clusterszenario für Produktivbetrieb
Hardware Load-Balancer
Apache Web Server 1
Tomcat 1 (Weblogic, …)
Tomcat 2 (Weblogic, …)
Server 1 Apache Web Server 2
Tomcat 3 (Weblogic, …)
Tomcat 4 (Weblogic, …)
Server 2
Database (Oracle, MySQL, …)
Server 3
Database Server 4
Replication
![Page 19: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/19.jpg)
19
Verhalten von Grails in „großen“ Projekten
Keine negativen Erfahrungen bei Applikationen mit
● mehr als 100 Domain-Klassen
● mehr als 20 GB großen Datenbanken
● über 500 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.
![Page 20: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/20.jpg)
20
Agenda
Grails im Überblick
Anforderungen an Enterprise Applikationen
Enterprise Applikationen mit Grails
Wo ist Grails in der Entwicklung schnell?
![Page 21: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/21.jpg)
21
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
![Page 22: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/22.jpg)
22
Scaffolding
● Generierung von CRUD Funktionalitäten
● Unterscheidung zwischen
● Dynamic
● Static
● Layout kann angepasst werden
● Anwendungsszenarien ● Rapid Prototyping
● Ausgangsbasis
● Produktivbetrieb
grails generate-controller Project
![Page 23: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/23.jpg)
23
Einfaches Scaffolding Beispiel
![Page 24: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/24.jpg)
24
Testing
● „Out of the box“ Testing
● Test-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
![Page 25: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/25.jpg)
25
Testing mit Spock
● Bestandteil von Grails seit Version 2.3
● Testframework für Groovy und Java
● Ausdrucksstarke DSL für Spezifizierung der Tests
● Ausprobieren mit Spock Web Console
http://meetspock.appspot.com/
● Unterstützung für
● Data Driven Testing
● Interaction Based Testing
(1..3) * tweetService.message("hello")
![Page 26: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/26.jpg)
26
Testing mit Spock
![Page 27: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/27.jpg)
27
Backend Integration einfach gemacht
● JSON-Slurper
● File-Import
def jsonText = '''{ "message": { "header": { "from": " [email protected]"}, "body": "Hello JUG Saxony Day." } }''' def mail = new JsonSlurper().parseText(jsonText) assert mail.message.body == "Hello JUG Saxony Day."
new File('/data/').eachFileMatch( ~".*xml" ) { f -> if ( f.lastModified() <= yesterday ) { def rootNode = new XmlSlurper().parse(f) assert rootNode.four.text() == "My text!" …. } }
![Page 28: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/28.jpg)
28
Integration von Drittsystemen über Plugins eine Auswahl
![Page 29: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/29.jpg)
29
Performance Groovy
What makes Groovy groovy? — JAX London 2013 by Guillaume Laforge
![Page 30: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/30.jpg)
30
Was ist cool und schnell an Grails?
http://www.morguefile.com/archive/display/196579
● Herunterladen und loslegen
● Kompletter Java-Stack ist verfügbar
● Groovy macht vieles kürzer und schneller
● Zahlreiche Plugins steigern die Produktivität
● Full-Stack Unterstützung / Continuous Integration ● Testing
● Coverage
● Build
![Page 31: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/31.jpg)
31
Was sollte beachtet werden?
http://www.morguefile.com/archive/display/28600
● Strukturierung Code ● Schichtentrennung
● Keine schwergewichtige Taglibs
● Logik in Services
● Keine Vernachlässigung der Tests
● Zielplattform
● Version-Upgrades
● Vorsicht bei „0“-er Versionen (2.3.0,…)
![Page 32: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/32.jpg)
32
Fazit ● Grails bringt Basis zur Umsetzung von
Enterprise Applikationen mit
● Tragfähigkeit für große Applikationen ist in der Praxis erprobt
● Einiges geht schneller und einfacher wie in der klassischen Java-Welt
● Die Java-Welt kann komplett mit verwendet werden
![Page 33: Grails - schneller zum Ziel - für Enterprise-Applikationen? · 2019. 10. 21. · Grails Plugin-Repository mit ca. 1000 Plugins für ... Logik in Services Keine Vernachlässigung](https://reader033.fdocument.pub/reader033/viewer/2022052014/602bda293f205d0b26455da0/html5/thumbnails/33.jpg)
Fragen?
Vielen Dank!
http://blog.exensio.de
@tokraft
Partner: