SlideShare une entreprise Scribd logo
1  sur  72
Télécharger pour lire hors ligne
A year in the life of a
                              Grails startup
                                         Tomas Lin
                             @tomaslin tomas@secretescapes.com

                                       Donovan Frew
                                 donovan@secretescapes.com

                                       Secret Escapes
                                    Grails Exchange 2011

Saturday, 10 December 11
•      We will focus on the lessons we
             learned working with and
             changing a Grails application over
             a year in a London startup.
      •      Focus: Technology, People,
             Processes.



Saturday, 10 December 11
Agenda
                    • Who is Secret Escapes?
                    • Before / After we launched the site
                    • A work environment around Grails
                    • Success / Challenges / The future
                    • Questions?

Saturday, 10 December 11
Secret Escapes
          • Best members-only travel site for the UK
          • VC-funded ( just closed series-B )
          • From founders of Dealchecker.co.uk
          • More than 1 million happy users + growing
          • Started with 3 full time staff in November
                  2010, growing to 25 in January



Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Architecture
                    • 2 Apps - CMS and StoreFront
                    • Domain classes, shared services,
                           controllers and views live in one
                           plugin.
                    • StoreFront and CMS live on different
                           servers.



Saturday, 10 December 11
Before Launch - Goals
                       • Make app easy to deploy
                       • Get enough tests to make it work
                       • Basic CMS
                       • Integrate third party tools quickly
                       • Ship!


Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
January, 2011
                           Site is Launched
                     ( Yes, you can build a fully transactional
                        website with Grails in 4 months )




Saturday, 10 December 11
After Launch
                    • Growing existing features - Booking engine.
                    • Third party integration - Facebook, Google
                           tracking, plugins.
                    • Build better tools for business - allocation
                           uploading, customer support.
                    • Pulling data out of the system.
                    • Integrate with other sites.
                    • Validate effect of changes ( A/B tests ).
Saturday, 10 December 11
Brief timeline
         • End Of January - launch
         • 1st Half of the year - CMS / CRM
                 improvements, Affiliates, Calendar
                 Booker.
         • 2nd Half - Better invitation system,
                 exclusive deals, custom theming, third
                 Party Integration, A/B testing, Better
                 design.
Saturday, 10 December 11
Brief timeline
         •       End Of January - launch
         • 1st Half of the year - Easier to work
                 with codebase as a team. Growing the
                 team. (Jenkins, Amazon Beanstalk, Git )
         •       2nd Half - Making team better.
                 Devotion to testing. ( Unit testing,
                 Integration testing, agile, pairing )

Saturday, 10 December 11
Growing features-
                    Dealing with Changing
                      Domain Models


Saturday, 10 December 11
More Flexible Bookings
                  Before
                           Hotel
                           Fixed Date
                           DropDrown
                   After
                           Fixed Date
                           Flexible Dates
                           Hotel
                           Packages
                           Travel Only
                           By Departure
Saturday, 10 December 11
Database Migrations
         • Use the dbm-gorm-diff mechanism
         • Set default values via the sql( ) command
         • Load automatically on application startup
         • Add date of migration so that it is easier to
                sort / merge across git branches



Saturday, 10 December 11
Saturday, 10 December 11
Integrating with Third
                          Party Services



Saturday, 10 December 11
Improve Tracking
                 •         Google Goals Tracking
                 • Google eCommerce Tracking
                 • Google Analytics
                 • Third Party Tracking Tags


Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Third Party Integrations
                    • Try to capture as much as possible in one
                           standalone plugin
                    • Write tests within the plugin so you don’t
                           have to worry about it working in the app
                    • Use tag libraries to make your GSP files
                           very clean
                    • Publish plugins for feedback / sharing

Saturday, 10 December 11
Our Plugins
                    • Email Validator - Email Syntax.
                    • Inviter - Handles inviting friends from
                           Yahoo, Gmail, Facebook, Windows Live,
                           LinkedIn, etc.
                    • Website Optimizer - A/B Testing.
                    • CDN Resources - Adds pull-down CDN
                           support for resources plugin.


Saturday, 10 December 11
CMS - Going beyond
                               scaffolding



Saturday, 10 December 11
Better Customer Support




Saturday, 10 December 11
RemoteLink to Actions




Saturday, 10 December 11
Easier to add data




Saturday, 10 December 11
Saturday, 10 December 11
Easy to Customize




Saturday, 10 December 11
• Put into a domain classes
   • Use bean fields plugin to manage
           changes.
   • Use one template for edit and new
           actions.
   •       Mail templates, Sales, Affiliates, Themes.




Saturday, 10 December 11
Saturday, 10 December 11
Getting data out for
                                 analysis



Saturday, 10 December 11
Reporting
                    • We inherited a reporting framework from
                           Dealchecker Applications.
                    • Allows you to either write a grails service
                           or use a SQL statement.
                    • Can add additional query parameters like
                           sale / affiliate, etc.
                    • Exports to Excel.
Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Dashboard




Saturday, 10 December 11
CMS Lessons
                  • Move things that will change into a Domain
                           Object in the CMS.
                  • Build batch operations for editing data.
                  • Use g:remoteField for quick edit items.
                  • Use the Console Plugin
                  • Use Bean Fields
                  • Work with Excel / CSV.
Saturday, 10 December 11
Some interesting tech
                           we built -
                       Stuff other people never seem to talk
                                       about




Saturday, 10 December 11
Custom Theming Apps
                    • We keep all our customizations in a Theme
                           domain object.
                    • Partners can overwrite our site defaults via
                           a CSS file and a JS file.
                    • Use image references in CSS files to make
                           it easy to change.
                    • Themes are loaded by domain name or url
                           parameter

Saturday, 10 December 11
What can you change?
      •   Application Name.          Text displayed for static   Paypal Payment Page
      •   Domain Name                pages on the Site            • Background Color
      •   Theme CSS file              • About Us                  • Background Image
      •   Theme JavaScript file       • Contact Us                • Footer Text Color
      •   Favicon.                    • Faq                       • Header Background Color
      •   An URL to redirect          • Terms and Conditions      • Header Height
                                      • Privacy Policy            • Font for the Logo
    Technical Support                 • Current Sales Sidebar     • Color of the Logo Font
     • Email                                                      • Logo Image
     • Phone Number                  Email Templates              • Logo Image Position
                                      • Title                     • Logo Text
    Embedded Header of Footer         • Background Color          • Order Summary Background Color
     • A header URL                   • Header Text               • Custom Image for Order Summary
     • A footer URL                   • Header Logo               • Color of the Pay Now Button
                                      • Footer Signature          • Text color of the Pay Now Button
    Social Networks                   • Footer Text               • Section Background Colors
     • Name of Facebook Page          • Blurb Title               • Color of the byline
     • Description for application    • Blurb Test
     • Image for Sale Now             • Title Color
     • Color for Sale Title
     • Color for destination




Saturday, 10 December 11
Saturday, 10 December 11
A/B Testing
                  • Allows us to verify and test different designs
                           against one another.
                  • Via Google Website Optimizer and the
                           GWO plugin.
                  • Validates that changes we have made do not
                           significantly affect conversion.




Saturday, 10 December 11
Adding new A/B Tests
                    • Create Variations.
                    • Define experiments.
                    • Insert <gwo:includes/> tags in code.
                    • Insert <gwo:conversion/> tag in code.
                    • Run Experiment.


Saturday, 10 December 11
Saturday, 10 December 11
Goals At this Stage

                      • Make changes without breaking the site.
                      • No longer just ‘make it work’, need to
                           make it really nice.
                      • Adapt to rapidly changing business needs.
                      • Scaling up development.


Saturday, 10 December 11
How do you build up a
                   team around Grails?



Saturday, 10 December 11
Identifying the right people to
                             work with

                    • Grails Programmers are hard to find
                    • But we can always find Java developers
                    • Builds on industry-leading frameworks.
                           Spring / Hibernate. Those developers are
                           available.
                    • Attitude / fit

Saturday, 10 December 11
Making it attractive

                  • Put together job specs as a team
                  • Blogging / social networks / twitter
                  • Conferences and User Group Meetings
                  • Letting our work get out there.
                  • Recruiters are expensive and bad. DIY.

Saturday, 10 December 11
Silicon Milk Roundabout




Saturday, 10 December 11
Other places

                    • http://www.grailsjobs.com
                    • London Groovy Grails User Group
                    • Reddit
                    • Here!

Saturday, 10 December 11
How we work?
                    • Pair Programming
                    • Daily Standups
                    • Retrospruktions
                       • Features in pairs are more robust
                       • Hack Days fortnightly ( every 2 weeks )
                    • Team Activities ( Lunches, conferences )
                    • No a lot of hierarchy.
Saturday, 10 December 11
Communication
                    • Across different teams
                       • Pivotal Tracker / Trello
                       • Validation of features
                       • Team Lunches with a friend



Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Communication

                    • Within the team
                       • Stand ups
                       • Retrospectives
                       • Document via tests
                       • Common Environments

Saturday, 10 December 11
Code Quality
      • Writing more tests. Commitment to write unit /
             integration / functional tests.
      • Boy Scout Rule
      • Shared Ownership
      • TDD using Geb and Spock.
      • Jenkins to make sure it works on the other machine.
      • CodeNarc to enforce best practices.

Saturday, 10 December 11
Increase in Unit Tests over time
Saturday, 10 December 11
Increase in Integration Tests over time
Saturday, 10 December 11
Useful Stuff
                    • Git Flow
                    • Continous Integration Game for Jenkins
                    • Less
                    • Start / Stop / Continue / Less / More
                    • Pairing with Designers


Saturday, 10 December 11
Saturday, 10 December 11
Saturday, 10 December 11
Is Grails right for my startup?
       • Penetration test by the Telegraph showed us value of
              best practices.
       • Can build things quicker. Make us more responsive.
          • “At Last Minute this would have taken 6
                           months”
       • Awesome Community.

Saturday, 10 December 11
Challenges
        • Speed running Functional test and Integration tests.
        • Finding the right people.
        • Cost of Idea licenses.
        • Deployment.
            • Services are US-based. Difficult in the UK.
            • Failed Amazon Beanstalk Experiment.

Saturday, 10 December 11
The Future
                    • £5 Million Marketing initiative
                    • Mobile
                    • More integrations
                    • Grails 2.0
                    •?


Saturday, 10 December 11
Questions?



Saturday, 10 December 11
come work with us
                           http://www.secretescapes.com/jobs




Saturday, 10 December 11

Contenu connexe

Tendances

Building Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And TricksBuilding Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And TricksMike Hugo
 
Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!James Casey
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Matthew Groves
 
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
 
Code Reviews vs. Pull Requests
Code Reviews vs. Pull RequestsCode Reviews vs. Pull Requests
Code Reviews vs. Pull RequestsAtlassian
 
Greach 2014 - Road to Grails 3.0
Greach 2014  - Road to Grails 3.0Greach 2014  - Road to Grails 3.0
Greach 2014 - Road to Grails 3.0graemerocher
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript FrameworkAll Things Open
 
Unleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket CloudUnleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket CloudAtlassian
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and FriendsYun Zhi Lin
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with AnsibleMartin Etmajer
 
Arquillian & Citrus
Arquillian & CitrusArquillian & Citrus
Arquillian & Citruschristophd
 
Aura Framework Overview
Aura Framework OverviewAura Framework Overview
Aura Framework Overviewrajdeep
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryJeff Potts
 
Architectural changes in the repo in 6.1 and beyond
Architectural changes in the repo in 6.1 and beyondArchitectural changes in the repo in 6.1 and beyond
Architectural changes in the repo in 6.1 and beyondStefan Kopf
 
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java GuyGoogle AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java GuyMax Völkel
 
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"Daniel Bryant
 
Game of Streams: How to Tame and Get the Most from Your Messaging Platforms
Game of Streams: How to Tame and Get the Most from Your Messaging PlatformsGame of Streams: How to Tame and Get the Most from Your Messaging Platforms
Game of Streams: How to Tame and Get the Most from Your Messaging PlatformsVMware Tanzu
 

Tendances (20)

Building Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And TricksBuilding Grails Plugins - Tips And Tricks
Building Grails Plugins - Tips And Tricks
 
Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!Chef Actions: Delightful near real-time activity tracking!
Chef Actions: Delightful near real-time activity tracking!
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
 
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]
 
Code Reviews vs. Pull Requests
Code Reviews vs. Pull RequestsCode Reviews vs. Pull Requests
Code Reviews vs. Pull Requests
 
Greach 2014 - Road to Grails 3.0
Greach 2014  - Road to Grails 3.0Greach 2014  - Road to Grails 3.0
Greach 2014 - Road to Grails 3.0
 
Implementing your own Google App Engine
Implementing your own Google App Engine Implementing your own Google App Engine
Implementing your own Google App Engine
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
 
Unleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket CloudUnleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket Cloud
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and Friends
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with Ansible
 
Arquillian & Citrus
Arquillian & CitrusArquillian & Citrus
Arquillian & Citrus
 
Aura Framework Overview
Aura Framework OverviewAura Framework Overview
Aura Framework Overview
 
Moving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco RepositoryMoving Gigantic Files Into and Out of the Alfresco Repository
Moving Gigantic Files Into and Out of the Alfresco Repository
 
Architectural changes in the repo in 6.1 and beyond
Architectural changes in the repo in 6.1 and beyondArchitectural changes in the repo in 6.1 and beyond
Architectural changes in the repo in 6.1 and beyond
 
Apache Lucene for Java EE Developers
Apache Lucene for Java EE DevelopersApache Lucene for Java EE Developers
Apache Lucene for Java EE Developers
 
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java GuyGoogle AppEngine (GAE/J) - Introduction and Overview from a Java Guy
Google AppEngine (GAE/J) - Introduction and Overview from a Java Guy
 
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
J1 2015 "Debugging Java Apps in Containers: No Heavy Welding Gear Required"
 
Game of Streams: How to Tame and Get the Most from Your Messaging Platforms
Game of Streams: How to Tame and Get the Most from Your Messaging PlatformsGame of Streams: How to Tame and Get the Most from Your Messaging Platforms
Game of Streams: How to Tame and Get the Most from Your Messaging Platforms
 

En vedette

Groovy and Grails
Groovy and GrailsGroovy and Grails
Groovy and GrailsGiltTech
 
Las 5 indeas mas innovadoras
Las 5 indeas mas  innovadorasLas 5 indeas mas  innovadoras
Las 5 indeas mas innovadorasireclane
 
Comment utiliser un code promo Disney Dtore
Comment utiliser un code promo Disney DtoreComment utiliser un code promo Disney Dtore
Comment utiliser un code promo Disney DtoreChassoDeal
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and GroovyKiyotaka Oku
 
Grails At Linked
Grails At LinkedGrails At Linked
Grails At LinkedLinkedIn
 

En vedette (6)

Groovy and Grails
Groovy and GrailsGroovy and Grails
Groovy and Grails
 
Big Data
Big DataBig Data
Big Data
 
Las 5 indeas mas innovadoras
Las 5 indeas mas  innovadorasLas 5 indeas mas  innovadoras
Las 5 indeas mas innovadoras
 
Comment utiliser un code promo Disney Dtore
Comment utiliser un code promo Disney DtoreComment utiliser un code promo Disney Dtore
Comment utiliser un code promo Disney Dtore
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and Groovy
 
Grails At Linked
Grails At LinkedGrails At Linked
Grails At Linked
 

Similaire à A year in the life of a Grails startup

MuraCon 2012 - Creating a Mura CMS plugin with FW/1
MuraCon 2012 - Creating a Mura CMS plugin with FW/1MuraCon 2012 - Creating a Mura CMS plugin with FW/1
MuraCon 2012 - Creating a Mura CMS plugin with FW/1jpanesar
 
7 common problems with salesforce data migration
7 common problems with salesforce data migration7 common problems with salesforce data migration
7 common problems with salesforce data migrationMark Kofman
 
Anil Patel - Do You Feel Technology Is a Source of Frustration or Creativity...
Anil Patel -  Do You Feel Technology Is a Source of Frustration or Creativity...Anil Patel -  Do You Feel Technology Is a Source of Frustration or Creativity...
Anil Patel - Do You Feel Technology Is a Source of Frustration or Creativity...CanadaHelps / MyCharityConnects
 
2015 WritersUA Sourcing Graphics
2015 WritersUA Sourcing Graphics2015 WritersUA Sourcing Graphics
2015 WritersUA Sourcing GraphicsMary Connor
 
Inform2015 - What's New in Domino 9 & 9.0.1 for Admins
Inform2015 - What's New in Domino 9 & 9.0.1 for AdminsInform2015 - What's New in Domino 9 & 9.0.1 for Admins
Inform2015 - What's New in Domino 9 & 9.0.1 for AdminsJared Roberts
 
Scaling Pinterest
Scaling PinterestScaling Pinterest
Scaling PinterestC4Media
 
Tulsa tech fest 2010 - web speed and scalability
Tulsa tech fest 2010  - web speed and scalabilityTulsa tech fest 2010  - web speed and scalability
Tulsa tech fest 2010 - web speed and scalabilityJason Ragsdale
 
Automating Infrastructure as a Service Deployments and monitoring – TEC213
Automating Infrastructure as a Service Deployments and monitoring – TEC213Automating Infrastructure as a Service Deployments and monitoring – TEC213
Automating Infrastructure as a Service Deployments and monitoring – TEC213Chris Kernaghan
 
Interop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServiceInterop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServicePatrick Chanezon
 
Database Development: The Object-oriented and Test-driven Way
Database Development: The Object-oriented and Test-driven WayDatabase Development: The Object-oriented and Test-driven Way
Database Development: The Object-oriented and Test-driven WayTechWell
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL DevelopersIke Ellis
 
AWS for Start-ups - Case Study - PeoplePerHour
AWS for Start-ups - Case Study - PeoplePerHour AWS for Start-ups - Case Study - PeoplePerHour
AWS for Start-ups - Case Study - PeoplePerHour Amazon Web Services
 
What Industry and Research can learn from Open Source
What Industry and Research can learn from Open SourceWhat Industry and Research can learn from Open Source
What Industry and Research can learn from Open SourceRalph Mueller
 
We4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worstWe4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worstWe4IT Group
 
Page Experience Update SMX 2020 (Aleks Shklyar)
Page Experience Update SMX 2020 (Aleks Shklyar)Page Experience Update SMX 2020 (Aleks Shklyar)
Page Experience Update SMX 2020 (Aleks Shklyar)Aleks (Aleksander) Shklyar
 
Scoping call presentation_rev_4_mary
Scoping call presentation_rev_4_maryScoping call presentation_rev_4_mary
Scoping call presentation_rev_4_maryrhochambeau32
 
DrupalCampNYC 10 - Native mobile apps with Drupal
DrupalCampNYC 10 - Native mobile apps with DrupalDrupalCampNYC 10 - Native mobile apps with Drupal
DrupalCampNYC 10 - Native mobile apps with Drupalzroger
 
Gaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
Gaelyk - Groovy Grails eXchange 2010 - Guillaume LaforgeGaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
Gaelyk - Groovy Grails eXchange 2010 - Guillaume LaforgeGuillaume Laforge
 

Similaire à A year in the life of a Grails startup (20)

MuraCon 2012 - Creating a Mura CMS plugin with FW/1
MuraCon 2012 - Creating a Mura CMS plugin with FW/1MuraCon 2012 - Creating a Mura CMS plugin with FW/1
MuraCon 2012 - Creating a Mura CMS plugin with FW/1
 
HTML5 and Sencha Touch
HTML5 and Sencha TouchHTML5 and Sencha Touch
HTML5 and Sencha Touch
 
7 common problems with salesforce data migration
7 common problems with salesforce data migration7 common problems with salesforce data migration
7 common problems with salesforce data migration
 
Anil Patel - Do You Feel Technology Is a Source of Frustration or Creativity...
Anil Patel -  Do You Feel Technology Is a Source of Frustration or Creativity...Anil Patel -  Do You Feel Technology Is a Source of Frustration or Creativity...
Anil Patel - Do You Feel Technology Is a Source of Frustration or Creativity...
 
2015 WritersUA Sourcing Graphics
2015 WritersUA Sourcing Graphics2015 WritersUA Sourcing Graphics
2015 WritersUA Sourcing Graphics
 
Inform2015 - What's New in Domino 9 & 9.0.1 for Admins
Inform2015 - What's New in Domino 9 & 9.0.1 for AdminsInform2015 - What's New in Domino 9 & 9.0.1 for Admins
Inform2015 - What's New in Domino 9 & 9.0.1 for Admins
 
Scaling Pinterest
Scaling PinterestScaling Pinterest
Scaling Pinterest
 
Tulsa tech fest 2010 - web speed and scalability
Tulsa tech fest 2010  - web speed and scalabilityTulsa tech fest 2010  - web speed and scalability
Tulsa tech fest 2010 - web speed and scalability
 
Automating Infrastructure as a Service Deployments and monitoring – TEC213
Automating Infrastructure as a Service Deployments and monitoring – TEC213Automating Infrastructure as a Service Deployments and monitoring – TEC213
Automating Infrastructure as a Service Deployments and monitoring – TEC213
 
Interop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServiceInterop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A Service
 
Database Development: The Object-oriented and Test-driven Way
Database Development: The Object-oriented and Test-driven WayDatabase Development: The Object-oriented and Test-driven Way
Database Development: The Object-oriented and Test-driven Way
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
Iwmn architecture
Iwmn architectureIwmn architecture
Iwmn architecture
 
AWS for Start-ups - Case Study - PeoplePerHour
AWS for Start-ups - Case Study - PeoplePerHour AWS for Start-ups - Case Study - PeoplePerHour
AWS for Start-ups - Case Study - PeoplePerHour
 
What Industry and Research can learn from Open Source
What Industry and Research can learn from Open SourceWhat Industry and Research can learn from Open Source
What Industry and Research can learn from Open Source
 
We4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worstWe4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worst
 
Page Experience Update SMX 2020 (Aleks Shklyar)
Page Experience Update SMX 2020 (Aleks Shklyar)Page Experience Update SMX 2020 (Aleks Shklyar)
Page Experience Update SMX 2020 (Aleks Shklyar)
 
Scoping call presentation_rev_4_mary
Scoping call presentation_rev_4_maryScoping call presentation_rev_4_mary
Scoping call presentation_rev_4_mary
 
DrupalCampNYC 10 - Native mobile apps with Drupal
DrupalCampNYC 10 - Native mobile apps with DrupalDrupalCampNYC 10 - Native mobile apps with Drupal
DrupalCampNYC 10 - Native mobile apps with Drupal
 
Gaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
Gaelyk - Groovy Grails eXchange 2010 - Guillaume LaforgeGaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
Gaelyk - Groovy Grails eXchange 2010 - Guillaume Laforge
 

Dernier

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
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
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
 
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
 
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
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
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
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
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
 
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
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 

Dernier (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...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
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
 
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.
 
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
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
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
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
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
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
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
 
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
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 

A year in the life of a Grails startup

  • 1. A year in the life of a Grails startup Tomas Lin @tomaslin tomas@secretescapes.com Donovan Frew donovan@secretescapes.com Secret Escapes Grails Exchange 2011 Saturday, 10 December 11
  • 2. We will focus on the lessons we learned working with and changing a Grails application over a year in a London startup. • Focus: Technology, People, Processes. Saturday, 10 December 11
  • 3. Agenda • Who is Secret Escapes? • Before / After we launched the site • A work environment around Grails • Success / Challenges / The future • Questions? Saturday, 10 December 11
  • 4. Secret Escapes • Best members-only travel site for the UK • VC-funded ( just closed series-B ) • From founders of Dealchecker.co.uk • More than 1 million happy users + growing • Started with 3 full time staff in November 2010, growing to 25 in January Saturday, 10 December 11
  • 10. Architecture • 2 Apps - CMS and StoreFront • Domain classes, shared services, controllers and views live in one plugin. • StoreFront and CMS live on different servers. Saturday, 10 December 11
  • 11. Before Launch - Goals • Make app easy to deploy • Get enough tests to make it work • Basic CMS • Integrate third party tools quickly • Ship! Saturday, 10 December 11
  • 16. January, 2011 Site is Launched ( Yes, you can build a fully transactional website with Grails in 4 months ) Saturday, 10 December 11
  • 17. After Launch • Growing existing features - Booking engine. • Third party integration - Facebook, Google tracking, plugins. • Build better tools for business - allocation uploading, customer support. • Pulling data out of the system. • Integrate with other sites. • Validate effect of changes ( A/B tests ). Saturday, 10 December 11
  • 18. Brief timeline • End Of January - launch • 1st Half of the year - CMS / CRM improvements, Affiliates, Calendar Booker. • 2nd Half - Better invitation system, exclusive deals, custom theming, third Party Integration, A/B testing, Better design. Saturday, 10 December 11
  • 19. Brief timeline • End Of January - launch • 1st Half of the year - Easier to work with codebase as a team. Growing the team. (Jenkins, Amazon Beanstalk, Git ) • 2nd Half - Making team better. Devotion to testing. ( Unit testing, Integration testing, agile, pairing ) Saturday, 10 December 11
  • 20. Growing features- Dealing with Changing Domain Models Saturday, 10 December 11
  • 21. More Flexible Bookings Before Hotel Fixed Date DropDrown After Fixed Date Flexible Dates Hotel Packages Travel Only By Departure Saturday, 10 December 11
  • 22. Database Migrations • Use the dbm-gorm-diff mechanism • Set default values via the sql( ) command • Load automatically on application startup • Add date of migration so that it is easier to sort / merge across git branches Saturday, 10 December 11
  • 24. Integrating with Third Party Services Saturday, 10 December 11
  • 25. Improve Tracking • Google Goals Tracking • Google eCommerce Tracking • Google Analytics • Third Party Tracking Tags Saturday, 10 December 11
  • 28. Third Party Integrations • Try to capture as much as possible in one standalone plugin • Write tests within the plugin so you don’t have to worry about it working in the app • Use tag libraries to make your GSP files very clean • Publish plugins for feedback / sharing Saturday, 10 December 11
  • 29. Our Plugins • Email Validator - Email Syntax. • Inviter - Handles inviting friends from Yahoo, Gmail, Facebook, Windows Live, LinkedIn, etc. • Website Optimizer - A/B Testing. • CDN Resources - Adds pull-down CDN support for resources plugin. Saturday, 10 December 11
  • 30. CMS - Going beyond scaffolding Saturday, 10 December 11
  • 33. Easier to add data Saturday, 10 December 11
  • 35. Easy to Customize Saturday, 10 December 11
  • 36. • Put into a domain classes • Use bean fields plugin to manage changes. • Use one template for edit and new actions. • Mail templates, Sales, Affiliates, Themes. Saturday, 10 December 11
  • 38. Getting data out for analysis Saturday, 10 December 11
  • 39. Reporting • We inherited a reporting framework from Dealchecker Applications. • Allows you to either write a grails service or use a SQL statement. • Can add additional query parameters like sale / affiliate, etc. • Exports to Excel. Saturday, 10 December 11
  • 43. CMS Lessons • Move things that will change into a Domain Object in the CMS. • Build batch operations for editing data. • Use g:remoteField for quick edit items. • Use the Console Plugin • Use Bean Fields • Work with Excel / CSV. Saturday, 10 December 11
  • 44. Some interesting tech we built - Stuff other people never seem to talk about Saturday, 10 December 11
  • 45. Custom Theming Apps • We keep all our customizations in a Theme domain object. • Partners can overwrite our site defaults via a CSS file and a JS file. • Use image references in CSS files to make it easy to change. • Themes are loaded by domain name or url parameter Saturday, 10 December 11
  • 46. What can you change? • Application Name. Text displayed for static Paypal Payment Page • Domain Name pages on the Site • Background Color • Theme CSS file • About Us • Background Image • Theme JavaScript file • Contact Us • Footer Text Color • Favicon. • Faq • Header Background Color • An URL to redirect • Terms and Conditions • Header Height • Privacy Policy • Font for the Logo Technical Support • Current Sales Sidebar • Color of the Logo Font • Email • Logo Image • Phone Number Email Templates • Logo Image Position • Title • Logo Text Embedded Header of Footer • Background Color • Order Summary Background Color • A header URL • Header Text • Custom Image for Order Summary • A footer URL • Header Logo • Color of the Pay Now Button • Footer Signature • Text color of the Pay Now Button Social Networks • Footer Text • Section Background Colors • Name of Facebook Page • Blurb Title • Color of the byline • Description for application • Blurb Test • Image for Sale Now • Title Color • Color for Sale Title • Color for destination Saturday, 10 December 11
  • 48. A/B Testing • Allows us to verify and test different designs against one another. • Via Google Website Optimizer and the GWO plugin. • Validates that changes we have made do not significantly affect conversion. Saturday, 10 December 11
  • 49. Adding new A/B Tests • Create Variations. • Define experiments. • Insert <gwo:includes/> tags in code. • Insert <gwo:conversion/> tag in code. • Run Experiment. Saturday, 10 December 11
  • 51. Goals At this Stage • Make changes without breaking the site. • No longer just ‘make it work’, need to make it really nice. • Adapt to rapidly changing business needs. • Scaling up development. Saturday, 10 December 11
  • 52. How do you build up a team around Grails? Saturday, 10 December 11
  • 53. Identifying the right people to work with • Grails Programmers are hard to find • But we can always find Java developers • Builds on industry-leading frameworks. Spring / Hibernate. Those developers are available. • Attitude / fit Saturday, 10 December 11
  • 54. Making it attractive • Put together job specs as a team • Blogging / social networks / twitter • Conferences and User Group Meetings • Letting our work get out there. • Recruiters are expensive and bad. DIY. Saturday, 10 December 11
  • 56. Other places • http://www.grailsjobs.com • London Groovy Grails User Group • Reddit • Here! Saturday, 10 December 11
  • 57. How we work? • Pair Programming • Daily Standups • Retrospruktions • Features in pairs are more robust • Hack Days fortnightly ( every 2 weeks ) • Team Activities ( Lunches, conferences ) • No a lot of hierarchy. Saturday, 10 December 11
  • 58. Communication • Across different teams • Pivotal Tracker / Trello • Validation of features • Team Lunches with a friend Saturday, 10 December 11
  • 61. Communication • Within the team • Stand ups • Retrospectives • Document via tests • Common Environments Saturday, 10 December 11
  • 62. Code Quality • Writing more tests. Commitment to write unit / integration / functional tests. • Boy Scout Rule • Shared Ownership • TDD using Geb and Spock. • Jenkins to make sure it works on the other machine. • CodeNarc to enforce best practices. Saturday, 10 December 11
  • 63. Increase in Unit Tests over time Saturday, 10 December 11
  • 64. Increase in Integration Tests over time Saturday, 10 December 11
  • 65. Useful Stuff • Git Flow • Continous Integration Game for Jenkins • Less • Start / Stop / Continue / Less / More • Pairing with Designers Saturday, 10 December 11
  • 68. Is Grails right for my startup? • Penetration test by the Telegraph showed us value of best practices. • Can build things quicker. Make us more responsive. • “At Last Minute this would have taken 6 months” • Awesome Community. Saturday, 10 December 11
  • 69. Challenges • Speed running Functional test and Integration tests. • Finding the right people. • Cost of Idea licenses. • Deployment. • Services are US-based. Difficult in the UK. • Failed Amazon Beanstalk Experiment. Saturday, 10 December 11
  • 70. The Future • £5 Million Marketing initiative • Mobile • More integrations • Grails 2.0 •? Saturday, 10 December 11
  • 72. come work with us http://www.secretescapes.com/jobs Saturday, 10 December 11