Zagat.com Case Study (DrupalCon Denver 2012)
-
Upload
phase2 -
Category
Technology
-
view
1.059 -
download
2
description
Transcript of Zagat.com Case Study (DrupalCon Denver 2012)
ZAGAT.COM CASE STUDYZAGAT.COM CASE STUDY
WHO ARE WE?WHO ARE WE?Steven Merrill
Director of Engineering, Phase2 Technology @stevenmerrill
Brian McMurray
Developer, Phase2 Technology @bmcmurray
, the quick history, the quick history
Founded in 1979 by Tim and Nina Zagat
User-Generated Content before “User-Generated Content”
“The Gastronomic Bible”- The Wall Street Journal
We worked with Zagat from June 2010 -November 2011
THE PROBLEM(S)THE PROBLEM(S)Legacy ASP.NET website rapidly aging
Updates difficult
Complicated QA testing and deploymentprocess
Desire for website to be more social
Separated systems (website, blog, webstore)
THE SOLUTIONSTHE SOLUTIONSFight 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 USERSFIGHT FOR THE USERS
Iterate quickly and test the ideas with real users
Track goals and analytics
USER TESTINGUSER TESTINGFormal in-person interviews with functionalprototype
On-going user testing through usertesting.comservice
Users could be granted special permission(roles) to access beta features
USER TESTING (VIDEO)USER TESTING (VIDEO)
00:01 -00:34
TRACK GOALS AND ANALYTICSTRACK GOALS AND ANALYTICSGoogle Analytics –http://dgo.to/google_analytics
CrazyEgg analytics – http://crazyegg.com
Google Website Optimizer for multi-variatetesting
Links with anchor names (# tags) to track in-sitereferrals
DRUPAL AND FRIENDSDRUPAL AND FRIENDSUse complimentary technologies to augment
Contrib for the 80%, Custom for the 100%
DYNAMIC CHARTINGDYNAMIC CHARTING
RaphaëlJS –http://raphaeljs.com
Browser Compatibility
Mobile phonecompatibility
THE ZAGAT MATRIXTHE ZAGAT MATRIX
THE ZAGAT MATRIXTHE ZAGAT MATRIX
PERFORMANCE MATTERSPERFORMANCE MATTERSVarnish – http://varnish-cache.org
Front-end Performance
VARNISHVARNISHHTTP Caching
Caching Fragments (ESI)
FRONT-END PERFORMANCEFRONT-END PERFORMANCESpriting
“Spooning”
<img src="spacer.gif"data-src="actual-image.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 TUNINGFRONT-END PERFORMANCE TUNING
Run daily front-end performance tests against anumber of competitors and keep metrics
FRONT-END PERFORMANCE TUNINGFRONT-END PERFORMANCE TUNING
CONTRIB SUCCESS STORIESCONTRIB SUCCESS STORIESSocial Badges
Flag –http://dgo.to/flag
Rules –http://dgo.to/rules
Zagat “Buzz” Blog
Maps
Shop
CONTRIB: ZAGAT "BUZZ" BLOGCONTRIB: ZAGAT "BUZZ" BLOGMigrate – http://dgo.to/migrate
Views – http://dgo.to/views
CONTRIB: MAPSCONTRIB: MAPSOpenLayers – http://dgo.to/openlayers
CONTRIB: SHOPCONTRIB: SHOPÜbercart – http://dgo.to/ubercart
GOING CUSTOMGOING CUSTOMSearch
Paid Online Subscriptions
SEARCHSEARCHNeeded to integrate with specific Endeca setup
AJAX refreshing of results
Integration with subscription upselling
Multiple search interfaces
Custom autocomplete
PAID ONLINE SUBSCRIPTIONSPAID ONLINE SUBSCRIPTIONSIntegrate with specific payment handler andZagat backend
Many discrete data points:
Promo codes
Subscription offers
Bundles
Partner promotions
CONTRIB IN CUSTOM CODECONTRIB IN CUSTOM CODESubscription offers used CTools Export UI
ROBOTS FOR BETTER LIVINGROBOTS FOR BETTER LIVINGAutomate deployments
Performance monitoring
Regression testing
JENKINSJENKINSAutomated data imports
Automatic deployment
Run SimpleTests before eachdeploy
Empowering QA people to pushand do deploys
TortoiseHg on a Windowsserver
Cron, with historical reporting
Run daily tasks to sync between systems
MONITORING TOOLSMONITORING TOOLSReal-time Stats
Pingdom
GTMetrix
REAL-TIME STATSREAL-TIME STATSCoRadiant Appliance
Zeus Load Balancer
PINGDOMPINGDOMUptime
Backend response times
GTMETRIXGTMETRIXFront-end performance testing
Daily snapshot and performance over time
Can send custom cookies or use HTTPauthentication
SELENIUMSELENIUMhttp://seleniumhq.org
Automated regression testing
Run on the QA environment
ARIA-compliant autocomplete(by upgrading jQuery and jQueryUI) meant we could test with Selenium
IT'S DANGEROUS TO GO ALONE!IT'S DANGEROUS TO GO ALONE!TAKE THIS!TAKE THIS!Your Drupal site needs more than just Drupalers
Tips on adding team members
BRINGING IN NON-DRUPAL TALENTBRINGING IN NON-DRUPAL TALENTLook for folks:
Who are familiar with contributing to open-source
Interested in learning new things
Examples
Junior developer with a Linux / CSbackground who ended up contributing to alarge amount of Drupal development
Experienced contributor to a Linux distributionwith no web programming background whocame in and helped write complex Seleniumtests and automate web QA
Later went on to assume the majority of thesysops responsibilities
EYE ON THE PRIZEEYE ON THE PRIZEAll software has bugs
Product owners with deep experience will noticebugs that users won’t
Some features were gone, and users let us know
HINDSIGHT IS 20/20HINDSIGHT IS 20/20Config Management
Virtualized LAMP environments
CONFIGURATION MANAGEMENTCONFIGURATION MANAGEMENT
Six hosting environments