SANDcamp 2014 - A Perfect Launch, Every Time

  • 1,078 views
Uploaded on

How do you ensure that your Drupal site launch goes off without a hitch? Launches are tough on a new developer. Everyone remembers the lump in their throats around launch time; the rush to finish …

How do you ensure that your Drupal site launch goes off without a hitch? 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 simultaneously 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:

- Preparing for launch for the PM, Stakeholder, Developer & Sys Admin
- Auditing the site for land mines, carnivorous acid pool islands, and deadweight
- 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!

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,078
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. A Prefect Lunch… Evry Tim #SANDcramp 2014
  • 2. A Perfect Launch… Every Time #SANDcamp 2014
  • 3. Challenges for a perfect launch ● On time ● On budget ● On Plan
  • 4. Encourage self-sufficient users ● Reduce cost ● Easier to work and learn ● Maintain good communication
  • 5. Onboarding Converting Newbies to Pros
  • 6. How we prepare for launch ● Aim: Get rid of all the “uh-oh” moments ● Recipe: Set clients up for success ● Stakeholders: ○ ○ ○ ○ Project Manager - scheduling, best practices Developer - platform knowledge, integration Sys Admin - responsibilities, delegation Business owner - flawless launch
  • 7. 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
  • 8. Mapping the territory ● 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
  • 9. Site Audit Landmines, acid pools, and dead weight.
  • 10. Why audit sites? ● ● ● ● ● Ensure optimal configuration Every site is unique, but… Built with the same framework Similar architectural requirements One size fits most.
  • 11. What is static program analysis? ● ● ● ● Performance & behavior gathering Does not execute Non-intrusive Automated
  • 12. Why use static program analysis? ● Fast ● Repeatable ● Detects common problems
  • 13. What is Site Audit? ● Drupal 7 static analysis ○ https://drupal.org/project/site_audit ● Best practices ● Actionable report ● Vendor agnostic ○ Optional Pantheon specific recommendations
  • 14. What can Site Audit analyze? ● ● ● ● ● ● ● Drupal caching settings Codebase and file size Database structure Modules, including duplicate / missing Non-standard code structures Views caching Watchdog logs
  • 15. What does it not analyze? ● ● ● ● DOM / front-end performance Usability and site experience Aesthetics Content
  • 16. Drush format
  • 17. HTML format with optional Bootstrap
  • 18. JSON format
  • 19. Launch Check ● Site Audit in the Pantheon dashboard ○ Uses --vendor=pantheon config ● Most actionable checks ● Runs automatically
  • 20. Best practices
  • 21. Drupal caching settings
  • 22. Drupal cron
  • 23. Drupal’s database
  • 24. Extensions (modules & themes)
  • 25. Drupal’s System Status
  • 26. Users
  • 27. Views
  • 28. Watchdog
  • 29. Test Configuration ● 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
  • 30. 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
  • 31. Good configuration matters.
  • 32. Load Testing Obliterate surprises with actionable results
  • 33. What does a load test measure? ● ● ● ● ● Performance Smoke Spike Stress Capacity
  • 34. Why load test? ● Resource planning ● A/B testing ● Budgeting
  • 35. 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
  • 36. Caching ● Opcode Cache ○ APC, Zend Opcache, eAccelerator ● Backends ○ Memcached, Redis, MongoDB, file system, APC ● Front-end caching ○ Varnish, Squid, reverse-proxy CDNs
  • 37. Testing Varnish with cURL
  • 38. What to expect during & after ● Benchmark often (datapoints vs aggregate) ● Be reasonable ● Numbers should dictate expectations (backend not just Google analytics)
  • 39. PHP Slow Log
  • 40. Nginx error log
  • 41. MySQL slow log # Time: 130320 7:30:26 # User@Host: db_user[db_database] @ localhost [] # Query_time: 4.545309 Lock_time: 0.000069 Rows_sent: 219 Rows_examined: 254 SET timestamp=1363779026; SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';
  • 42. Pay attention to watchdog 6652 11/Oct 15:05 warning php Warning: Cannot modify header information - headers already sent by (output started at /srv/www/code/includes/common.inc:2700) in drupal_goto() (line 6643 11/Oct 14:21 notice php Notice: Trying to get property of non-object in cap_ui_preprocess_page() (line 27 of /srv/www/code/sites/all/themes/cap_ui/ template.php). 6595 11/Oct 13:00 notice php Notice: Unknown: Can not authenticate to IMAP server: [AUTHENTICATIONFAILED] Invalid credentials (Failure) (errflg=2) in main() (line of ).
  • 43. New Relic
  • 44. Who should execute the test ● Developers execute ● Involve stakeholders
  • 45. Where to perform the test ● Live environment ○ Bandwidth ● Resource limitations ● SaaS
  • 46. Tools for load testing ● DIY and simple ○ Apache Bench ● Complex / dynamic ○ Apache JMeter ○ Load Impact ○ Load Storm
  • 47. Interpreting results ● Hard numbers ● Business impact
  • 48. Load Test report
  • 49. Own the results.
  • 50. Thank you! Questions? @getpantheon irc.freenode.net #pantheon getpantheon.com