HackerTube

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
talk · advanced · evergreen · 2019–2023 on HN

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.

9 comments from Hacker News

@talawahtech2020-11 · 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

Recommends View on HN
@ignoramous2019-03 · 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

Recommends View on HN
@ignoramous2019-03 · 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

Recommends View on HN
@ignoramous2023-08 · 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.

@faizshah2023-03 · 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.