Optimizing your Online Store for the Holidays Brian Doll, SheetMusicPlus.com Mike Malloy, New Relic
Jun 26, 2015
Optimizingyour Online Storefor the Holidays
Brian Doll, SheetMusicPlus.comMike Malloy, New Relic
NewRelic.comNew
Agenda
๏ Why application performance is important?๏ What’s at stake?๏ About SheetMusicPlus.com๏ Tips for optimizing your online store๏ Special “Get Ready for the Holidays” Promotion
NewRelic.comNew
Why Application Performance is Important to Your Business
๏ 30% of online shoppers abandon slow or unreliable sites
๏ In 2008 holiday season, 36% of users encountered web performance problems that led to abandonment
๏ Specific problems encountered• Application slow while shopping• Application froze/crashed• Unable to make a purchase at first attempt• Website down/unavailable• Apparent successful transaction failed to complete
NewRelic.comNew
What’s at Stake?
๏ $50 Billion a year is lost in cart abandonment๏ 48% will go to purchase from another online
source๏ 79% are less likely to visit the site again๏ 44% of affected customers tell others about their
poor experience๏ 46% form a negative impression of the company
NewRelic.comNew
SheetMusicPlus.com
Largest source for sheet music, instructional materials, and song books in the world.
NewRelic.comNew
SMP: Quick Stats
๏ 12 year old online business๏ Shipping to 170+ countries๏ Over 600k SKUs, 1.5M songs
๏ All hosts are virtualized with VMWare๏ Citrix Netscaler๏ 14 Rails application servers (Apache +
Passenger)๏ 5 memcached servers๏ 3 Solr servers (search, faceted navigation)๏ 3 MySQL servers
NewRelic.comNew
Scalability Buzzwords
SSL acceleration
Content Delivery Network
Memcached
ETagsAmazon S3
Amazon EC2
HTTP Caching
Share nothingQuery Cache
Load balancingCache hit ratios
Database read slaves
Asynchronous processing
AJAX
Web Services
Data sharding
HTTP compressionPassengerMaxPool
Size
NewRelic.comNew
Analyze your architecture
๏ What systems are involved in…• displaying a product detail page• your checkout process• searching your catalog• registering as a new user
๏ How does your application respond to failure of any of your system connections?• search servers offline• payment gateway unresponsive• email server overloaded• DNS lookup failures
NewRelic.comNew
Analyze your business
๏ How do new and returning customers use your application?
๏ What is your ratio of new and returning customers?
๏ How might holiday traffic impact that ratio?๏ How might an increase in sales negatively impact
the customer experience?• How fresh is your inventory online?• How might order status information be affected?• What is the average response time for your call center?
NewRelic.comNew
Metrics for everything
๏ New Relic RPM• Application performance, systems metrics, custom metrics with
dashboards
๏ New Relic RPM for Java (Solr search servers)• Memory profiling, garbage collection, throughput, performance
๏ MySQL Enterprise Monitor• MySQL performance, slow queries, explain, replication delay,
configuration
๏ Cacti (based on RRDtool)• Host servers, VMs, Memcached stats, network, anything you can think of
๏ Google Analytics• Customer behavior, on-site search, conversion, other business metrics
NewRelic.comNew
Now you can optimize
1. Identify a specific pain point2. Ensure you have verifiable metrics3. Deploy an initial optimization effort4. Measure the effects. Are you on the right path?5. Deploy the “final” optimization6. Document your optimization timeline7. Profit! Demonstrate the business value of your
optimizations8. Repeat
NewRelic.comNew
Simple Optimizations
๏ Implement the circuit breaker pattern• Don’t let system failures bring you down! (from Release It! By Michael
Nygard)• http://github.com/wsargent/circuit_breaker
๏ Cache page fragments for set periods of time• For dynamic content that can be “stale” for some definable period of time• http://github.com/rlivsey/timed_fragment_cache/
๏ Content Delivery Network• Essential for international customers; requires coordination with deploys
๏ Memcached• Set up memcached and you’ll find more ways to use it every day
๏ New Relic RPM• I would not run a Rails app in production without it
NewRelic.comNew
Embrace Change
๏ No code freeze!• Take advantage of this increase in customer demand• Implement new business strategies to adapt to changing demographics
๏ Focus on your ability to release change quickly• Strive to release to production as frequently as your business can
handle• Ensure your releases are automated and repeatable• Understand how your system behaves during a release• Releases should be low ceremony, as a testament to how rigorous your
software testing and business approval processes are
๏ Add capacity on-demand• How fast can you get a new app instance online and handling requests?• Engine Yard Flex is an excellent model for how we should be thinking
about our infrastructure, software dependencies and release processes
NewRelic.comNew
Get Ready for the Holidays Promotion
๏ New customers: any account opened before October 15 will get 25% off
๏ Current customers: Any upgrade – additional hosts or higher level of RPM service before October 15 gets 25% off
๏ Enter Promo Code: NR-HOHOHO