Grails & the World of Tomorrow

1,390 views

Published on

This is the Grails WOT presentation delivered at SpringOne 2GX.

It looks at the current state of the development landscape, how Grails can help you work with all the new technologies, and what the future might hold.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,390
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
33
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Grails & the World of Tomorrow

  1. 1. Grails & the World of Tomorrow Peter Ledbrook, Developer Advocate pledbrook@vmware.com / @pledbrook© 2012 SpringOne 2GX. All rights reserved. Do not distribute without permission. 1
  2. 2. NoSQL HTML5.jsCloud Social 2
  3. 3. HTML5.jsWeb sites ApplicationsServer-side HTML Client-side HTMLLow interactivity High interactivityNo offline Offline Wikipedia 3
  4. 4. HTML5.jsWeb sites ApplicationsServer-side HTML Client-side HTMLLow interactivity High interactivityNo offline Offline Twitter 4
  5. 5. HTML5.jsWeb sites ApplicationsServer-side HTML Client-side HTMLLow interactivity High interactivityNo offline Offline GMail 5
  6. 6. HTML5.js We’re going this way!Web sites ApplicationsServer-side HTML Client-side HTMLLow interactivity High interactivityNo offline Offline Example: REST + JSON Backbone.js + Moustache 6
  7. 7. Google I/O 2012 400 millionAndroid activations to date Apple WWDC 2012 365 million iOS devices sold to date 7
  8. 8. Is this the end for server-side templates? 8
  9. 9. NoSQL / Big DataData the way you want it! 9
  10. 10. NoSQL / Big Data Everyone has interesting data 10
  11. 11. 11
  12. 12. Cloud Scaling Reduced capital costs Easier administration 12
  13. 13. Cloud Ephemeral Session filesystems management No Multicast 13
  14. 14. 14
  15. 15. A typical Grails app HTTP Controller View Service GORM/Hibernate Database 15
  16. 16. 16
  17. 17. What do these cars have in common? 17
  18. 18. Same platform, different components 18
  19. 19. Core Grails == Chassis Plugins == Components 19
  20. 20. How can Grails help - Rich UIs? URL mappings for REST JSON & XML converters Resources (for JS & CSS) zipping, caching, compression 20
  21. 21. Static resource handling App Kickstart Bootstrap Shiro UI Plugin Plugin Twitter Bootstrap Plugin 21
  22. 22. Scaffolding libraries > grails install-plugin jquery-mobile-scaffolding > grails install-mobile-templates > grails create-domain-class org.example.Todo <edit Book.groovy> > grails generate-all org.example.Todo > grails run-app 22
  23. 23. How can Grails help - Social?Simplified OAuth via OAuth plugin:oauth { providers { twitter { api = TwitterApi key = my-key secret = my-secret successUri = / failureUri = / } }} 23
  24. 24. How can Grails help - Social?<oauth:connect provider="twitter"> Connect to Twitter</oauth:connect>class MyService { def oauthService def myMethod() { def twitterUsers = oauthService.getTwitterResource( twitterAccessToken, "http://api.yourprovider.com/users/list") ... }} 24
  25. 25. How can Grails help - NoSQL? Accessible NoSQL via GORM Domain Model GORM 25
  26. 26. How can Grails help - Cloud?Solve the caching problem with the Cache plugin Cache plugin Ehcache RedisFor HTTP sessions, Database Session plugin Database Session plugin MongoDB Cookie 26
  27. 27. 27
  28. 28. PaaS deployment Rabbitmq Redis Plugin App Plugin > grails cf-push 28
  29. 29. What about horizontal scalability? 29
  30. 30. Introducing CQRSUpdates Store changes Concurrency via event bus Views Separate data stores for queries 30
  31. 31. Event bus (Platform Core plugin) Update Call REST Save entity Index read DBs service Event Bus Plugins Plugins Plugins Application 31
  32. 32. Event bus (Events SI plugin) Update Call REST Save entity Index read DBs service Event Bus (SI) AMQP Plugins Plugins Plugins Application 32
  33. 33. Event bus (Events Push plugin) Browser Event Bridge Event Bus (SI) Plugins Plugins Plugins Application 33
  34. 34. grailsTodos sample 34
  35. 35. grailsTodos sample 35
  36. 36. grailsTodos sample 36
  37. 37. grailsTodos sample 37
  38. 38. grailsTodos sampleTry it: http://grailstodos.cloudfoundry.com/todos/See the code: http://github.com/smaldini/grailsTodos 38
  39. 39. Enabling plugin authors 39
  40. 40. More Platform Core Security API Who is the current user? Does the user have a particular role? Is user permitted to do something? 40
  41. 41. More Platform Core Navigation API Menu Action Action Application Plugin 41
  42. 42. More Platform Core Config API Declare config options Automatic namespacing Default values & automatic merging 42
  43. 43. More Platform Core Convention API e.g. static searchable = { ... } @Taggable Convention overrides! 43
  44. 44. Platform UI Themes + UI tags e.g. App Info plugin + Bootstrap Kickstart 44
  45. 45. Project archetypes? 45
  46. 46. SQL database Multi page CRUD jQuery 46
  47. 47. SQL for writeRedis for readREST endpoints AngularJS 47
  48. 48. Events Spring IntegrationWeb Sockets (with emulation) 48
  49. 49. Summary• The way applications are architected will change – Websites will still be built (GSP not gone yet) – Not everyone will need the same architecture – Project archetypes and scaffolding!• No single framework has everything you need• Pick and choose the appropriate components for your 49
  50. 50. More info• w: http://grails.org/• f: http://grails.org/Mailing+Lists• e: pledbrook@vmware.com• t: pledbrook• b: http://blog.springsource.com/author/peter-ledbrook/ 50
  51. 51. Q&A 51

×