Go fast

C64a0152c9b0928e62d88f0bb5eb8138?s=47 Ines Sombra
February 14, 2018

Go fast

Reference Materials > https://github.com/Randommood/go-fast

We all want to move fast. We construct our systems in a rapidly-iterating and agile way. We design and build them to be efficient, robust, and have low latency. But sometimes in the search for speed we make decisions that come back to haunt us. Some of these are reasonable tradeoffs, some can have long-term repercussions, and some can be outright catastrophic.

At Fastly, we serve over 10% of the internet’s traffic and power tens of thousands of online destinations. We have a unique vantage point on the state of the web and going slow is not an option. When Beyonce tweets a baby photo, the NYT breaks a story, or taylor swift drops a new album on spotify … our edge cloud sees it first and brings it to you.

In this talk we’ll go over the key lessons we learned while building our edge cloud services: what worked, what didn’t, the tradeoffs we made, and what can you learn from our experiences while building your own distributed applications & teams at scale.

C64a0152c9b0928e62d88f0bb5eb8138?s=128

Ines Sombra

February 14, 2018
Tweet

Transcript

  1. What does it take to go FAST

  2. Hi, I’m Inés Sombra @Randommood Thank you! I’m excited to

    be here
  3. WHY W S SYSTEMS T TAKEAWAYS Today’s Agenda

  4. 2013?

  5. Artur Bergman

  6. Why go
 Fast?

  7. None
  8. None
  9. None
  10. Edge Cloud Services

  11. Edge Cloud Service Constraints Highly Available Globally distributed Horizontally Scalable

    Secure Self healing Gracefully degrade under faults* Latency sensitive 
 and fast! (* when appropriate)
  12. Your Constraints Efficient computations Elastic platform Secure Fast & responsive

    ($$$)
  13. Lara Hogan 2017

  14. Optimizing the images in your site is a great way

    to make it fast Look for optimizations you can make based on image format, quality, & display needs Image pre-processing is a way to do this Lara’s Lessons ! " # ∠ ∠ ∠ ∠ ∠ ' www.fastly.com
  15. JPEG 1920 × 1080 px Max quality 2.3MB Original image

  16. Hero image Thumbnail image 200 × 200 px Quality 85 6.93KB vs

    2.3MB JPEG 800 × 560 px Quality 85 47 KB vs 2.3MB
  17. Edge Cloud Services

  18. Image Optimization Service

  19. Building 
 Systems (

  20. Building New Systems Fast Leverage orthogonality Invest in operational excellence

    Aggressively narrow down scope and set a MVS* (* Minimum Viable Speed)
  21. Orthogonality / Composability ) + + + System Goal Constraints

    Small Team
  22. Orthogonality / Composability CDN for request management CDN for logging

    CDN for authentication CDN for state management CDN for purging CDN for API translation CDN for fault tolerance CDN for doing less work!
  23. Image Optimizers Origin

  24. gordo-thumb please! Image Optimizers Origin

  25. gordo-thumb please! original gordo please! Image Optimizers Origin

  26. gordo-thumb please! there you go Image Optimizers Origin

  27. gordo-thumb please! gordo-thumb please! Image Optimizers Origin

  28. Image Optimizers gordo-thumb please! Done! Origin

  29. gordo-thumb please! there you go Image Optimizers Origin

  30. YASS! Image Optimizers Origin

  31. gordo-thumb please! Image Optimizers Origin

  32. YASS! Image Optimizers Origin

  33. Origin Orthogonality & You Image 
 Pre-Processing

  34. Origin Orthogonality & You Image 
 Optimization Reduce storage cost

    in origin
  35. Orthogonality & You Your System Origin Image 
 Optimization

  36. Doing less is awesome, look for ways in which you

    can leverage composability Moving logic & data closer to end users increases speed & efficiency (if you can) Your system is everything from your end users to your origin Leverage Orthogonality
  37. ImageOpto POP Invest in Operational Excellence

  38. ImageOpto GCP ImageOpto POP Invest in Operational Excellence

  39. Image Optimizers Invest in Operational Excellence

  40. Image Optimizers Invest in Operational Excellence

  41. Image Optimizers Invest in Operational Excellence

  42. Image Optimizers Invest in Operational Excellence

  43. Image Optimizers Invest in Operational Excellence

  44. Image Optimizers Invest in Operational Excellence

  45. Complex operations make systems less resilient, more incident-prone, and more

    difficult to manage Pay-as-you-go investment model in system operability Pay attention to deployment cadence & other metrics* Invest in Operational Excellence (* PRs open & age, number of incidents)
  46. Aggressively Narrow down your scope

  47. Aggressively Narrow down your scope Decodes from an uncompressed format

    are faster About 90% reduction in processing time by saving the decoded image into an uncompressed format Let’s use this strategy to provide speedier transformations! *
  48. Aggressively Narrow down your scope Design resulted in a more

    complex request cycle. What happened in this request? was hard to answer Starting with a non-trivial solution took a lot of time Unexpected interactions with purging & shielding !
  49. Set your Minimum Viable Speed Setting an SLA is hard

    when you are creating a new service The network can make you slow, things you didn’t know you had (or that you were not doing well) can make you slow Pick a MVS to get started, optimize & learn as you go, then formalize your SLA
  50. Fast enough is good enough* Discipline yourself to ship something

    first & expand your API as needed Tracking and fixing “its slow” is an ongoing activity Narrow Scope & Setting your MVS (* super context specific)
  51. Building trust is key Focus on the whole team’s output

    Metrics to watch: PRs open & age, deployment cadence, review speed, etc Strive to create a sense of ownership 
 & pair it with the ability to have impact Supported By your Organization
  52. Camille 
 Fournier

  53. ( Some
 Takeaways

  54. Tradeoffs are made in context and should be revisited often

    Goal tunnel vision may lead you to work harder on the wrong solution Narrowing focus first and expand it as you learn is a solid approach All about the Tradeoffs
  55. The less to do the faster you can go, reduce

    your scope! Keep the global system context in mind Move as much logic & data to the edge as you can for speed & efficiency SYSTEMS TL; DR; ) + ORGS Building trust is key Focus on the whole team’s output Invest in operability There are many paths to an acceptable solution (watch out for NIH)
  56. https://github.com/Randommood/go-fast @Randommood Special thanks to: James Turnbull, Tyler McMullen, Joao

    Taveira, Elaine Greenberg, Peter Teichman, Lorenzo Saino, Adam Thomason, & Greg Bako Remember to optimize your images! THANK YOU