zagat.com case study - drupal · drupal and friends robots for better living it’s dangerous to go...

40

Upload: voliem

Post on 15-Feb-2019

221 views

Category:

Documents


0 download

TRANSCRIPT

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