SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
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
NoSQL   HTML5.js



Cloud           Social




                         2
HTML5.js



Web sites                Applications


Server-side HTML         Client-side HTML
Low interactivity        High interactivity
No offline               Offline




             Wikipedia




                                              3
HTML5.js



Web sites                     Applications


Server-side HTML              Client-side HTML
Low interactivity             High interactivity
No offline                    Offline




                    Twitter




                                                   4
HTML5.js



Web sites                   Applications


Server-side HTML            Client-side HTML
Low interactivity           High interactivity
No offline                  Offline




                    GMail




                                                 5
HTML5.js

                       We’re going this way!

Web sites                                       Applications


Server-side HTML                                Client-side HTML
Low interactivity                               High interactivity
No offline                                      Offline




                    Example:
                           REST + JSON
                      Backbone.js + Moustache


                                                                     6
Google I/O 2012


     400 million

Android activations to date




  Apple WWDC 2012


     365 million

 iOS devices sold to date



                              7
Is this the end for server-side
          templates?




                                  8
NoSQL / Big Data

Data the way you want it!




                            9
NoSQL / Big Data




     Everyone has interesting data




                                     10
11
Cloud



   Scaling                     Reduced
                              capital costs




                Easier
             administration



                                              12
Cloud


  Ephemeral                      Session
  filesystems                  management




                No Multicast




                                            13
14
A typical Grails app

                             HTTP



              Controller            View




               Service




           GORM/Hibernate



                  Database




                                           15
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)




                       zipping, caching, compression




                                                       20
Static resource handling


                           App



   Kickstart Bootstrap
                                         Shiro UI Plugin
         Plugin




                     Twitter Bootstrap
                           Plugin



                                                           21
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
How can Grails help - Social?


Simplified OAuth via OAuth plugin:

oauth {
  providers {
    twitter {
        api = TwitterApi
        key = 'my-key'
        secret = 'my-secret'
        successUri = '/'
        failureUri = '/'
    }
  }
}



                                     23
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
How can Grails help - NoSQL?


          Accessible NoSQL via GORM

                 Domain Model




                    GORM




                                      25
How can Grails help - Cloud?

Solve the caching problem with the Cache plugin

                         Cache plugin



               Ehcache                  Redis

For HTTP sessions, Database Session plugin
                  Database Session plugin



               MongoDB                  Cookie
                                                  26
27
PaaS deployment

                                       Rabbitmq
  Redis Plugin    App                   Plugin


                    > grails cf-push




                                                  28
What about horizontal scalability?




                                     29
Introducing CQRS

Updates
                                         Store
                                        changes




                                 Concurrency
                                 via event bus


 Views


                     Separate data
                   stores for queries


                                                  30
Event bus (Platform Core plugin)


                                   Update    Call REST
           Save entity    Index   read DBs    service




                          Event Bus




              Plugins
               Plugins
                Plugins               Application




                                                         31
Event bus (Events SI plugin)


                                     Update       Call REST
           Save entity      Index   read DBs       service




                          Event Bus (SI)                      AMQP



              Plugins
               Plugins
                Plugins                    Application




                                                                     32
Event bus (Events Push plugin)

                        Browser


                        Event Bridge




                        Event Bus (SI)




            Plugins
             Plugins
              Plugins                    Application




                                                       33
grailsTodos sample




                     34
grailsTodos sample




                     35
grailsTodos sample




                     36
grailsTodos sample




                     37
grailsTodos sample


Try it:

          http://grailstodos.cloudfoundry.com/todos/



See the code:

          http://github.com/smaldini/grailsTodos




                                                       38
Enabling plugin authors




                          39
More Platform Core


                   Security API


             Who is the current user?


         Does the user have a particular role?


         Is user permitted to do something?




                                                 40
More Platform Core


                       Navigation API


  Menu


                                        Action



                                        Action




         Application                    Plugin



                                                 41
More Platform Core


                  Config API


               Declare config options


              Automatic namespacing


         Default values & automatic merging




                                              42
More Platform Core


                        Convention API

   e.g.

     static searchable = { ... }              @Taggable




                      Convention overrides!



                                                          43
Platform UI




                      Themes
                            +
                       UI tags


         e.g. App Info plugin + Bootstrap Kickstart



                                                      44
Project archetypes?




                      45
SQL database

 Multi page

   CRUD

   jQuery



               46
SQL for write

Redis for read

REST endpoints

  AngularJS


                 47
Events


     Spring Integration


Web Sockets (with emulation)



                               48
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
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
Q&A




      51

Mais conteúdo relacionado

Mais procurados

Klout case-study-v1.0
Klout case-study-v1.0Klout case-study-v1.0
Klout case-study-v1.0Binh Tran
 
Introduction to cloud-native application development: with Heroku and Spring ...
Introduction to cloud-native application development: with Heroku and Spring ...Introduction to cloud-native application development: with Heroku and Spring ...
Introduction to cloud-native application development: with Heroku and Spring ...Roberto Casadei
 
Modern Web Cloud Architecture based on Google Technologies
Modern Web Cloud Architecture based on Google TechnologiesModern Web Cloud Architecture based on Google Technologies
Modern Web Cloud Architecture based on Google TechnologiesMichael Ludwig
 
Ibm test & development cloud + rational service delivery services platform
Ibm test & development cloud + rational service delivery services platformIbm test & development cloud + rational service delivery services platform
Ibm test & development cloud + rational service delivery services platformBabak Hosseinzadeh
 
The Reality of DIY Kubernetes vs. PKS
The Reality of DIY Kubernetes vs. PKSThe Reality of DIY Kubernetes vs. PKS
The Reality of DIY Kubernetes vs. PKSVMware Tanzu
 
Spring Cloud in a Nutshell
Spring Cloud in a NutshellSpring Cloud in a Nutshell
Spring Cloud in a NutshellTsuyoshi Miyake
 

Mais procurados (8)

Klout case-study-v1.0
Klout case-study-v1.0Klout case-study-v1.0
Klout case-study-v1.0
 
Cloud foundry meetup 12112013
Cloud foundry meetup 12112013Cloud foundry meetup 12112013
Cloud foundry meetup 12112013
 
Introduction to cloud-native application development: with Heroku and Spring ...
Introduction to cloud-native application development: with Heroku and Spring ...Introduction to cloud-native application development: with Heroku and Spring ...
Introduction to cloud-native application development: with Heroku and Spring ...
 
Cloud Foundry May 1 2014
Cloud Foundry May 1 2014Cloud Foundry May 1 2014
Cloud Foundry May 1 2014
 
Modern Web Cloud Architecture based on Google Technologies
Modern Web Cloud Architecture based on Google TechnologiesModern Web Cloud Architecture based on Google Technologies
Modern Web Cloud Architecture based on Google Technologies
 
Ibm test & development cloud + rational service delivery services platform
Ibm test & development cloud + rational service delivery services platformIbm test & development cloud + rational service delivery services platform
Ibm test & development cloud + rational service delivery services platform
 
The Reality of DIY Kubernetes vs. PKS
The Reality of DIY Kubernetes vs. PKSThe Reality of DIY Kubernetes vs. PKS
The Reality of DIY Kubernetes vs. PKS
 
Spring Cloud in a Nutshell
Spring Cloud in a NutshellSpring Cloud in a Nutshell
Spring Cloud in a Nutshell
 

Destaque

Improving your Gradle builds
Improving your Gradle buildsImproving your Gradle builds
Improving your Gradle buildsPeter Ledbrook
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation toolIoan Eugen Stan
 
Gradle,the new build system for android
Gradle,the new build system for androidGradle,the new build system for android
Gradle,the new build system for androidzhang ghui
 
Top 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleTop 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleStrannik_2013
 
An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersKostas Saidis
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Ryan Cuprak
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build ToolShinya Mochida
 

Destaque (10)

Apache Maven for AT/QC
Apache Maven for AT/QCApache Maven for AT/QC
Apache Maven for AT/QC
 
Improving your Gradle builds
Improving your Gradle buildsImproving your Gradle builds
Improving your Gradle builds
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation tool
 
Gradle,the new build system for android
Gradle,the new build system for androidGradle,the new build system for android
Gradle,the new build system for android
 
Top 10 reasons to migrate to Gradle
Top 10 reasons to migrate to GradleTop 10 reasons to migrate to Gradle
Top 10 reasons to migrate to Gradle
 
An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java Developers
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build Tool
 
Gradle - Build System
Gradle - Build SystemGradle - Build System
Gradle - Build System
 

Semelhante a Grails & the World of Tomorrow

Grails and the World of Tomorrow
Grails and the World of TomorrowGrails and the World of Tomorrow
Grails and the World of TomorrowPeter Ledbrook
 
Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Steven Evatt
 
App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010Chris Schalk
 
Open Cloud Frameworks - Open Standards for the Cloud Community
Open Cloud Frameworks - Open Standards for the Cloud CommunityOpen Cloud Frameworks - Open Standards for the Cloud Community
Open Cloud Frameworks - Open Standards for the Cloud Communitybefreax
 
Kubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 UpdateKubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 UpdateMatthew Farina
 
What's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for BusinessWhat's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for BusinessChris Schalk
 
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Amazon Web Services
 
Accelerate your digital transformation
Accelerate your digital transformationAccelerate your digital transformation
Accelerate your digital transformationMichael Dawson
 
Yannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflowYannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflowMarynaHoldaieva
 
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...Lviv Startup Club
 
DICE & Cloudify – Quality Big Data Made Easy
DICE & Cloudify – Quality Big Data Made EasyDICE & Cloudify – Quality Big Data Made Easy
DICE & Cloudify – Quality Big Data Made EasyCloudify Community
 
Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10IMC Institute
 
Open Source für den geschäftskritischen Einsatz
Open Source für den geschäftskritischen EinsatzOpen Source für den geschäftskritischen Einsatz
Open Source für den geschäftskritischen EinsatzMariaDB plc
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the CloudCloudBees
 
App Engine Presentation @ SFJUG Sep 2010
App Engine Presentation @ SFJUG Sep 2010App Engine Presentation @ SFJUG Sep 2010
App Engine Presentation @ SFJUG Sep 2010Chris Schalk
 
GR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf
 
Adopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf EuropeAdopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf EuropeKlausBaumecker
 

Semelhante a Grails & the World of Tomorrow (20)

Grails and the World of Tomorrow
Grails and the World of TomorrowGrails and the World of Tomorrow
Grails and the World of Tomorrow
 
Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009
 
App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010
 
Open Cloud Frameworks - Open Standards for the Cloud Community
Open Cloud Frameworks - Open Standards for the Cloud CommunityOpen Cloud Frameworks - Open Standards for the Cloud Community
Open Cloud Frameworks - Open Standards for the Cloud Community
 
Kubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 UpdateKubecon SIG Apps December 2017 Update
Kubecon SIG Apps December 2017 Update
 
Cloud computing: highlights
Cloud computing: highlightsCloud computing: highlights
Cloud computing: highlights
 
What's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for BusinessWhat's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for Business
 
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
 
Accelerate your digital transformation
Accelerate your digital transformationAccelerate your digital transformation
Accelerate your digital transformation
 
Barak Regev - Google Cloud Platform
Barak Regev - Google Cloud PlatformBarak Regev - Google Cloud Platform
Barak Regev - Google Cloud Platform
 
Yannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflowYannis Zarkadas. Enterprise data science workflows on kubeflow
Yannis Zarkadas. Enterprise data science workflows on kubeflow
 
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
Yannis Zarkadas. Stefano Fioravanzo. Enterprise data science workflows on kub...
 
DICE & Cloudify – Quality Big Data Made Easy
DICE & Cloudify – Quality Big Data Made EasyDICE & Cloudify – Quality Big Data Made Easy
DICE & Cloudify – Quality Big Data Made Easy
 
Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10
 
Open Source für den geschäftskritischen Einsatz
Open Source für den geschäftskritischen EinsatzOpen Source für den geschäftskritischen Einsatz
Open Source für den geschäftskritischen Einsatz
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the Cloud
 
The Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian CockcroftThe Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian Cockcroft
 
App Engine Presentation @ SFJUG Sep 2010
App Engine Presentation @ SFJUG Sep 2010App Engine Presentation @ SFJUG Sep 2010
App Engine Presentation @ SFJUG Sep 2010
 
GR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting Grails
 
Adopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf EuropeAdopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf Europe
 

Mais de Peter Ledbrook

Why your build matters
Why your build mattersWhy your build matters
Why your build mattersPeter Ledbrook
 
Groovy for Java Developers
Groovy for Java DevelopersGroovy for Java Developers
Groovy for Java DevelopersPeter Ledbrook
 
Application Architectures in Grails
Application Architectures in GrailsApplication Architectures in Grails
Application Architectures in GrailsPeter Ledbrook
 
Open source-and-you-gr8conf-us-2013
Open source-and-you-gr8conf-us-2013Open source-and-you-gr8conf-us-2013
Open source-and-you-gr8conf-us-2013Peter Ledbrook
 
Groovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developersGroovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developersPeter Ledbrook
 
Migrating to Cloud Foundry
Migrating to Cloud FoundryMigrating to Cloud Foundry
Migrating to Cloud FoundryPeter Ledbrook
 
Cloud Foundry for Java devs
Cloud Foundry for Java devsCloud Foundry for Java devs
Cloud Foundry for Java devsPeter Ledbrook
 

Mais de Peter Ledbrook (9)

Why Gradle?
Why Gradle?Why Gradle?
Why Gradle?
 
Why your build matters
Why your build mattersWhy your build matters
Why your build matters
 
Groovy for Java Developers
Groovy for Java DevelopersGroovy for Java Developers
Groovy for Java Developers
 
Application Architectures in Grails
Application Architectures in GrailsApplication Architectures in Grails
Application Architectures in Grails
 
Open source-and-you-gr8conf-us-2013
Open source-and-you-gr8conf-us-2013Open source-and-you-gr8conf-us-2013
Open source-and-you-gr8conf-us-2013
 
Groovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developersGroovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developers
 
Migrating to Cloud Foundry
Migrating to Cloud FoundryMigrating to Cloud Foundry
Migrating to Cloud Foundry
 
Grails 2.0 Update
Grails 2.0 UpdateGrails 2.0 Update
Grails 2.0 Update
 
Cloud Foundry for Java devs
Cloud Foundry for Java devsCloud Foundry for Java devs
Cloud Foundry for Java devs
 

Último

Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 

Último (20)

Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 

Grails & the World of Tomorrow

  • 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. NoSQL HTML5.js Cloud Social 2
  • 3. HTML5.js Web sites Applications Server-side HTML Client-side HTML Low interactivity High interactivity No offline Offline Wikipedia 3
  • 4. HTML5.js Web sites Applications Server-side HTML Client-side HTML Low interactivity High interactivity No offline Offline Twitter 4
  • 5. HTML5.js Web sites Applications Server-side HTML Client-side HTML Low interactivity High interactivity No offline Offline GMail 5
  • 6. HTML5.js We’re going this way! Web sites Applications Server-side HTML Client-side HTML Low interactivity High interactivity No offline Offline Example: REST + JSON Backbone.js + Moustache 6
  • 7. Google I/O 2012 400 million Android activations to date Apple WWDC 2012 365 million iOS devices sold to date 7
  • 8. Is this the end for server-side templates? 8
  • 9. NoSQL / Big Data Data the way you want it! 9
  • 10. NoSQL / Big Data Everyone has interesting data 10
  • 11. 11
  • 12. Cloud Scaling Reduced capital costs Easier administration 12
  • 13. Cloud Ephemeral Session filesystems management No Multicast 13
  • 14. 14
  • 15. A typical Grails app HTTP Controller View Service GORM/Hibernate Database 15
  • 16. 16
  • 17. What do these cars have in common? 17
  • 18. Same platform, different components 18
  • 19. Core Grails == Chassis Plugins == Components 19
  • 20. How can Grails help - Rich UIs? URL mappings for REST JSON & XML converters Resources (for JS & CSS) zipping, caching, compression 20
  • 21. Static resource handling App Kickstart Bootstrap Shiro UI Plugin Plugin Twitter Bootstrap Plugin 21
  • 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. 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. 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. How can Grails help - NoSQL? Accessible NoSQL via GORM Domain Model GORM 25
  • 26. How can Grails help - Cloud? Solve the caching problem with the Cache plugin Cache plugin Ehcache Redis For HTTP sessions, Database Session plugin Database Session plugin MongoDB Cookie 26
  • 27. 27
  • 28. PaaS deployment Rabbitmq Redis Plugin App Plugin > grails cf-push 28
  • 29. What about horizontal scalability? 29
  • 30. Introducing CQRS Updates Store changes Concurrency via event bus Views Separate data stores for queries 30
  • 31. Event bus (Platform Core plugin) Update Call REST Save entity Index read DBs service Event Bus Plugins Plugins Plugins Application 31
  • 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. Event bus (Events Push plugin) Browser Event Bridge Event Bus (SI) Plugins Plugins Plugins Application 33
  • 38. grailsTodos sample Try it: http://grailstodos.cloudfoundry.com/todos/ See the code: http://github.com/smaldini/grailsTodos 38
  • 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. More Platform Core Navigation API Menu Action Action Application Plugin 41
  • 42. More Platform Core Config API Declare config options Automatic namespacing Default values & automatic merging 42
  • 43. More Platform Core Convention API e.g. static searchable = { ... } @Taggable Convention overrides! 43
  • 44. Platform UI Themes + UI tags e.g. App Info plugin + Bootstrap Kickstart 44
  • 46. SQL database Multi page CRUD jQuery 46
  • 47. SQL for write Redis for read REST endpoints AngularJS 47
  • 48. Events Spring Integration Web Sockets (with emulation) 48
  • 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. 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. Q&A 51