A year in the life of a                              Grails startup                                         Tomas Lin     ...
•      We will focus on the lessons we             learned working with and             changing a Grails application over...
Agenda                    • Who is Secret Escapes?                    • Before / After we launched the site               ...
Secret Escapes          • Best members-only travel site for the UK          • VC-funded ( just closed series-B )          ...
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,       ...
Before Launch - Goals                       • Make app easy to deploy                       • Get enough tests to make it ...
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   ...
After Launch                    • Growing existing features - Booking engine.                    • Third party integration...
Brief timeline         • End Of January - launch         • 1st Half of the year - CMS / CRM                 improvements, ...
Brief timeline         •       End Of January - launch         • 1st Half of the year - Easier to work                 wit...
Growing features-                    Dealing with Changing                      Domain ModelsSaturday, 10 December 11
More Flexible Bookings                  Before                           Hotel                           Fixed Date       ...
Database Migrations         • Use the dbm-gorm-diff mechanism         • Set default values via the sql( ) command         ...
Saturday, 10 December 11
Integrating with Third                          Party ServicesSaturday, 10 December 11
Improve Tracking                 •         Google Goals Tracking                 • Google eCommerce Tracking              ...
Saturday, 10 December 11
Saturday, 10 December 11
Third Party Integrations                    • Try to capture as much as possible in one                           standalo...
Our Plugins                    • Email Validator - Email Syntax.                    • Inviter - Handles inviting friends f...
CMS - Going beyond                               scaffoldingSaturday, 10 December 11
Better Customer SupportSaturday, 10 December 11
RemoteLink to ActionsSaturday, 10 December 11
Easier to add dataSaturday, 10 December 11
Saturday, 10 December 11
Easy to CustomizeSaturday, 10 December 11
• Put into a domain classes   • Use bean fields plugin to manage           changes.   • Use one template for edit and new  ...
Saturday, 10 December 11
Getting data out for                                 analysisSaturday, 10 December 11
Reporting                    • We inherited a reporting framework from                           Dealchecker Applications....
Saturday, 10 December 11
Saturday, 10 December 11
DashboardSaturday, 10 December 11
CMS Lessons                  • Move things that will change into a Domain                           Object in the CMS.    ...
Some interesting tech                           we built -                       Stuff other people never seem to talk    ...
Custom Theming Apps                    • We keep all our customizations in a Theme                           domain object...
What can you change?      •   Application Name.          Text displayed for static   Paypal Payment Page      •   Domain N...
Saturday, 10 December 11
A/B Testing                  • Allows us to verify and test different designs                           against one anothe...
Adding new A/B Tests                    • Create Variations.                    • Define experiments.                    • ...
Saturday, 10 December 11
Goals At this Stage                      • Make changes without breaking the site.                      • No longer just ‘...
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 ...
Making it attractive                  • Put together job specs as a team                  • Blogging / social networks / t...
Silicon Milk RoundaboutSaturday, 10 December 11
Other places                    • http://www.grailsjobs.com                    • London Groovy Grails User Group          ...
How we work?                    • Pair Programming                    • Daily Standups                    • Retrospruktion...
Communication                    • Across different teams                       • Pivotal Tracker / Trello                ...
Saturday, 10 December 11
Saturday, 10 December 11
Communication                    • Within the team                       • Stand ups                       • Retrospective...
Code Quality      • Writing more tests. Commitment to write unit /             integration / functional tests.      • Boy ...
Increase in Unit Tests over timeSaturday, 10 December 11
Increase in Integration Tests over timeSaturday, 10 December 11
Useful Stuff                    • Git Flow                    • Continous Integration Game for Jenkins                    ...
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. ...
Challenges        • Speed running Functional test and Integration tests.        • Finding the right people.        • Cost ...
The Future                    • £5 Million Marketing initiative                    • Mobile                    • More inte...
Questions?Saturday, 10 December 11
come work with us                           http://www.secretescapes.com/jobsSaturday, 10 December 11
Upcoming SlideShare
Loading in...5
×

A year in the life of a Grails startup

7,313

Published on

Published in: Technology, Business
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,313
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
39
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

A year in the life of a Grails startup

  1. 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 2011Saturday, 10 December 11
  2. 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. 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. 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 JanuarySaturday, 10 December 11
  5. 5. Saturday, 10 December 11
  6. 6. Saturday, 10 December 11
  7. 7. Saturday, 10 December 11
  8. 8. Saturday, 10 December 11
  9. 9. Saturday, 10 December 11
  10. 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. 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
  12. 12. Saturday, 10 December 11
  13. 13. Saturday, 10 December 11
  14. 14. Saturday, 10 December 11
  15. 15. Saturday, 10 December 11
  16. 16. January, 2011 Site is Launched ( Yes, you can build a fully transactional website with Grails in 4 months )Saturday, 10 December 11
  17. 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. 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. 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. 20. Growing features- Dealing with Changing Domain ModelsSaturday, 10 December 11
  21. 21. More Flexible Bookings Before Hotel Fixed Date DropDrown After Fixed Date Flexible Dates Hotel Packages Travel Only By DepartureSaturday, 10 December 11
  22. 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 branchesSaturday, 10 December 11
  23. 23. Saturday, 10 December 11
  24. 24. Integrating with Third Party ServicesSaturday, 10 December 11
  25. 25. Improve Tracking • Google Goals Tracking • Google eCommerce Tracking • Google Analytics • Third Party Tracking TagsSaturday, 10 December 11
  26. 26. Saturday, 10 December 11
  27. 27. Saturday, 10 December 11
  28. 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 / sharingSaturday, 10 December 11
  29. 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. 30. CMS - Going beyond scaffoldingSaturday, 10 December 11
  31. 31. Better Customer SupportSaturday, 10 December 11
  32. 32. RemoteLink to ActionsSaturday, 10 December 11
  33. 33. Easier to add dataSaturday, 10 December 11
  34. 34. Saturday, 10 December 11
  35. 35. Easy to CustomizeSaturday, 10 December 11
  36. 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
  37. 37. Saturday, 10 December 11
  38. 38. Getting data out for analysisSaturday, 10 December 11
  39. 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
  40. 40. Saturday, 10 December 11
  41. 41. Saturday, 10 December 11
  42. 42. DashboardSaturday, 10 December 11
  43. 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. 44. Some interesting tech we built - Stuff other people never seem to talk aboutSaturday, 10 December 11
  45. 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 parameterSaturday, 10 December 11
  46. 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 destinationSaturday, 10 December 11
  47. 47. Saturday, 10 December 11
  48. 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. 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
  50. 50. Saturday, 10 December 11
  51. 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. 52. How do you build up a team around Grails?Saturday, 10 December 11
  53. 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 / fitSaturday, 10 December 11
  54. 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
  55. 55. Silicon Milk RoundaboutSaturday, 10 December 11
  56. 56. Other places • http://www.grailsjobs.com • London Groovy Grails User Group • Reddit • Here!Saturday, 10 December 11
  57. 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. 58. Communication • Across different teams • Pivotal Tracker / Trello • Validation of features • Team Lunches with a friendSaturday, 10 December 11
  59. 59. Saturday, 10 December 11
  60. 60. Saturday, 10 December 11
  61. 61. Communication • Within the team • Stand ups • Retrospectives • Document via tests • Common EnvironmentsSaturday, 10 December 11
  62. 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. 63. Increase in Unit Tests over timeSaturday, 10 December 11
  64. 64. Increase in Integration Tests over timeSaturday, 10 December 11
  65. 65. Useful Stuff • Git Flow • Continous Integration Game for Jenkins • Less • Start / Stop / Continue / Less / More • Pairing with DesignersSaturday, 10 December 11
  66. 66. Saturday, 10 December 11
  67. 67. Saturday, 10 December 11
  68. 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. 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. 70. The Future • £5 Million Marketing initiative • Mobile • More integrations • Grails 2.0 •?Saturday, 10 December 11
  71. 71. Questions?Saturday, 10 December 11
  72. 72. come work with us http://www.secretescapes.com/jobsSaturday, 10 December 11
  1. A particular slide catching your eye?

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

×