Programování

Poučení z nedávného výpadku AWS S3

Amazon S3 je základem mnoha služeb AWS, včetně AWS Lambda, Elastic BeanStalk a vlastního Amazon Service Health Dashboard. Slouží také jako objekt a úložiště médií pro mnoho dalších internetových služeb, které se na něj každý den spoléhají.

28. února 2017 AWS zaznamenala hodinový výpadek služby Amazon S3 Service v regionu US-EAST – 1. To vytvořilo kaskádový efekt výpadků napříč spoustou internetu, včetně služeb jako Dockerhub.

Lidská chyba se ukázala být hlavní příčinou:

V 9:37 PST provedl autorizovaný člen týmu S3 pomocí zavedené příručky příkaz, který byl určen k odebrání malého počtu serverů pro jeden ze subsystémů S3, které jsou používány v procesu fakturace S3. Bohužel jeden ze vstupů do příkazu byl zadán nesprávně a byla odstraněna větší sada serverů, než bylo zamýšleno.

Jak se ukázalo, existuje běžná mylná představa o rozdílu mezi trvanlivostí a dostupností. Trvanlivost měří, jak spolehlivé je úložiště, a odpovídá na otázku „Ztratím svá data?“ Dostupnost na druhé straně měří, do jaké míry jsou data dostupná, tj. „Budu moci získat svá data?“

AWS S3 nabízí odolnost 99,999999999% v jedné oblasti. Podíváme-li se na příklad Amazonu, znamená to, že pokud uložíte 10 000 objektů v S3, může se průměrně jeden objekt ztratit jednou za 10 milionů let. Amazon S3 toho dosahuje replikací dat napříč více zařízeními v regionu.

Na druhé straně je standardní dostupnost objektů S3 na 99,99% ročně v rámci regionu. To znamená, že v daném období 12 měsíců byste měli očekávat, že celkem 52 minut a 33 sekund nebudete mít přístup k vašim datům.

AWS nabízí služby IaaS i PaaS. Na úrovni IaaS mají zákazníci AWS plnou kontrolu nad virtuálními servery a sítěmi. Mohou konfigurovat jakýkoli software a službu, po které touží, a spravují si ji sami. Za jakýkoli výpadek odpovídá zákazník.

Na úrovni PaaS nabízí AWS plně spravované služby platformy, jako je úložiště objektů, databáze, fronty atd. Klient deleguje odpovědnost za dostupnost a trvanlivost těchto služeb na poskytovatele spravovaných služeb - v tomto případě AWS. Služby platformy AWS, které jsou využívány prostřednictvím jejich proprietárního API, jsou obzvláště zranitelné vůči regionálnímu výpadku kvůli lidské chybě v AWS.

Lidská chyba může způsobit výpadek kdekoli - na místě, v cloudu, spravovaný nebo hostovaný sám. Zvažte nedávný výpadek počítače Delta jako příklad výpadku celého systému s vlastním hostitelem. Delegování odpovědnosti za správu služby platformy na poskytovatele cloudu nezmění skutečnost, že ji může způsobit lidská chyba - ale zesílí dopad. Zatímco výpadek Delta měl dopad pouze na Delta, výpadek AWS S3 měl dopad na dobrý kus internetu.

AWS S3 naštěstí nabízí dostatek nástrojů pro snížení dopadu výpadku. Uvažujme jen o několika.

Replikace napříč oblastmi S3

Data uložená v konkrétní oblasti S3 se replikují ve všech zónách dostupnosti a mohou v jakékoli zóně způsobit výpadek. Nemůže však přežít výpadek v celé oblasti, například v té, která se stala 28. února. Replikace objektů S3 napříč geografickými oblastmi pomáhá uspokojit zvýšené požadavky na redundanci.

Zálohy

Meziregionální replikace může pomoci zvýšit dostupnost. Zálohy na ledovec AWS mohou přispět ke zvýšení odolnosti. AWS pohodlně nabízí automatický mechanismus pro zálohování objektů v S3 na ledovec.

Zvažte distribuci obsahu pomocí CloudFront

Pokud jsou vaše objekty S3 často přístupné, může mít smysl nakonfigurovat AWS CloudFront tak, aby sloužil objektům ze S3. CloudFront bude replikovat data tam, kde to uživatelé nejvíce potřebují, a v některých případech může pomoci zmírnit dopady výpadku S3.

Závěrečné myšlenky

Služby spravované platformy jsou základním kamenem cloudových služeb. Použití jednoho typu jako S3 může snížit náklady na DevOps a pomoci přinést aplikace na trh rychleji. Zatímco AWS byla v průběhu let extrémně spolehlivá, Amazon v minulosti zaznamenal výpadky způsobené vlastními silami. Výjimkou není ani nedávný výpadek S3. Některé kombinace meziregionální replikace, zálohování a distribuce obsahu by měly snížit dopad těchto výpadků.

$config[zx-auto] not found$config[zx-overlay] not found