0
Grails & the World of                                    Tomorrow                        Peter Ledbrook, Developer Advocat...
NoSQL   HTML5.jsCloud           Social                         2
HTML5.jsWeb sites                ApplicationsServer-side HTML         Client-side HTMLLow interactivity        High intera...
HTML5.jsWeb sites                     ApplicationsServer-side HTML              Client-side HTMLLow interactivity         ...
HTML5.jsWeb sites                   ApplicationsServer-side HTML            Client-side HTMLLow interactivity           Hi...
HTML5.js                       We’re going this way!Web sites                                       ApplicationsServer-sid...
Google I/O 2012     400 millionAndroid activations to date  Apple WWDC 2012     365 million iOS devices sold to date      ...
Is this the end for server-side          templates?                                  8
NoSQL / Big DataData the way you want it!                            9
NoSQL / Big Data     Everyone has interesting data                                     10
11
Cloud   Scaling                     Reduced                              capital costs                Easier             a...
Cloud  Ephemeral                      Session  filesystems                  management                No Multicast        ...
14
A typical Grails app                             HTTP              Controller            View               Service       ...
16
What do these cars have in common?                                     17
Same platform, different components                                      18
Core Grails == Chassis   Plugins == Components                           19
How can Grails help - Rich UIs?       URL mappings for REST       JSON & XML converters       Resources (for JS & CSS)    ...
Static resource handling                           App   Kickstart Bootstrap                                         Shiro...
Scaffolding libraries   > grails install-plugin jquery-mobile-scaffolding   > grails install-mobile-templates   > grails c...
How can Grails help - Social?Simplified OAuth via OAuth plugin:oauth {  providers {    twitter {        api = TwitterApi  ...
How can Grails help - Social?<oauth:connect provider="twitter"> Connect to Twitter</oauth:connect>class MyService {   def ...
How can Grails help - NoSQL?          Accessible NoSQL via GORM                 Domain Model                    GORM      ...
How can Grails help - Cloud?Solve the caching problem with the Cache plugin                         Cache plugin          ...
27
PaaS deployment                                       Rabbitmq  Redis Plugin    App                   Plugin              ...
What about horizontal scalability?                                     29
Introducing CQRSUpdates                                         Store                                        changes      ...
Event bus (Platform Core plugin)                                   Update    Call REST           Save entity    Index   re...
Event bus (Events SI plugin)                                     Update       Call REST           Save entity      Index  ...
Event bus (Events Push plugin)                        Browser                        Event Bridge                        E...
grailsTodos sample                     34
grailsTodos sample                     35
grailsTodos sample                     36
grailsTodos sample                     37
grailsTodos sampleTry it:          http://grailstodos.cloudfoundry.com/todos/See the code:          http://github.com/smal...
Enabling plugin authors                          39
More Platform Core                   Security API             Who is the current user?         Does the user have a partic...
More Platform Core                       Navigation API  Menu                                        Action               ...
More Platform Core                  Config API               Declare config options              Automatic namespacing    ...
More Platform Core                        Convention API   e.g.     static searchable = { ... }              @Taggable    ...
Platform UI                      Themes                            +                       UI tags         e.g. App Info p...
Project archetypes?                      45
SQL database Multi page   CRUD   jQuery               46
SQL for writeRedis for readREST endpoints  AngularJS                 47
Events     Spring IntegrationWeb Sockets (with emulation)                               48
Summary• The way applications are architected will change  – Websites will still be built (GSP not gone yet)  – Not everyo...
More info• w:   http://grails.org/• f:   http://grails.org/Mailing+Lists• e:   pledbrook@vmware.com• t:   pledbrook• b:   ...
Q&A      51
Upcoming SlideShare
Loading in...5
×

Grails & the World of Tomorrow

936

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
936
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
28
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×