SlideShare une entreprise Scribd logo
1  sur  41
Groovy and Grails
    at DMC Digital
Real world applications from a business
      and development perspective



       Andrew Bredon ( @bredo )
        Tomas Lin ( @tomaslin )
        London GGUG, April 2010
Who are we?
How do we use Groovy
    and Grails?
Infrastructure
Portable scripting
Company wide, Groovy is our default
scripting language.

Quick debug views into Java with
Groovy.

Scripts for updating system
information, deploying static content
into Content Delivery Networks

Looking into JMX / other tasks
Operations
automation / integration
  Groovy console to explore / debug new
  Java or Web-based APIs for
  integration.

  Scripts to help manage multiple
  databases - e.g. supplier wizard

  Scripts to automate manual, tedious
  tasks - e.g. SQL generation from
  Excel files

  Internal Grails applications for
  reporting and update routing data
Benefits
One less language to remember

Lower automation barrier

Grape / @Grab makes scripts light and
portable

Ship scripts to any system

“It’s like Java with a whole bunch of
good stuff added to it”
Pain?
JVM warmup time to run scripts

Speed differences compared to raw
java or unix scripting
Using Grails for
  Web Projects
Betting on Grails
Been using it since Grails 0.3

Questions of Longevity?

Rails - can barely speak English,
don’t want to learn another language.

At that point, we had half a million
lines of code in Java. Too much of a
risk if I couldn’t understand it.

Only on greenfield projects.
Deciding on Grails

It was built on stuff I knew.

Desire to take away the pain.

There had to be a better way.
Weekend projects
Greenfield projects
Searchable plugin
Started using Compass applications
for Zipatrip.com.

Maurice took it upon himself to write
the Searchable plugin - but mostly on
his time.
Grails Projects
Write once, use across multiple
products

Standing on the shoulder of giants.
Time to market is drastically
reduced.

Allows us to compete with much larger
companies because we are more
efficient.
Grails Projects
 Less formal & verbosity. Lightweight.

 One person can have view of whole project.

Dealchecker ( Spring )
            68,700 lines of XML config
               550,000 lines of code
Cruiseline Fans ( Grails )
             2,650 lines of XML config
                22,600 lines of code
Enjoying Development
 Working with Grails is enjoyable.

 The platform is nimble and takes away
 a lot of the pain in development.

 Developers are happy. Staff
 retention. Encourages professional
 and personal development.
Working with
      Conventions
Set of conventions / structure.

Guides you through the process.

Dealchecker stood up in 5 years
because of Spring - it’s been good
because people always know whereto
find code.

Grails is the next step in that
structured evolution
The Grails Community
 Plenty of good solutions.

 You feel that people working on
 Grails have been through the same
 pain so many times. It feels that
 they are a group of people getting
 together to build a better platform.

 Classic Grails philosophy - I want to
 take the pain away.
Working with
      outsourcers
We sat on Skype as if we’re working
on the same office.

Grails allows you to very quickly see
if they are on the right track.

Gives us more confidence working with
an outsource team.
Moving Dealchecker
     to Grails
In-place, internal plugins.

Can allows us to build functionality
specific to us, but then re-use it
across all our applications.

Relief of building non generic
internal plugins. Fills me with joy.

Hiring Tomas.
Moving Dealchecker
    to Grails -
    developer’s
    perspective
Moving Dealchecker
     to Grails
Converting 5 year’s worth of
development into the Grails stack

Spring Application with Sitemesh,
Hibernate, JSecurity, etc.

120 domain classes, 620 beans.

550,000 lines of code
Architecture



  Normal           Dealchecker
  Grails
    App

grails    spring
Plugins
Plugins
Converting a Grails
project into Spring
    in practice
Steps
Upgrade Spring application to latest
Spring version.

Resolve library dependencies.

Convert Jar files to plugins

Build top level web apps.

Make web layer customizations
In practice
Take a jar file used by the Spring project.

Generate a plugin ( grails create-plugin )

Set dependencies in BuildConfig

Copy mapping files into conf/hibernate

Copy bean definitions into conf/resource

Add bean mappings to applicationContext.xml
or resources.xml
What could possibly
      go wrong?
Moving from Spring 2.x to 3.0 is not
trivial. Some Grails bugs. Some Spring
bugs. They add up.

Things must be done the Grails way - e.g.
sitemesh integration, JSecurity.

Grails is much more strict in separating
project boundaries.

Dependency Management Hell.
Building projects
  with Grails -
   the verdict
Things we hate
Upgrade cycles from hell

Grails Logging is a big wtf

IDE support needs to be better

Testing takes forever

Can make bad code worst

Feels like nobody can help you

Memory hungry beast

Stack traces are a million lines long
Things we love
“Grails makes you realize how
cumbersome and brittle it is to work
with Spring”

Testing / Code coverage -> so easy to
set up that you actually use it.

Reuse code.

Rapid prototyping - I can build it!

Conventions. Forces you to use MVC.

One language you’re familiar with.
Questions?

Contenu connexe

Tendances

GWAB Lyon - Legacy code atelier
GWAB Lyon - Legacy code atelierGWAB Lyon - Legacy code atelier
GWAB Lyon - Legacy code atelierflorentpellet
 
The Grails introduction workshop
The Grails introduction workshopThe Grails introduction workshop
The Grails introduction workshopGR8Conf
 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Matt Raible
 
Global Windows Azure Bootcamp : Samuel et Emilien Pécoul, Florent Pelet Legac...
Global Windows Azure Bootcamp : Samuel et Emilien Pécoul, Florent Pelet Legac...Global Windows Azure Bootcamp : Samuel et Emilien Pécoul, Florent Pelet Legac...
Global Windows Azure Bootcamp : Samuel et Emilien Pécoul, Florent Pelet Legac...MUG-Lyon Microsoft User Group
 
Serverless Minimalism: How to architect your apps to save 98% on your Azure b...
Serverless Minimalism: How to architect your apps to save 98% on your Azure b...Serverless Minimalism: How to architect your apps to save 98% on your Azure b...
Serverless Minimalism: How to architect your apps to save 98% on your Azure b...BizTalk360
 
Accelerating DevOps with ChatOps
Accelerating DevOps with ChatOpsAccelerating DevOps with ChatOps
Accelerating DevOps with ChatOpsRohan Rath
 
Migrating a large codebase to Node & React
Migrating a large codebase to Node & ReactMigrating a large codebase to Node & React
Migrating a large codebase to Node & ReactRyan Burgess
 
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)Pedro Moreira da Silva
 
FrontBox - what frontend web development is? Let's discover ReactJS!
FrontBox - what frontend web development is? Let's discover ReactJS!FrontBox - what frontend web development is? Let's discover ReactJS!
FrontBox - what frontend web development is? Let's discover ReactJS!Marco Pegoraro
 
[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructureRodrigo Stefani Domingues
 
Moving to microservices from idea to production - GitLabJP meetup
Moving to microservices  from idea to production - GitLabJP meetupMoving to microservices  from idea to production - GitLabJP meetup
Moving to microservices from idea to production - GitLabJP meetupGuenjun Yoo
 
Measure Your DevOps Success: Using Goal-based KPIs to Drive Results and Demon...
Measure Your DevOps Success: Using Goal-based KPIs to Drive Results and Demon...Measure Your DevOps Success: Using Goal-based KPIs to Drive Results and Demon...
Measure Your DevOps Success: Using Goal-based KPIs to Drive Results and Demon...XebiaLabs
 
Smoothing the Continuous Delivery Path - A Tale of Two Teams
Smoothing the Continuous Delivery Path - A Tale of Two TeamsSmoothing the Continuous Delivery Path - A Tale of Two Teams
Smoothing the Continuous Delivery Path - A Tale of Two TeamsEqual Experts
 
GDSC BVCOENM - Google Cloud Study Jam October 2021 | Day 1 + Day 2
GDSC BVCOENM - Google Cloud Study Jam October 2021 | Day 1 + Day 2GDSC BVCOENM - Google Cloud Study Jam October 2021 | Day 1 + Day 2
GDSC BVCOENM - Google Cloud Study Jam October 2021 | Day 1 + Day 2GDSCBVCOENM
 
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsDevoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsLuca Milanesio
 
Building Scalable Micro-services with Nodejs
Building Scalable Micro-services with NodejsBuilding Scalable Micro-services with Nodejs
Building Scalable Micro-services with NodejsMichal Juhas
 
Angular vs React - Devoxx BE 2017
Angular vs React - Devoxx BE 2017Angular vs React - Devoxx BE 2017
Angular vs React - Devoxx BE 2017Deepu K Sasidharan
 
和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab WorkflowChen Cheng-Wei
 
Open Source, Open Governance and Your Developers
Open Source, Open Governance and Your DevelopersOpen Source, Open Governance and Your Developers
Open Source, Open Governance and Your DevelopersDev_Events
 

Tendances (20)

GWAB Lyon - Legacy code atelier
GWAB Lyon - Legacy code atelierGWAB Lyon - Legacy code atelier
GWAB Lyon - Legacy code atelier
 
The Grails introduction workshop
The Grails introduction workshopThe Grails introduction workshop
The Grails introduction workshop
 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
 
Global Windows Azure Bootcamp : Samuel et Emilien Pécoul, Florent Pelet Legac...
Global Windows Azure Bootcamp : Samuel et Emilien Pécoul, Florent Pelet Legac...Global Windows Azure Bootcamp : Samuel et Emilien Pécoul, Florent Pelet Legac...
Global Windows Azure Bootcamp : Samuel et Emilien Pécoul, Florent Pelet Legac...
 
Serverless Minimalism: How to architect your apps to save 98% on your Azure b...
Serverless Minimalism: How to architect your apps to save 98% on your Azure b...Serverless Minimalism: How to architect your apps to save 98% on your Azure b...
Serverless Minimalism: How to architect your apps to save 98% on your Azure b...
 
Accelerating DevOps with ChatOps
Accelerating DevOps with ChatOpsAccelerating DevOps with ChatOps
Accelerating DevOps with ChatOps
 
Migrating a large codebase to Node & React
Migrating a large codebase to Node & ReactMigrating a large codebase to Node & React
Migrating a large codebase to Node & React
 
React and d3
React and d3React and d3
React and d3
 
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
 
FrontBox - what frontend web development is? Let's discover ReactJS!
FrontBox - what frontend web development is? Let's discover ReactJS!FrontBox - what frontend web development is? Let's discover ReactJS!
FrontBox - what frontend web development is? Let's discover ReactJS!
 
[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure[2020 git lab commit] continuous infrastructure
[2020 git lab commit] continuous infrastructure
 
Moving to microservices from idea to production - GitLabJP meetup
Moving to microservices  from idea to production - GitLabJP meetupMoving to microservices  from idea to production - GitLabJP meetup
Moving to microservices from idea to production - GitLabJP meetup
 
Measure Your DevOps Success: Using Goal-based KPIs to Drive Results and Demon...
Measure Your DevOps Success: Using Goal-based KPIs to Drive Results and Demon...Measure Your DevOps Success: Using Goal-based KPIs to Drive Results and Demon...
Measure Your DevOps Success: Using Goal-based KPIs to Drive Results and Demon...
 
Smoothing the Continuous Delivery Path - A Tale of Two Teams
Smoothing the Continuous Delivery Path - A Tale of Two TeamsSmoothing the Continuous Delivery Path - A Tale of Two Teams
Smoothing the Continuous Delivery Path - A Tale of Two Teams
 
GDSC BVCOENM - Google Cloud Study Jam October 2021 | Day 1 + Day 2
GDSC BVCOENM - Google Cloud Study Jam October 2021 | Day 1 + Day 2GDSC BVCOENM - Google Cloud Study Jam October 2021 | Day 1 + Day 2
GDSC BVCOENM - Google Cloud Study Jam October 2021 | Day 1 + Day 2
 
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsDevoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
 
Building Scalable Micro-services with Nodejs
Building Scalable Micro-services with NodejsBuilding Scalable Micro-services with Nodejs
Building Scalable Micro-services with Nodejs
 
Angular vs React - Devoxx BE 2017
Angular vs React - Devoxx BE 2017Angular vs React - Devoxx BE 2017
Angular vs React - Devoxx BE 2017
 
和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow
 
Open Source, Open Governance and Your Developers
Open Source, Open Governance and Your DevelopersOpen Source, Open Governance and Your Developers
Open Source, Open Governance and Your Developers
 

En vedette

DMC Siemens Automation Summit: Best Practices for Selecting and Working with ...
DMC Siemens Automation Summit: Best Practices for Selecting and Working with ...DMC Siemens Automation Summit: Best Practices for Selecting and Working with ...
DMC Siemens Automation Summit: Best Practices for Selecting and Working with ...DMC, Inc.
 
DMC: Use Microsoft SharePoint Technology You Already Own to Operate Efficient...
DMC: Use Microsoft SharePoint Technology You Already Own to Operate Efficient...DMC: Use Microsoft SharePoint Technology You Already Own to Operate Efficient...
DMC: Use Microsoft SharePoint Technology You Already Own to Operate Efficient...DMC, Inc.
 
Dmc patco siemens og presentation
Dmc patco siemens og presentationDmc patco siemens og presentation
Dmc patco siemens og presentationDMC, Inc.
 
DMC Siemens Automation Summit 2014 Presentation: Extending S7 PLC Through WinAC
DMC Siemens Automation Summit 2014 Presentation: Extending S7 PLC Through WinACDMC Siemens Automation Summit 2014 Presentation: Extending S7 PLC Through WinAC
DMC Siemens Automation Summit 2014 Presentation: Extending S7 PLC Through WinACDMC, Inc.
 
Tips & Tricks for Motion with S7 1500 CPU
Tips & Tricks for Motion with S7 1500 CPUTips & Tricks for Motion with S7 1500 CPU
Tips & Tricks for Motion with S7 1500 CPUDMC, Inc.
 
DMC Siemens Automation Summit 2014 Presentation: Siemens Best Practices When ...
DMC Siemens Automation Summit 2014 Presentation: Siemens Best Practices When ...DMC Siemens Automation Summit 2014 Presentation: Siemens Best Practices When ...
DMC Siemens Automation Summit 2014 Presentation: Siemens Best Practices When ...DMC, Inc.
 
Siemens Open Library- Summit 2016
Siemens Open Library- Summit 2016Siemens Open Library- Summit 2016
Siemens Open Library- Summit 2016DMC, Inc.
 
Industrial Automation and Modern Connectivity
Industrial Automation and Modern ConnectivityIndustrial Automation and Modern Connectivity
Industrial Automation and Modern ConnectivityPlantEngineering
 

En vedette (8)

DMC Siemens Automation Summit: Best Practices for Selecting and Working with ...
DMC Siemens Automation Summit: Best Practices for Selecting and Working with ...DMC Siemens Automation Summit: Best Practices for Selecting and Working with ...
DMC Siemens Automation Summit: Best Practices for Selecting and Working with ...
 
DMC: Use Microsoft SharePoint Technology You Already Own to Operate Efficient...
DMC: Use Microsoft SharePoint Technology You Already Own to Operate Efficient...DMC: Use Microsoft SharePoint Technology You Already Own to Operate Efficient...
DMC: Use Microsoft SharePoint Technology You Already Own to Operate Efficient...
 
Dmc patco siemens og presentation
Dmc patco siemens og presentationDmc patco siemens og presentation
Dmc patco siemens og presentation
 
DMC Siemens Automation Summit 2014 Presentation: Extending S7 PLC Through WinAC
DMC Siemens Automation Summit 2014 Presentation: Extending S7 PLC Through WinACDMC Siemens Automation Summit 2014 Presentation: Extending S7 PLC Through WinAC
DMC Siemens Automation Summit 2014 Presentation: Extending S7 PLC Through WinAC
 
Tips & Tricks for Motion with S7 1500 CPU
Tips & Tricks for Motion with S7 1500 CPUTips & Tricks for Motion with S7 1500 CPU
Tips & Tricks for Motion with S7 1500 CPU
 
DMC Siemens Automation Summit 2014 Presentation: Siemens Best Practices When ...
DMC Siemens Automation Summit 2014 Presentation: Siemens Best Practices When ...DMC Siemens Automation Summit 2014 Presentation: Siemens Best Practices When ...
DMC Siemens Automation Summit 2014 Presentation: Siemens Best Practices When ...
 
Siemens Open Library- Summit 2016
Siemens Open Library- Summit 2016Siemens Open Library- Summit 2016
Siemens Open Library- Summit 2016
 
Industrial Automation and Modern Connectivity
Industrial Automation and Modern ConnectivityIndustrial Automation and Modern Connectivity
Industrial Automation and Modern Connectivity
 

Similaire à Grails at DMC Digital

Introduction to Go
Introduction to GoIntroduction to Go
Introduction to GoSimon Hewitt
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community SupportWilliam Grosso
 
Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksKaty Slemon
 
Magic with groovy & grails
Magic with groovy & grailsMagic with groovy & grails
Magic with groovy & grailsGeorge Platon
 
Top 10 web development tools in 2022
Top 10 web development tools in 2022Top 10 web development tools in 2022
Top 10 web development tools in 2022intouchgroup2
 
Top 13 best front end web development tools to consider in 2021
Top 13 best front end web development tools to consider in 2021Top 13 best front end web development tools to consider in 2021
Top 13 best front end web development tools to consider in 2021Samaritan InfoTech
 
NodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonNodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonDevathon
 
When, how & why use golang in 2021 go benefits & use cases
When, how & why use golang in 2021  go benefits & use casesWhen, how & why use golang in 2021  go benefits & use cases
When, how & why use golang in 2021 go benefits & use casesKaty Slemon
 
10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business Needs10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business NeedsSofiaCarter4
 
Simplifying complexity at GitLab (2023-07-31 @ OutSystems Product Design Unwr...
Simplifying complexity at GitLab (2023-07-31 @ OutSystems Product Design Unwr...Simplifying complexity at GitLab (2023-07-31 @ OutSystems Product Design Unwr...
Simplifying complexity at GitLab (2023-07-31 @ OutSystems Product Design Unwr...Pedro Moreira da Silva
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software EngineerSean Coates
 
Top 10 Front End Development Technologies to Focus in 2018
Top 10 Front End Development Technologies to Focus in 2018Top 10 Front End Development Technologies to Focus in 2018
Top 10 Front End Development Technologies to Focus in 2018Helios Solutions
 
Dictionary Within the Cloud
Dictionary Within the CloudDictionary Within the Cloud
Dictionary Within the Cloudgueste4978b94
 
Figma – What Makes it Such a Popular Design Tool.pdf
Figma – What Makes it Such a Popular Design Tool.pdfFigma – What Makes it Such a Popular Design Tool.pdf
Figma – What Makes it Such a Popular Design Tool.pdfWebGuru Infosystems Pvt. Ltd.
 
web development ppt by prakash bedage
web development ppt by prakash bedageweb development ppt by prakash bedage
web development ppt by prakash bedagePrakashBedage
 
web development project prakash.pptx
web development project prakash.pptxweb development project prakash.pptx
web development project prakash.pptxPrakashBedage
 
Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023SofiaCarter4
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web ApplicationMichael Choi
 
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...Codemotion
 

Similaire à Grails at DMC Digital (20)

Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
 
Advantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworksAdvantages of golang development services & 10 most used go frameworks
Advantages of golang development services & 10 most used go frameworks
 
Magic with groovy & grails
Magic with groovy & grailsMagic with groovy & grails
Magic with groovy & grails
 
Top 10 web development tools in 2022
Top 10 web development tools in 2022Top 10 web development tools in 2022
Top 10 web development tools in 2022
 
Top 13 best front end web development tools to consider in 2021
Top 13 best front end web development tools to consider in 2021Top 13 best front end web development tools to consider in 2021
Top 13 best front end web development tools to consider in 2021
 
NodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparisonNodeJS vs Golang - A detailed comparison
NodeJS vs Golang - A detailed comparison
 
When, how & why use golang in 2021 go benefits & use cases
When, how & why use golang in 2021  go benefits & use casesWhen, how & why use golang in 2021  go benefits & use cases
When, how & why use golang in 2021 go benefits & use cases
 
10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business Needs10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business Needs
 
Enterprise 2020
Enterprise 2020Enterprise 2020
Enterprise 2020
 
Simplifying complexity at GitLab (2023-07-31 @ OutSystems Product Design Unwr...
Simplifying complexity at GitLab (2023-07-31 @ OutSystems Product Design Unwr...Simplifying complexity at GitLab (2023-07-31 @ OutSystems Product Design Unwr...
Simplifying complexity at GitLab (2023-07-31 @ OutSystems Product Design Unwr...
 
30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer30 Skills to Master to Become a Senior Software Engineer
30 Skills to Master to Become a Senior Software Engineer
 
Top 10 Front End Development Technologies to Focus in 2018
Top 10 Front End Development Technologies to Focus in 2018Top 10 Front End Development Technologies to Focus in 2018
Top 10 Front End Development Technologies to Focus in 2018
 
Dictionary Within the Cloud
Dictionary Within the CloudDictionary Within the Cloud
Dictionary Within the Cloud
 
Figma – What Makes it Such a Popular Design Tool.pdf
Figma – What Makes it Such a Popular Design Tool.pdfFigma – What Makes it Such a Popular Design Tool.pdf
Figma – What Makes it Such a Popular Design Tool.pdf
 
web development ppt by prakash bedage
web development ppt by prakash bedageweb development ppt by prakash bedage
web development ppt by prakash bedage
 
web development project prakash.pptx
web development project prakash.pptxweb development project prakash.pptx
web development project prakash.pptx
 
Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023Golang Vs NodeJS: Which One To Choose For Your 2023
Golang Vs NodeJS: Which One To Choose For Your 2023
 
System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
 
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
 

Grails at DMC Digital

  • 1. Groovy and Grails at DMC Digital Real world applications from a business and development perspective Andrew Bredon ( @bredo ) Tomas Lin ( @tomaslin ) London GGUG, April 2010
  • 3. How do we use Groovy and Grails?
  • 5. Portable scripting Company wide, Groovy is our default scripting language. Quick debug views into Java with Groovy. Scripts for updating system information, deploying static content into Content Delivery Networks Looking into JMX / other tasks
  • 7. automation / integration Groovy console to explore / debug new Java or Web-based APIs for integration. Scripts to help manage multiple databases - e.g. supplier wizard Scripts to automate manual, tedious tasks - e.g. SQL generation from Excel files Internal Grails applications for reporting and update routing data
  • 8.
  • 9. Benefits One less language to remember Lower automation barrier Grape / @Grab makes scripts light and portable Ship scripts to any system “It’s like Java with a whole bunch of good stuff added to it”
  • 10. Pain? JVM warmup time to run scripts Speed differences compared to raw java or unix scripting
  • 11. Using Grails for Web Projects
  • 12. Betting on Grails Been using it since Grails 0.3 Questions of Longevity? Rails - can barely speak English, don’t want to learn another language. At that point, we had half a million lines of code in Java. Too much of a risk if I couldn’t understand it. Only on greenfield projects.
  • 13. Deciding on Grails It was built on stuff I knew. Desire to take away the pain. There had to be a better way.
  • 16.
  • 17.
  • 18.
  • 19. Searchable plugin Started using Compass applications for Zipatrip.com. Maurice took it upon himself to write the Searchable plugin - but mostly on his time.
  • 20. Grails Projects Write once, use across multiple products Standing on the shoulder of giants. Time to market is drastically reduced. Allows us to compete with much larger companies because we are more efficient.
  • 21. Grails Projects Less formal & verbosity. Lightweight. One person can have view of whole project. Dealchecker ( Spring ) 68,700 lines of XML config 550,000 lines of code Cruiseline Fans ( Grails ) 2,650 lines of XML config 22,600 lines of code
  • 22. Enjoying Development Working with Grails is enjoyable. The platform is nimble and takes away a lot of the pain in development. Developers are happy. Staff retention. Encourages professional and personal development.
  • 23. Working with Conventions Set of conventions / structure. Guides you through the process. Dealchecker stood up in 5 years because of Spring - it’s been good because people always know whereto find code. Grails is the next step in that structured evolution
  • 24. The Grails Community Plenty of good solutions. You feel that people working on Grails have been through the same pain so many times. It feels that they are a group of people getting together to build a better platform. Classic Grails philosophy - I want to take the pain away.
  • 25. Working with outsourcers We sat on Skype as if we’re working on the same office. Grails allows you to very quickly see if they are on the right track. Gives us more confidence working with an outsource team.
  • 26. Moving Dealchecker to Grails In-place, internal plugins. Can allows us to build functionality specific to us, but then re-use it across all our applications. Relief of building non generic internal plugins. Fills me with joy. Hiring Tomas.
  • 27.
  • 28. Moving Dealchecker to Grails - developer’s perspective
  • 29. Moving Dealchecker to Grails Converting 5 year’s worth of development into the Grails stack Spring Application with Sitemesh, Hibernate, JSecurity, etc. 120 domain classes, 620 beans. 550,000 lines of code
  • 30. Architecture Normal Dealchecker Grails App grails spring
  • 33.
  • 34. Converting a Grails project into Spring in practice
  • 35. Steps Upgrade Spring application to latest Spring version. Resolve library dependencies. Convert Jar files to plugins Build top level web apps. Make web layer customizations
  • 36. In practice Take a jar file used by the Spring project. Generate a plugin ( grails create-plugin ) Set dependencies in BuildConfig Copy mapping files into conf/hibernate Copy bean definitions into conf/resource Add bean mappings to applicationContext.xml or resources.xml
  • 37. What could possibly go wrong? Moving from Spring 2.x to 3.0 is not trivial. Some Grails bugs. Some Spring bugs. They add up. Things must be done the Grails way - e.g. sitemesh integration, JSecurity. Grails is much more strict in separating project boundaries. Dependency Management Hell.
  • 38. Building projects with Grails - the verdict
  • 39. Things we hate Upgrade cycles from hell Grails Logging is a big wtf IDE support needs to be better Testing takes forever Can make bad code worst Feels like nobody can help you Memory hungry beast Stack traces are a million lines long
  • 40. Things we love “Grails makes you realize how cumbersome and brittle it is to work with Spring” Testing / Code coverage -> so easy to set up that you actually use it. Reuse code. Rapid prototyping - I can build it! Conventions. Forces you to use MVC. One language you’re familiar with.

Notes de l'éditeur