Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to launch a large-scale website confidently and successfully

How to launch a large-scale website confidently and successfully

Launch day for a website can be a stressful one, especially with the project stakeholders keeping an extra keen eye on how things are going.

Having relaunched Matalan’s website back in May, Ryan will be talking you through various technical and non-technical lessons learned opening the floodgates to large-scale traffic, so you can be far more confident in your next launch.

This talk was given at Leeds JS – October 25th, 2017.

Note: these slides have been expanded with additional notes to cover detail made verbally.

F085bf2092cb300bac787cc5bc65d301?s=128

Ryan Townsend

October 25, 2017
Tweet

Transcript

  1. How to launch a large-scale website confidently and successfully Ryan

    Townsend – 25th October 2017 @ryantownsend
  2. “Just use Heroku auto-scaling and forget about it” Kris Quigley

    – Lead Architect @ SHIFT (sarcasm)
  3. Timeline Development Pre-launch Launch Post-launch

  4. Ryan Townsend, CTO @ryantownsend

  5. Relaunched on SHIFT: May 2017

  6. Development http://www.spacex.com/media-gallery/detail/149431/9391

  7. Keep things simple • New features or new technology… not

    both • Mature (or ‘boring’) technology and architecture • Limit project scope
  8. Load testing • It’s A LOT harder than people let

    on • Assume user behaviour will change • Use real metrics and logged user behaviour • Use a wide variety of metrics
 – not just traffic • Post-test validate the metrics
 – at source, not just in your load testing tool • Push the limits
 – understand when you need to proactively start load reduction
  9. Caching • Care for the performance of cache misses
 –

    Faster performance = lower load (typically) • Content Delivery Networks
 – Assets: far-future expiry
 – Content: start with low TTLs, raise for desired effect • Consider redirects and 404s • Fragment caching • Low-level method / query caching
  10. Caching Higher hit ratios = less traffic hitting our servers

  11. Pre-launch https://www.flickr.com/photos/spacex/31450835954/

  12. Communication • Build a positive, trusting relationship with client /

    stakeholder • Understand their metrics • Authority
 – e.g. who can agree to change the plan? i.e. disabling a feature to reduce load • Perspective
 – what’s critical? what’s a problem? what can be ignored?
  13. Visibility • System monitoring
 – infrastructure & client-side • Client

    / stakeholder dashboards & reporting
 – see what they see • Customer engagement
 – social media, customer support • Instant access to logs
 – filterable, searchable Above shows how New Relic tracked a 3rd party script harming site performance but the server-side was fine.
  14. Roleplay • What could go wrong? • Who would you

    escalate to? • How would you solve? • What systems do you need access to? • What people do you need access to?
  15. Launch https://unsplash.com/photos/yJv97tE7GDM

  16. Keep calm and carry on • Expect issues • Keep

    a level-head • Be professional • You’re an expert – you’ve got this
  17. Release mechanism • Big bang • Holding page • Easy

    ways out • Feature toggles • Canary release • Start minimal and increase features/percentage
  18. Scaling • Scale up • Keep it there • Auto-scaling

  19. Post-launch https://unsplash.com/photos/-p-KCm6xB9I

  20. Build Confidence • Gather actual real metrics & usage patterns

    • Revisit your load tests and re-assess • Re-run load tests for future releases • Ship some safe releases • Ship small releases, often
  21. Thank you @ryantownsend