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

Go fast

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.

Ines Sombra

February 14, 2018
Tweet

More Decks by Ines Sombra

Other Decks in Technology

Transcript

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

    Secure Self healing Gracefully degrade under faults* Latency sensitive 
 and fast! (* when appropriate)
  2. 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
  3. 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
  4. Building New Systems Fast Leverage orthogonality Invest in operational excellence

    Aggressively narrow down scope and set a MVS* (* Minimum Viable Speed)
  5. 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!
  6. 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
  7. 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)
  8. 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! *
  9. 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 !
  10. 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
  11. 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)
  12. 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
  13. 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
  14. 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)
  15. 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