This document provides guidance on how to properly launch a new website or application. It emphasizes the importance of thorough preparation, documentation of roles and responsibilities, effective communication practices, and testing to eliminate problems. This includes performing a site audit to identify issues, mapping processes, encouraging self-sufficiency, and load testing to ensure optimal performance and capacity under stress. The goal is to establish best practices and systems that result in flawless launches and set clients up for success.
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
11. Why audit sites?
●
●
●
●
●
Ensure optimal configuration
Every site is unique, but…
Built with the same framework
Similar architectural requirements
One size fits most.
12. What is static program analysis?
●
●
●
●
Performance & behavior gathering
Does not execute
Non-intrusive
Automated
13. Why use static program analysis?
● Fast
● Repeatable
● Detects common problems
14. What is Site Audit?
● Drupal 7 static analysis
○ https://drupal.org/project/site_audit
● Best practices
● Actionable report
● Vendor agnostic
○ Optional Pantheon specific recommendations
15. 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
16. What does it not analyze?
●
●
●
●
DOM / front-end performance
Usability and site experience
Aesthetics
Content
31. 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
32. 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
37. 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
40. What to expect during & after
● Benchmark often (datapoints vs aggregate)
● Be reasonable
● Numbers should dictate expectations (backend not just Google analytics)
44. 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';
45. 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 ).