midcamp 2014 - a perfect launch, every time
DESCRIPTION
Launches are tough on a new developer. Everyone remembers the lump in their throats around launch time; the rush to finish content, make final theme tweaks, adjust for sudden browser weirdness. As momentum picks up, the odd change request always appears, databases are slingshot hither and yon, while everyone scrambles to resolve merge conflicts like a Tokyo train at rush hour. We emerge scarred but smarter, intent on making the next launch less painful. But with different teams launching different sites, it can be hard to establish an iterative process. Especially as new work accumulates in the backlog, we reap what we sow in technical debt from rushed launches, quick & dirty choices made under the gun, and unimplemented ideas from retrospectives. Pantheon, however, has the same Customer Success team launching several enterprise sites per week, while assisting hundreds of self serve customers when they need a hand. Because we need to work effectively, we have developed the tools and process to ensure: * Great Site Performance - On Day One * Less problems over the long run * Clear Expectations from Informed Stakeholders The session will cover other key areas: 1. Preparing For Launch for the PM, Stakeholder, Developer & Sys Admin 2. Auditing the Site for landmines, carniverous acid pool islands, and deadweight 3. Load Testing to obliterate surprises with actionable results This session is Platform Agnostic; whether you use PAAS, shared hosting, or wield your own hardware, PMs, developers, and clients will leave with new tools in their belt to launch with less agita. We will share some of our challenges and how we overcame them, and hopefully hear from you about how you overcame yours!TRANSCRIPT
![Page 1: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/1.jpg)
A Perfect Launch,Every Time
MidCamp 2014
![Page 2: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/2.jpg)
What is a perfect launch?● Schedule - On Time● Cost - On Budget● Scope - On Plan
![Page 3: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/3.jpg)
A Perfect Launch Recipe● Launch Team - Onboarding● Launch Check - Best Practices● Load Test - Performance Tuning
![Page 4: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/4.jpg)
Launch TeamOnboarding
![Page 5: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/8.jpg)
![Page 9: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/9.jpg)
Launch CheckBest Practices
![Page 10: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/12.jpg)
![Page 13: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/13.jpg)
Drupal caching settings
![Page 14: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/14.jpg)
Drupal cron
![Page 15: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/15.jpg)
Drupal’s database
![Page 16: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/16.jpg)
Extensions (modules & themes)
![Page 17: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/17.jpg)
Views
![Page 18: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/18.jpg)
Watchdog
![Page 19: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/19.jpg)
● 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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/21.jpg)
Good configuration matters.
![Page 22: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/22.jpg)
Load TestingPerformance Tuning
![Page 23: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/24.jpg)
Who should execute load tests?● Developers execute● Involve stakeholders
![Page 25: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/27.jpg)
Where do I perform load tests?● Live environment
○ Bandwidth● Resource limitations● SaaS
![Page 28: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/30.jpg)
Back-end caching
Redis: Engage!
![Page 31: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/31.jpg)
Front-end caching
Anonymous page caching: Disabled!
![Page 32: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/32.jpg)
Testing Varnish with cURL
![Page 33: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/33.jpg)
![Page 34: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/34.jpg)
PHP Slow Log
![Page 35: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/35.jpg)
Nginx error log
![Page 36: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/36.jpg)
MySQL slow log
![Page 37: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/37.jpg)
Pay attention to watchdog
![Page 38: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/38.jpg)
Good load test
![Page 39: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/39.jpg)
Bad load test
![Page 40: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/40.jpg)
Interpreting results● Hard numbers● Business impact
![Page 41: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/41.jpg)
Own the results.
![Page 42: MidCamp 2014 - A Perfect Launch, Every Time](https://reader035.vdocuments.us/reader035/viewer/2022081400/554f940fb4c905d25b8b539f/html5/thumbnails/42.jpg)
Thank you! Questions?