Zagat.com Case Study - DrupalCon Denver 2012

Transcription

Zagat.com Case Study - DrupalCon Denver 2012
ZAGAT.COM CASE STUDY
WHO ARE WE?
Steven Merrill
Director of Engineering, Phase2 Technology
@stevenmerrill
Brian McMurray
Developer, Phase2 Technology
@bmcmurray
, the quick history
Founded in 1979 by Tim and Nina Zagat
User-Generated Content before “UserGenerated Content”
“The Gastronomic Bible”
- The Wall Street Journal
We worked with Zagat from June 2010 November 2011
THE PROBLEM(S)
Legacy ASP.NET website rapidly aging
Updates difficult
Complicated QA testing and deployment
process
Desire for website to be more social
Separated systems (website, blog, webstore)
THE SOLUTIONS
Fight for the Users
Drupal and Friends
Robots for Better Living
It’s Dangerous To Go Alone! Take This!
Eye on the Prize
Hindsight is 20/20
FIGHT FOR THE USERS
Iterate quickly and test the ideas with real users
Track goals and analytics
USER TESTING
Formal in-person interviews with functional
prototype
On-going user testing through usertesting.com
service
Users could be granted special permission
(roles) to access beta features
USER TESTING (VIDEO)
00:01
-00:34
TRACK GOALS AND ANALYTICS
Google Analytics –
http://dgo.to/google_analytics
CrazyEgg analytics – http://crazyegg.com
Google Website Optimizer for multi-variate
testing
Links with anchor names (# tags) to track in-site
referrals
DRUPAL AND FRIENDS
Use complimentary technologies to augment
Contrib for the 80%, Custom for the 100%
DYNAMIC CHARTING
RaphaëlJS –
http://raphaeljs.com
Browser Compatibility
Mobile phone
compatibility
THE ZAGAT MATRIX
THE ZAGAT MATRIX
PERFORMANCE MATTERS
Varnish – http://varnish-cache.org
Front-end Performance
VARNISH
HTTP Caching
Caching Fragments (ESI)
FRONT-END PERFORMANCE
Spriting
“Spooning”
<img src="spacer.gif"
data-src="actualimage.jpg" />
Page Weight Trimming
AJAX upgrades
OpenLayers build scripts
Monitoring
HARViewer -
http://www.softwareishard.com/har/viewer/
ShowSlow - http://www.showslow.com/
FRONT-END PERFORMANCE TUNING
Run daily front-end performance tests against a
number of competitors and keep metrics
FRONT-END PERFORMANCE TUNING
CONTRIB SUCCESS STORIES
Social Badges
Flag –
http://dgo.to/flag
Rules –
http://dgo.to/rules
Zagat “Buzz” Blog
Maps
Shop
CONTRIB: ZAGAT "BUZZ" BLOG
Migrate – http://dgo.to/migrate
Views – http://dgo.to/views
CONTRIB: MAPS
OpenLayers – http://dgo.to/openlayers
CONTRIB: SHOP
Übercart – http://dgo.to/ubercart
GOING CUSTOM
Search
Paid Online Subscriptions
SEARCH
Needed to integrate with specific Endeca setup
AJAX refreshing of results
Integration with subscription upselling
Multiple search interfaces
Custom autocomplete
PAID ONLINE SUBSCRIPTIONS
Integrate with specific payment handler and
Zagat backend
Many discrete data points:
Promo codes
Subscription offers
Bundles
Partner promotions
CONTRIB IN CUSTOM CODE
Subscription offers used CTools Export UI
ROBOTS FOR BETTER LIVING
Automate deployments
Performance monitoring
Regression testing
JENKINS
Automated data imports
Automatic deployment
Run SimpleTests before each
deploy
Empowering QA people to push
and do deploys
TortoiseHg on a Windows
server
Cron, with historical reporting
Run daily tasks to sync between systems
MONITORING TOOLS
Real-time Stats
Pingdom
GTMetrix
REAL-TIME STATS
CoRadiant Appliance
Zeus Load Balancer
PINGDOM
Uptime
Backend response times
GTMETRIX
Front-end performance testing
Daily snapshot and performance over time
Can send custom cookies or use HTTP
authentication
SELENIUM
http://seleniumhq.org
Automated regression testing
Run on the QA environment
ARIA-compliant autocomplete
(by upgrading jQuery and jQuery
UI) meant we could test with Selenium
IT'S DANGEROUS TO GO ALONE!
TAKE THIS!
Your Drupal site needs more than just Drupalers
Tips on adding team members
BRINGING IN NON-DRUPAL TALENT
Look for folks:
Who are familiar with contributing to opensource
Interested in learning new things
Examples
Junior developer with a Linux / CS
background who ended up contributing to a
large amount of Drupal development
Experienced contributor to a Linux distribution
with no web programming background who
came in and helped write complex Selenium
tests and automate web QA
Later went on to assume the majority of the
sysops responsibilities
EYE ON THE PRIZE
All software has bugs
Product owners with deep experience will notice
bugs that users won’t
Some features were gone, and users let us know
HINDSIGHT IS 20/20
Config Management
Virtualized LAMP environments
CONFIGURATION MANAGEMENT
Six hosting environments