SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Grails – from scratch to
production

How we build successful application
Tal Maayani
November 2013
Agenda
•
•
•
•
•
•

About the lecturer
Choosing the technology: Grails vs…
Common pitfalls
Development methodologies
Continuous Integration
Q&A
Choose the right technology
• Project type: self service web application with a rich back office
• Project roadmap: workflow, many integrations with external
vendors, analytic, payments

• Timeline: start development within a short period, full power development
within 3 months, production within 6 months

• Budget
• Available in-house skillset
 Requires fast web development framework like Spring
,Play, Rails, Grails, Django
Comparing between alternatives
Feature

Grails

Rails

Language

Groovy - JVM based

Ruby - Interpreter based

Approach

Domain oriented

Database oriented

Thread support

Native

Poor

Hardware requirements

Requires more memory, and
strong CPU

mediocre memory and CPU

Learning Curve

Fast for a java developers

operates in Database model

Maturity

Less Mature (Founded at 2008)

More mature (Founded at 2004)

Scalability

Offer good scalability

Lack scalability

Libraries

Offers all java based libraries

No java libraries

longer than Grails since Rails
Why we chose Grails?
• Build on known technologies that we already used
• Spring, Hibernate, Tomcat, Quartz

• Fast development
• Scaffolding , Smart reloading, Hundreds of plugins (~1000), groovy

• MVC web application
• Domain, GSP, Controller
Common Grails pitfalls
• Writes java in groovy
experts

•
•
•
•
•

 Use outsource grails

Difficult debugging (comparing to java)

 More logging

Maintaining data model

 Liquibase

Groovy dynamic nature

 Test everything

Some plugins are unstable

 Smart use of plugins

Highly hardware demands

 Use strong machines
Groovy Ecosystem
Spoke

Gradle

Grails

Junit

Build framework

RAD Platform

Gpars

Gaelyc

Muti-threading

Toolkit for GAE

EasyB

Codenarc

GContract

Griffon

Static code
Analysis

Design by contract

BDD

Swing UI

And many more …
Development process
Highlights

• Holistic thinking:
• production deployment, performance, testing, interfaces

• Lean development
• Development of only what is required

• Test on production like environment
• System test as soon as possible
• Learn from mistakes
Grails Plugins

Recommendations
• Do not blind use plugins
•
•
•
•

Plugins dependencies and footprint considerations
Performance consideration (startup overhead)
Write your own set of plugins (configuration, health check, authentication, taglibs)
Maintain up to date plugin

• JS wrapper plugins (Jquery, bootstrap) –
• Not always up to date and maintained
•  sometimes it is preferable to copy the js library instead of using the plugin
Plugins that we used
•
•
•
•
•
•
•
•

In house development
Spring web flow – state machine for managing flows
aws – enable use of amazon via grails service
Cache, zipped resources
Less-css
Spring security
Quartz
Yammer metrics
AWS Configuration Loader Plugin
• Enable the use of external configuration file for per environment
settings
• Server name, performance tuning, etc.

• Receive configuration file
• Local file – for development
• S3 URL – when running on amazon. Use access and secret keys.

• How it works?
• Copy the external configuration file locally and merge config.groovy
Liquibase Plugin
• Use when
• You are using relational DB on production
• Have a frequent schema changes

• Major functionality
• Keep record of every db schema change, use DSL to record these
changes

• Enforce object model & DB match (using MD5)
• Allows to have business logic (in groovy) to support migrations
Liquibase Plugin – cont.
• Drawbacks (for 1.3.6 and below)
• Maintenance
• Do not use per environment configuration in datasource.groovy

• Extension
• Allow running any sql script in change set
For example: Quartz schema
Health Check
• Get report for instance health
• Access to various data sources (MySQL, Mongo, Oracle)
• Access to other components

• Triggered from monitoring system
• Report generated ad hoc

• Implemented in grails plugin
• Building block per access point
Working with Amazon
EC2 vs. Elastic Beanstalk

Capability

EC2

Beanstalk

Configuration
Management

Flexible, can run scripts on
instance build, deployments.
Can use CM like chef or puppet

Use prebuild AM with given
configuration. Can use limited Yml
script for customization

Monitoring, Load
Balancing, Auto
scaling

Need to configure

Automatically defined

Application
management

-

Manage logs, environment
configuration, versions, externalize
configuration properties

Stopping
environment

Environment can be stopped

Environment cannot be stopped

Deployment

Custom script

AWS API call
Continuous Integration
Using Amazon

 Dev. commits
 Build server run unit tests
 Build server deploy war to dev integration environment

 Build server deploy war to amazon QA environment
Build server triggered Selenium to run subsystem test against QA
War is ready (PSP)
KPI Measurements
• Define a set of goals that measures success
• Total # of users, abandonment rate, conversion rate

• Define measurements tools
• Systematically and periodically measure
• Learn from the results

Weitere ähnliche Inhalte

Was ist angesagt?

Сергей Моренец: "Gradle. Write once, build everywhere"
Сергей Моренец: "Gradle. Write once, build everywhere"Сергей Моренец: "Gradle. Write once, build everywhere"
Сергей Моренец: "Gradle. Write once, build everywhere"
Provectus
 

Was ist angesagt? (18)

Drupal contributor HOWTO
Drupal contributor HOWTODrupal contributor HOWTO
Drupal contributor HOWTO
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation tool
 
Spring GraphQL
Spring GraphQLSpring GraphQL
Spring GraphQL
 
Gradle enabled android project
Gradle enabled android projectGradle enabled android project
Gradle enabled android project
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Lightning Web Components by Abdul Gafoor
Lightning Web Components by Abdul GafoorLightning Web Components by Abdul Gafoor
Lightning Web Components by Abdul Gafoor
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
 
GraphQL Introduction
GraphQL IntroductionGraphQL Introduction
GraphQL Introduction
 
ng4 webpack and yarn in JHipster
ng4 webpack and yarn in JHipsterng4 webpack and yarn in JHipster
ng4 webpack and yarn in JHipster
 
Better java with design
Better java with designBetter java with design
Better java with design
 
Сергей Моренец: "Gradle. Write once, build everywhere"
Сергей Моренец: "Gradle. Write once, build everywhere"Сергей Моренец: "Gradle. Write once, build everywhere"
Сергей Моренец: "Gradle. Write once, build everywhere"
 
Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017
 
Scala laboratory. Globus. iteration #1
Scala laboratory. Globus. iteration #1Scala laboratory. Globus. iteration #1
Scala laboratory. Globus. iteration #1
 
Continuous delivery@LesFurets - DC Continuous delivery meetup
Continuous delivery@LesFurets - DC Continuous delivery meetupContinuous delivery@LesFurets - DC Continuous delivery meetup
Continuous delivery@LesFurets - DC Continuous delivery meetup
 
Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3Migrating from Grails 2 to Grails 3
Migrating from Grails 2 to Grails 3
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIs
 
Android - Gradle build optimisation 3d83f31339d239abcc55f869e5f30348?s=47
Android - Gradle build optimisation  3d83f31339d239abcc55f869e5f30348?s=47Android - Gradle build optimisation  3d83f31339d239abcc55f869e5f30348?s=47
Android - Gradle build optimisation 3d83f31339d239abcc55f869e5f30348?s=47
 

Ähnlich wie Groovy & Grails - From Scratch to Production

Architectures, Frameworks and Infrastructure
Architectures, Frameworks and InfrastructureArchitectures, Frameworks and Infrastructure
Architectures, Frameworks and Infrastructure
harendra_pathak
 

Ähnlich wie Groovy & Grails - From Scratch to Production (20)

Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Enterprise WordPress - Performance, Scalability and Redundancy
Enterprise WordPress - Performance, Scalability and RedundancyEnterprise WordPress - Performance, Scalability and Redundancy
Enterprise WordPress - Performance, Scalability and Redundancy
 
Kudu voodoo slideshare
Kudu voodoo   slideshareKudu voodoo   slideshare
Kudu voodoo slideshare
 
Architectures, Frameworks and Infrastructure
Architectures, Frameworks and InfrastructureArchitectures, Frameworks and Infrastructure
Architectures, Frameworks and Infrastructure
 
Building Real World Application with Azure
Building Real World Application with AzureBuilding Real World Application with Azure
Building Real World Application with Azure
 
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
深探-IaC-(Infrastructure as Code-基礎設施即程式碼-)-在-AWS-上的應用
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
Windows Azure Essentials V3
Windows Azure Essentials V3Windows Azure Essentials V3
Windows Azure Essentials V3
 
Devops architecture
Devops architectureDevops architecture
Devops architecture
 
Dropwizard and Groovy
Dropwizard and GroovyDropwizard and Groovy
Dropwizard and Groovy
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
Selenium practical
Selenium practicalSelenium practical
Selenium practical
 
Tech Talk on Cloud Computing
Tech Talk on Cloud ComputingTech Talk on Cloud Computing
Tech Talk on Cloud Computing
 
Using AWS To Build A Scalable Machine Data Analytics Service
Using AWS To Build A Scalable Machine Data Analytics ServiceUsing AWS To Build A Scalable Machine Data Analytics Service
Using AWS To Build A Scalable Machine Data Analytics Service
 
DrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an AfterthoughtDrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an Afterthought
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksBuilding Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

Groovy & Grails - From Scratch to Production

  • 1.
  • 2. Grails – from scratch to production How we build successful application Tal Maayani November 2013
  • 3. Agenda • • • • • • About the lecturer Choosing the technology: Grails vs… Common pitfalls Development methodologies Continuous Integration Q&A
  • 4. Choose the right technology • Project type: self service web application with a rich back office • Project roadmap: workflow, many integrations with external vendors, analytic, payments • Timeline: start development within a short period, full power development within 3 months, production within 6 months • Budget • Available in-house skillset  Requires fast web development framework like Spring ,Play, Rails, Grails, Django
  • 5. Comparing between alternatives Feature Grails Rails Language Groovy - JVM based Ruby - Interpreter based Approach Domain oriented Database oriented Thread support Native Poor Hardware requirements Requires more memory, and strong CPU mediocre memory and CPU Learning Curve Fast for a java developers operates in Database model Maturity Less Mature (Founded at 2008) More mature (Founded at 2004) Scalability Offer good scalability Lack scalability Libraries Offers all java based libraries No java libraries longer than Grails since Rails
  • 6. Why we chose Grails? • Build on known technologies that we already used • Spring, Hibernate, Tomcat, Quartz • Fast development • Scaffolding , Smart reloading, Hundreds of plugins (~1000), groovy • MVC web application • Domain, GSP, Controller
  • 7. Common Grails pitfalls • Writes java in groovy experts • • • • •  Use outsource grails Difficult debugging (comparing to java)  More logging Maintaining data model  Liquibase Groovy dynamic nature  Test everything Some plugins are unstable  Smart use of plugins Highly hardware demands  Use strong machines
  • 8. Groovy Ecosystem Spoke Gradle Grails Junit Build framework RAD Platform Gpars Gaelyc Muti-threading Toolkit for GAE EasyB Codenarc GContract Griffon Static code Analysis Design by contract BDD Swing UI And many more …
  • 9. Development process Highlights • Holistic thinking: • production deployment, performance, testing, interfaces • Lean development • Development of only what is required • Test on production like environment • System test as soon as possible • Learn from mistakes
  • 10. Grails Plugins Recommendations • Do not blind use plugins • • • • Plugins dependencies and footprint considerations Performance consideration (startup overhead) Write your own set of plugins (configuration, health check, authentication, taglibs) Maintain up to date plugin • JS wrapper plugins (Jquery, bootstrap) – • Not always up to date and maintained •  sometimes it is preferable to copy the js library instead of using the plugin
  • 11. Plugins that we used • • • • • • • • In house development Spring web flow – state machine for managing flows aws – enable use of amazon via grails service Cache, zipped resources Less-css Spring security Quartz Yammer metrics
  • 12. AWS Configuration Loader Plugin • Enable the use of external configuration file for per environment settings • Server name, performance tuning, etc. • Receive configuration file • Local file – for development • S3 URL – when running on amazon. Use access and secret keys. • How it works? • Copy the external configuration file locally and merge config.groovy
  • 13. Liquibase Plugin • Use when • You are using relational DB on production • Have a frequent schema changes • Major functionality • Keep record of every db schema change, use DSL to record these changes • Enforce object model & DB match (using MD5) • Allows to have business logic (in groovy) to support migrations
  • 14. Liquibase Plugin – cont. • Drawbacks (for 1.3.6 and below) • Maintenance • Do not use per environment configuration in datasource.groovy • Extension • Allow running any sql script in change set For example: Quartz schema
  • 15. Health Check • Get report for instance health • Access to various data sources (MySQL, Mongo, Oracle) • Access to other components • Triggered from monitoring system • Report generated ad hoc • Implemented in grails plugin • Building block per access point
  • 16. Working with Amazon EC2 vs. Elastic Beanstalk Capability EC2 Beanstalk Configuration Management Flexible, can run scripts on instance build, deployments. Can use CM like chef or puppet Use prebuild AM with given configuration. Can use limited Yml script for customization Monitoring, Load Balancing, Auto scaling Need to configure Automatically defined Application management - Manage logs, environment configuration, versions, externalize configuration properties Stopping environment Environment can be stopped Environment cannot be stopped Deployment Custom script AWS API call
  • 17. Continuous Integration Using Amazon  Dev. commits  Build server run unit tests  Build server deploy war to dev integration environment  Build server deploy war to amazon QA environment Build server triggered Selenium to run subsystem test against QA War is ready (PSP)
  • 18. KPI Measurements • Define a set of goals that measures success • Total # of users, abandonment rate, conversion rate • Define measurements tools • Systematically and periodically measure • Learn from the results