HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

AWS re:Invent 2018: How AWS Minimizes the Blast Radius of Failures (ARC338)

Amazon Web Services2 HN recommenders · recommended in 2 months, 2019-2023
YouTube
37K views · 7 years ago · talk · evergreen

An AWS re:Invent 2018 talk on how AWS limits the blast radius of failures. It covers design techniques such as cell-based architecture and shuffle sharding.

It is the go-to reference whenever HN discusses cell-based architecture and outage isolation, as an explanation straight from AWS engineers.

Distributed systemsCloud, DevOps & reliability#cell-basedarchitecture#blastradius#shufflesharding#aws#resilience#availability

9 comments from Hacker News

@ignoramous2023 · in “Slack’s Migration to a Cellular Architecture”

ex-AWS here May be marketing but it is an architecture born out of Amazon's (and AWS's) use of AWS: - Reliable scalability: How Amazon.com scales in the cloud , link (2022) - How AWS minimizes the blast radius of failures , ▶ this video (2018) For massive enterprise products like Slack that need close to 100% uptime across all their services, cells make sense.

CitesView on HN
@faizshah2023 · in “Fly.io outage, recently deployed apps down, deployments disabled”

AWS invested a ton into limiting the blast radius of failures by isolating AZs, regions and using a cellular (service level isolated shards) architecture. I am surprised these ideas have not propagated to newer companies trying to build clouds: ▶ this video AWS isn’t perfect but these lessons were learned by fire because these sorts of global outages can seriously harm reputations.

CitesView on HN
@708145_2022 · in “Cell-Based Architecture”

The concept have been mentioned by Amazon for years. For reference see: "AWS re:Invent 2018: How AWS Minimizes the Blast Radius of Failures" ▶ this video

CitesView on HN
@talawahtech2020 · in “Summary of the Amazon Kinesis Event in the Northern Virginia (US-East-1) Region”

Multi-AZ doesn't protect against a software/OS issue like this, Multi-AZ would be relevant if it was an infrastructure failure (e.g. underlying EC2 instances or networking). The relevant resiliency pattern in this case would be what they refer to as cell-based architecture, where within an AZ services are broken down into smaller independent cells to minimize the blast radius. They specifically mention in the write-up that this was a gap they plan to address, the "backend" portion of Kinesis was already cellularized but that step had not yet been completed on the "frontend". Celluarization in combination with workload partitioning would have helped, e.g. don't run Cloudwatch, Cognito and Customer workloads on the same set of cells. It is also important to note that celluarization only helps in this case if they limit code deployment to a limited number of cells at a time. This YouTube video[1] of a re:invent presentation does a great job of explaining it. The cell-based stuff, starts around minute 20. 1. ▶ this video

RecommendsView on HN
@ignoramous2020 · in “Summary of the Amazon Kinesis Event in the Northern Virginia (US-East-1) Region”

root-cause tldr: ...[adding] new capacity [to the front-end fleet] had caused all of the servers in the [front-end] fleet to exceed the maximum number of threads allowed by an operating system configuration [number of threads spawned is directly proportional to number of servers in the fleet]. As this limit was being exceeded, cache construction was failing to complete and front-end servers were ending up with useless shard-maps that left them unable to route requests to back-end clusters. fixes: ...moving to larger CPU and memory servers [and thus fewer front-end servers]. Having fewer servers means that each server maintains fewer threads. ...making a number of changes to radically improve the cold-start time for the front-end fleet. ...moving the front-end server [shard-map] cache [that takes a long time to build, up to an hour sometimes?] to a dedicated fleet. ...move a few large AWS services, like CloudWatch, to a separate, partitioned front-end fleet. ...accelerate the cellularization [0] of the front-end fleet to match what we’ve done with the back-end. [0] ▶ this video and link

CitesView on HN
@ignoramous2020 · in “Ask HN: What were the things you did that made the biggest impact at your work?”

In my time writing databases, I found that not only the mount-flags could result in data-loss despite fsync, given you use fsync as it is supposed to be used [0], but even enterprise-grade hardware would at times (at that scale [1]) drop and/or corrupt a few bits here and there. That reminds me of the case where AWS famously revealed that a single NIC in their ginaromous S3 fleet flipped a single bit once in a while and that caused an outage because their gossip-daemon responsible for fleet health-checks failed spectacularly [2]. Bryan Cantrill's talk on the realted topic of hardware/firmware bugs is pretty good [3]. [0] link [1] link [2] ▶ this video [3] link

CitesView on HN
@ignoramous2019 · in “Post-mortem of March 12 Google outage”

From what you describe the 'AWS cells' are very different than Borg's. My view is that at a high level aws cells are isolated, fuzzy-partitioned, migratable, heterogeneous instances of a complete service stack that are managed such that they always fail independently of each other; contact points among these cell instances, if required, are established via highly available intermediate services (like ReplicatedStateMachinesOrStorage); the clients are routed to assigned cells by a highly available routing layer (like NetworkTrafficShapers/DNS), which can also help facilitate migration of clients from one/more cell to another. I encourage you to view the re:invent presentation on it [0] if resiliency in distributed systems is something that interests you. [0] ▶ this video

RecommendsView on HN
@ignoramous2019 · in “Post-mortem of March 12 Google outage”

> link > Almost all updates to Google’s services proceed gradually, according to a defined process, with appropriate verification steps interspersed. [..] The first stages of a rollout are usually called "canaries” — an allusion to canaries carried by miners into a coal mine to detect dangerous gases. Our canary servers detect dangerous effects from the behavior of the new software under real user traffic. > Canary testing is a concept embedded into many of Google’s internal tools used to make automated changes, as well as for systems that change configuration files. [..] If the change doesn’t pass the validation period, it’s automatically rolled back. Any Googlers around to explain why Canaries didn't catch configuration causing this side effect and stopping the deployment before the issue cascaded globally? The outage here reminds me of issues CloudFront faced wrt configurations in their earlier years. Here's master presenter Harvo Jones going into a bit more detail: link Kind of vindicates AWS' decision (after major outages to DynamoDB and S3) to not just isolate regions or zones but resources within those regions/zones further into what they call "cells" ▶ this video Tumblr spoke abt "cells" too in the context of achieving isolation at scale, but in a quite different way: link As these known-knowns (and the Google sre-book is teeming with these) get designed around, it'd be interesting to see why/how future outages would happen.

CitesView on HN
@ignoramous2019 · in “An introduction to distributed systems (2017)”

This is a great outline. Martin Kleppmann's Designing Data Intensive Applications [0] is very much in the same domain as what's in these notes. Speaking about scale and distributed systems: AWS specific resources I find interesting from their EdgeEngineering/NetEng teams (I haven't seen many other service teams in AWS openly share as much about design as them): - link series of articles on Route53's 100% data-plane availability architecture [1]. - link colmmacc [2] (seems to be the eng behind AWS HyperPlane [3][4]?) on 10 design patterns for building resilient systems. - ▶ this video Peter Vosshall (co-creator of Dynamo [5]) presenting "cell-based" design in-use at AWS. ---- [0] link [1] link [2] link [3] link [4] link [5] Decandia, G.; Hastorun, D.; Jampani, M.; Kakulapati, G.; Lakshman, A.; Pilchin, A.; Sivasubramanian, S.; Vosshall, P.; Vogels, W. (2007). "Dynamo: Amazon's Highly Available Key-value Store". [6] Bonus: The SRE Book link

RecommendsView on HN
AWS re:Invent 2014 | (SPOT302) Under the Covers of AWS: Its Core Distributed Systems46:15

AWS re:Invent 2014 | (SPOT302) Under the Covers of AWS: Its Core Distributed Systems

Amazon Web Services
10K views • 11 years ago
AWS re:Invent 2018: [REPEAT 1] A Serverless Journey: AWS Lambda Under the Hood (SRV409-R1)59:13

AWS re:Invent 2018: [REPEAT 1] A Serverless Journey: AWS Lambda Under the Hood (SRV409-R1)

Amazon Web Services
72K views • 7 years ago
AWS re:Invent 2014: AWS Innovation at Scale with James Hamilton (SPOT301)47:51

AWS re:Invent 2014: AWS Innovation at Scale with James Hamilton (SPOT301)

Amazon Web Services
70K views • 11 years ago
"Systems that run forever self-heal and scale" by Joe Armstrong (2013)1:10:23

"Systems that run forever self-heal and scale" by Joe Armstrong (2013)

Strange Loop Conference
85K views • 5 years ago
AWS re:Invent 2018: Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321)53:43

AWS re:Invent 2018: Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321)

Amazon Web Services
112K views • 7 years ago
"Stop Rate Limiting! Capacity Management Done Right" by Jon Moore42:20

"Stop Rate Limiting! Capacity Management Done Right" by Jon Moore

Strange Loop Conference
41K views • 9 years ago
GigCityElixir23 - Bryan Hunter1:01:46

GigCityElixir23 - Bryan Hunter

Groxio
10K views • 3 years ago
AWS re:Invent 2016: Tuesday Night Live with James Hamilton1:33:27

AWS re:Invent 2016: Tuesday Night Live with James Hamilton

Amazon Web Services
133K views • 9 years ago
Liberating Distributed Consensus - Heidi Howard34:52

Liberating Distributed Consensus - Heidi Howard

Reactive Summit
7K views • 7 years ago
AWS re:Invent 2015 | (NET403) Another Day, Another Billion Packets42:26

AWS re:Invent 2015 | (NET403) Another Day, Another Billion Packets

Amazon Web Services
55K views • 11 years ago
Velocity 2012:  Richard Cook, "How Complex Systems Fail"28:21

Velocity 2012: Richard Cook, "How Complex Systems Fail"

O'Reilly
60K views • 14 years ago
"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson40:20

"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson

Strange Loop Conference
55K views • 12 years ago
Lecture 1: Introduction1:19:35

Lecture 1: Introduction

MIT 6.824: Distributed Systems
921K views • 6 years ago
CRDTs and the Quest for Distributed Consistency43:39

CRDTs and the Quest for Distributed Consistency

InfoQ
68K views • 8 years ago
How We've Scaled Dropbox1:08:17

How We've Scaled Dropbox

Stanford
372K views • 14 years ago
Mastering Chaos - A Netflix Guide to Microservices53:14

Mastering Chaos - A Netflix Guide to Microservices

InfoQ
2.3M views • 9 years ago
MINIX 3: a Modular, Self-Healing POSIX-compatible Operating System56:19

MINIX 3: a Modular, Self-Healing POSIX-compatible Operating System

FOSDEM
90K views • 16 years ago
"Unison: a new distributed programming language" by Paul Chiusano41:06

"Unison: a new distributed programming language" by Paul Chiusano

Strange Loop Conference
45K views • 7 years ago
AWS re:Invent 2018: Powering Next-Gen EC2 Instances: Deep Dive into the Nitro System (CMP303-R1)1:05:06

AWS re:Invent 2018: Powering Next-Gen EC2 Instances: Deep Dive into the Nitro System (CMP303-R1)

Amazon Web Services
57K views • 7 years ago
Seattle Conference on Scalability: YouTube Scalability52:41

Seattle Conference on Scalability: YouTube Scalability

Google TechTalks
30K views • 19 years ago