Sign O' The Times: Iterative system evolution at hyperscale

Abstract

All systems reflect the history and evolution of their designers, as well as their constraints in time, cost, team composition, and organizational factors. The architecture of our applications documents our attempts at making tradeoffs to balance our needs and limitations. If we get it right our systems will support 1 or 2 orders of magnitude growth. But when growth accelerates, systems will show signs of stress. Where and how this stress will degrade your application is a challenge to predict, or even detect in real time.

Setting a course of action to meet new growth can be difficult. Architectural changes are even more burdensome for hyperscale systems. Tolerances are lower and component changes must not regress in performance. Edge cases that are one-in-a-million events become common. But there is hope! Here are some proven patterns and lessons learned while evolving systems at internet-scale.

Outline

  • “Play In The Sunshine” - Introduction
  • “It’s Gonna Be A Beautiful Night” - Before we get started
  • “Sign O’ The Times” - On System Architecture
  • “Strange Relationship” - Sustained Growth & Systems
  • “U Got The Look” - When re-architecture is unavoidable
  • “Forever In My Life” - Reflections & Takeaways

Thank you!

Thank you to everyonw who helped with feedback, resources, and advice for this talk. Special thanks to: John Becker, Peter Teichman, James Turnbull, Simon Wistow, Chris Rivera, Robert Wultsch, Patrick Hamman, Kelly McLaughlin, Brad Whitaker, Marcus Barczak, Ian Fung, and Hooman Beheshti.

References

Image links