So you think you can SCALE by Lori Macvittie

So you think you can SCALE by Lori Macvittie

Transcript

  1. SO YOU THINK YOU CAN S C A L E

    @lmacvittie @F5Networks
  2.    Why do we scale?

  3. 100 Milliseconds Slower -1% SALES -0.2% SEARCHES -2% CONVERSION $660M

    $45M $244M H/T James Urquhart, SOASTA Data: Gartner, Walmart
  4. 1 Minute of Downtime Data: Emerson Power Costs an average

    of $7300 Average total cost of downtime per year across industries PRODUCTIVITY IT PRODUCTIVITY LOST REVENUE $53,608 $140,543 $183,724
  5. =

  6. UP OUT How do we scale today?

  7. POLB (Plain Old Load Balancing) We throw POLB in front

    of everything
  8. But architectures and apps are changing THEN MONOLITHIC MICROSERVICES &

    APIs NOW
  9. And so are “users” THEN Humans NOW Humans, Systems, Things

  10. L7 LB Layer 7 Load Balancing Modern Apps Need Modern

    Scale
  11. Scaling Modern Apps THEN CHOOSING AN ALGORITHM NOW • Round

    Robin • Least Connections • Fastest Response CHOOSING AN ARCHITECTURE • Horizontal • Functional • Partitioning 
  12. Growth and Innovation Architectural Debt Software has technical Debt. Networks

    have architectural debt.
  13. L7 LB Scalability architectures based on Scale Cube Horizontal Duplication

    Functional Decomposition Data Partitioning (Sharding) X-AXIS Y-AXIS Z-AXIS
  14. • Like clustering • Leverages cloning (horizontal duplication) • Typically

    operates at layer 4 (TCP) • This is POLB X-AXIS
  15. Y-AXIS • Like routing / URL dispatch • Uses identifiable

    variables (usually from HTTP headers) • Operates at layer 7 (HTTP) /login/ /checkout/ /search/
  16. Z-AXIS /car/[A-M]/ /car/[N-U]/ /car/[V-Z]/ • Like sharding • Uses one

    or more identifiable variables (usually from HTTP headers) • Operates at layer 7 (HTTP)
  17. API API API API API Façade

  18. L7 L7 L7 L7 API API API API API API

    API /status /update /status /update /billing /profile /update Variations on a Theme
  19. • Data Partitioning (Sharding) Architectures • URL/HTTP dispatch • Dynamic

    routing based on backend data • Scaling by Functional Decomposition • API metering • App versioning / migration • API deprecation L7 LB Architecting Scalability
  20. Things to Consider Sooner Rather than Later Is your API

    design well-suited to scaling in any way other than POLB? How do you identify people, systems, and things? How do you distinguish between API versions? Multi-tenant or single tenant microservices? The answers to these questions will impact your scaling architectural options*. Emacs or vi? *Maybe not that last one. How are you monitoring (and what are you measuring with it)?
  21. THANK YOU! @lmacvittie @F5Networks l.macvittie@f5.com