• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
A year in the life of a Grails startup
 

A year in the life of a Grails startup

on

  • 7,183 views

 

Statistics

Views

Total Views
7,183
Views on SlideShare
2,623
Embed Views
4,560

Actions

Likes
3
Downloads
33
Comments
0

6 Embeds 4,560

http://fbflex.wordpress.com 4555
http://127.0.0.1 1
http://translate.googleusercontent.com 1
http://webcache.googleusercontent.com 1
http://10.176.193.28 1
https://fbflex.wordpress.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    A year in the life of a Grails startup A year in the life of a Grails startup Presentation Transcript

    • 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
    • • 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 JanuarySaturday, 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 ModelsSaturday, 10 December 11
    • More Flexible Bookings Before Hotel Fixed Date DropDrown After Fixed Date Flexible Dates Hotel Packages Travel Only By DepartureSaturday, 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 branchesSaturday, 10 December 11
    • Saturday, 10 December 11
    • Integrating with Third Party ServicesSaturday, 10 December 11
    • Improve Tracking • Google Goals Tracking • Google eCommerce Tracking • Google Analytics • Third Party Tracking TagsSaturday, 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 / sharingSaturday, 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 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 actions. • Mail templates, Sales, Affiliates, Themes.Saturday, 10 December 11
    • Saturday, 10 December 11
    • Getting data out for analysisSaturday, 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
    • DashboardSaturday, 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 aboutSaturday, 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 parameterSaturday, 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 destinationSaturday, 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 / fitSaturday, 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 RoundaboutSaturday, 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 friendSaturday, 10 December 11
    • Saturday, 10 December 11
    • Saturday, 10 December 11
    • Communication • Within the team • Stand ups • Retrospectives • Document via tests • Common EnvironmentsSaturday, 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 timeSaturday, 10 December 11
    • Increase in Integration Tests over timeSaturday, 10 December 11
    • Useful Stuff • Git Flow • Continous Integration Game for Jenkins • Less • Start / Stop / Continue / Less / More • Pairing with DesignersSaturday, 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/jobsSaturday, 10 December 11