Your SlideShare is downloading. ×

A Perfect Website Launch Every Time

1,176

Published on

Here we breakdown how to have a perfect website launch every time that we unveiled at Drupal BADCamp 2013. …

Here we breakdown how to have a perfect website launch every time that we unveiled at Drupal BADCamp 2013.

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 Drupal enterprise websites 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

These slides will cover other key areas:

1. Preparing For Launch for the PM, Stakeholder, Developer & Sys Admin
2. Auditing the Site for landmines, carnivorous acid pool islands, and deadweight
3. Load Testing to obliterate surprises with actionable results

These slides are 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. We will share some of our challenges and how we overcame them, and hopefully hear from you about how you overcame yours!

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,176
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
3
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 BADCramp 2013
  • 2. A Perfect Launch, Every Time BADCamp 2013
  • 3. Introductions • Suzanne Aldrich • Jon Peck • Timani Tunduwani
  • 4. Why Cake? • CAXE • Clarity • Accuracy • eXecution • Empathy
  • 5. Challenges for a perfect launch • On time • On budget • On plan
  • 6. Encourage self-sufficient users • Reduce cost • Make it easier to work and learn • Maintain good communication
  • 7. Onboarding: Converting Newbies to Pros Suzanne
  • 8. How we prepare for launch • Aim: Get rid of all the “Oh my God!” moments • Recipe: Set clients up for success • Stakeholders: • Project Manager - best practices • Business owner - flawless launch • Developer - knowledge of platform • Sys Admin - delegation
  • 9. Have a system and tools • Specify workflow requirements • Task list system - do.com, Trello, OmniPlan • Orientation logistics - gCal • Email templates & forms - wiki, Google • Online calls & screenshares - GoToMeeting • Slideshows & scripts - Keynote
  • 10. Mapping the territory • Scoping of responsibilities • Managing expectations • Channels of communication • • • Emergency procedures Primary inbox Communicating blockers
  • 11. Site Auditing: Landmines, acid pools, and dead weight. Jon
  • 12. Why audit sites? • Ensure optimal configuration • Every site is unique, but… • Built with the same framework • Similar architectural requirements • One size fits most.
  • 13. What is static program analysis? • Performance & behavior gathering • Does not execute • Non-intrusive • Automated
  • 14. Why use static program analysis? • Fast • Repeatable • Detects common problems
  • 15. What is Site Audit? • Drupal 7 static analysis • https://drupal.org/project/site_audit • Best practices • Actionable report • formats: drush, HTML, JSON
  • 16. 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
  • 17. What does static analysis not address? • DOM / front-end performance • Usability and site experience • Aesthetics • Content
  • 18. [demo]
  • 19. Load Testing: Obliterate surprises with actionable results Timani
  • 20. What does a load test measure? • Performance • Smoke • Spike • Stress • Capacity
  • 21. Why load test? • Resource planning • A/B testing • Budgeting
  • 22. When should I test? • Before you write your first line of code! • Xdebug, Webgrind, Devel, Syslog, Watchdog, New Relic • Incrementally during development • Prior to launch
  • 23. Caching • Opcode Cache • • Backends • • APC, Zend Opcache, eAccelerator Memcached, Redis, MongoDB, file system, APC Front-end caching • Varnish, Squid, reverse-proxy CDNs
  • 24. Testing Varnish With Curl curl  -­‐Ik  http://example.org   X-­‐Varnish:  1844141790  1843977932   cache-­‐control:  public,  max-­‐age=900   expires:  Sun,  19  Nov  1978  05:00:00  GMT   x-­‐drupal-­‐cache:  HIT   x-­‐generator:  Drupal  7  (http://drupal.org)   Via:  1.1  varnish   Age:  697
  • 25. What to expect during and after • Benchmark often (datapoints vs aggregate) • Be reasonable • Numbers should dictate expectations (back-end not just Google analytics)
  • 26. PHP Slow Log [26-­‐Sep-­‐2012  23:41:50]    [pool  www]  pid  17761
 script_filename  =  /.../index.php
 [0x0000000001006408]  execute()  /.../includes/database/database.inc:2139
 [0x0000000001005cf0]  execute()  /.../includes/database/database.inc:664
 [0x0000000001005a38]  query()  /.../includes/database/select.inc:1264
 [0x0000000001004760]  execute()  /.../sites/all/modules/views/plugins/ views_plugin_query_default.inc:1398
 [0x0000000001003c40]  execute()  /.../sites/all/modules/views/includes/view.inc: 1098
 [0x00000000010027f8]  execute()  /.../sites/all/modules/views/includes/view.inc: 1118
  • 27. Nginx error log 013/10/21  17:14:07  [alert]  23647#0:  *53768  128   worker_connections  are  not  enough  while  connecting  to   upstream,  client:  127.0.0.1,  server:  ,  request:  “POST  / index.php?q=submit  HTTP/1.0”,  upstream:  “fastcgi://unix:/ srv/bindings/.../run/php-­‐fpm.sock:”,  host:  “www.example.org”
  • 28. 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';
  • 29. The bite is worse than the bark! • Pay attention to your watchdog • 6662    11/Oct  21:41    warning    cron    Attempting  to  re-­‐run  cron  while  it  is  already   running.
 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  ).
 6594    11/Oct  13:00    notice      php      Notice:  Unknown:  Retrying  PLAIN  authentication  after   [AUTHENTICATIONFAILED]  Invalid  credentials  (Failure)  (errflg=1)  in  main()  (line    of  ).
 6593    11/Oct  13:00    notice      php      Notice:  Unknown:  Retrying  PLAIN  authentication  after   [AUTHENTICATIONFAILED]  Invalid  credentials  (Failure)  (errflg=1)  in  main()  (line    of  ).
  • 30. New Relic
  • 31. Who should execute the test • Developers execute • Involve stakeholders
  • 32. Where to perform the test • environment • bandwidth • resource limitations • SAAS
  • 33. Tools for load testing • DIY and simple • • Apache Bench Complex / dynamic • Apache JMeter • Load Impact • Load Storm
  • 34. Interpreting results • Hard numbers • Business impact
  • 35. Load Test report
  • 36. What’s next? • Own the results.
  • 37. Thank you! ! Questions?

×