Successfully reported this slideshow.

A year in the life of a Grails startup

8,076 views

Published on

Published in: Technology, Business
  • Be the first to comment

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

×