Download - MidCamp 2014 - A Perfect Launch, Every Time

Transcript
Page 1: MidCamp 2014 - A Perfect Launch, Every Time

A Perfect Launch,Every Time

MidCamp 2014

Page 2: MidCamp 2014 - A Perfect Launch, Every Time

What is a perfect launch?● Schedule - On Time● Cost - On Budget● Scope - On Plan

Page 3: MidCamp 2014 - A Perfect Launch, Every Time

A Perfect Launch Recipe● Launch Team - Onboarding● Launch Check - Best Practices● Load Test - Performance Tuning

Page 4: MidCamp 2014 - A Perfect Launch, Every Time

Launch TeamOnboarding

Page 5: MidCamp 2014 - A Perfect Launch, Every Time

How we prepare for launch● Goal: Get rid of all the “uh-oh” moments● Method: Set clients up for success● Stakeholders:

○ Project Manager - scheduling, best practices○ Developer - platform knowledge, integration○ Sys Admin - responsibilities, delegation○ Business owner - flawless launch

Page 6: MidCamp 2014 - A Perfect Launch, Every Time

Have a system and tools● Specify common workflow requirements

○ Repeatable tasks, delegatable● Project management - Wrike, JIRA, etc.● Orientation logistics

○ Scheduling - calendar, deadlines○ Real-time communication

■ Phone, Video Conference, GoToMeeting, IRC○ Training - documentation, Slides, Videos

Page 7: MidCamp 2014 - A Perfect Launch, Every Time

Mapping the terrain● Scoping of responsibilities

○ Reduce confusion, set stage● Channels of communication

○ Define emergency procedures○ Issue tracking as primary inbox

● Staying in touch○ Available, open, and regular○ Proactive

Page 8: MidCamp 2014 - A Perfect Launch, Every Time
Page 9: MidCamp 2014 - A Perfect Launch, Every Time

Launch CheckBest Practices

Page 10: MidCamp 2014 - A Perfect Launch, Every Time

What is Site Audit?● Drupal 7 static analysis

○ https://drupal.org/project/site_audit● Best practices● Actionable report● Vendor agnostic

○ Optional Pantheon specific recommendations

Page 11: MidCamp 2014 - A Perfect Launch, Every Time

What can an audit analyze?● Drupal caching settings● Codebase and file size● Database structure● Modules, including duplicate / missing● Non-standard code structures● Views caching● Watchdog logs

Page 12: MidCamp 2014 - A Perfect Launch, Every Time
Page 13: MidCamp 2014 - A Perfect Launch, Every Time

Drupal caching settings

Page 14: MidCamp 2014 - A Perfect Launch, Every Time

Drupal cron

Page 15: MidCamp 2014 - A Perfect Launch, Every Time

Drupal’s database

Page 16: MidCamp 2014 - A Perfect Launch, Every Time

Extensions (modules & themes)

Page 17: MidCamp 2014 - A Perfect Launch, Every Time

Views

Page 18: MidCamp 2014 - A Perfect Launch, Every Time

Watchdog

Page 19: MidCamp 2014 - A Perfect Launch, Every Time

● Simple Drupal 7 site● Apache Bench

○ 10,000 requests to home page (5 concurrent)● Warmed cache, cleared watchdog● Comparison

○ Bad config, 1 PHP notice and warning in theme○ Good config, no PHP notices or warnings

Test Configuration

Page 20: MidCamp 2014 - A Perfect Launch, Every Time

Result? Doubled performance.Bad config, errors● 20 min, 52 sec● Requests per

second: 7.98● Time per request:

626.192 ms

Good config, no errors● 10 min, 25 sec● Requests per

second: 15.99● Time per request:

312.780 ms

Page 21: MidCamp 2014 - A Perfect Launch, Every Time

Good configuration matters.

Page 22: MidCamp 2014 - A Perfect Launch, Every Time

Load TestingPerformance Tuning

Page 23: MidCamp 2014 - A Perfect Launch, Every Time

Why load test?● Validate response times under peak load● Smoke - operations under normal load● Stress - behavior past peak load

○ Spike - short bursts● Capacity - plan for growth

Page 24: MidCamp 2014 - A Perfect Launch, Every Time

Who should execute load tests?● Developers execute● Involve stakeholders

Page 25: MidCamp 2014 - A Perfect Launch, Every Time

Tools for load testing● DIY and simple

○ Apache Bench● Complex / dynamic

○ Apache JMeter○ Load Impact○ Load Storm

Page 26: MidCamp 2014 - A Perfect Launch, Every Time

When should I load test?● Before you write your first line of code!

○ Xdebug, Webgrind, Devel, Syslog, Watchdog, New Relic

● Incrementally during development● Prior to launch

Page 27: MidCamp 2014 - A Perfect Launch, Every Time

Where do I perform load tests?● Live environment

○ Bandwidth● Resource limitations● SaaS

Page 28: MidCamp 2014 - A Perfect Launch, Every Time

What to expect during & after● Benchmark often (datapoints vs aggregate)● Be reasonable● Numbers should dictate expectations (back-

end not just Google analytics)

Page 29: MidCamp 2014 - A Perfect Launch, Every Time

Caching● Opcode Cache

○ APC, Zend Opcache, eAccelerator● Backends

○ Memcached, Redis, MongoDB, file system, APC● Front-end caching

○ Varnish, Squid, reverse-proxy CDNs

Page 30: MidCamp 2014 - A Perfect Launch, Every Time

Back-end caching

Redis: Engage!

Page 31: MidCamp 2014 - A Perfect Launch, Every Time

Front-end caching

Anonymous page caching: Disabled!

Page 32: MidCamp 2014 - A Perfect Launch, Every Time

Testing Varnish with cURL

Page 33: MidCamp 2014 - A Perfect Launch, Every Time
Page 34: MidCamp 2014 - A Perfect Launch, Every Time

PHP Slow Log

Page 35: MidCamp 2014 - A Perfect Launch, Every Time

Nginx error log

Page 36: MidCamp 2014 - A Perfect Launch, Every Time

MySQL slow log

Page 37: MidCamp 2014 - A Perfect Launch, Every Time

Pay attention to watchdog

Page 38: MidCamp 2014 - A Perfect Launch, Every Time

Good load test

Page 39: MidCamp 2014 - A Perfect Launch, Every Time

Bad load test

Page 40: MidCamp 2014 - A Perfect Launch, Every Time

Interpreting results● Hard numbers● Business impact

Page 41: MidCamp 2014 - A Perfect Launch, Every Time

Own the results.

Page 42: MidCamp 2014 - A Perfect Launch, Every Time

Thank you! Questions?