jAbLoK

blog už dávno nejen o javě

Amazon spouští Elastic Block Store

leave a comment »

Proč?

Kdo chtěl na AWS donedávna provozovat svou databázovou aplikaci, měl v zásadě dvě možnosti:

Buďto spravovat svá data pomocí Amazoních služeb S3 a SimpleDB, což mohlo narazit na několik omezení:

  • S3 je jen key/value storage
  • SimpleDB běží pouze v neveřejném módu „limited beta“
  • Obě služby fungují dost jinak než by mohl očekávat člověk zvyklý na relační databáze a SQL

Druhá možnost je pustit na EC2 instanci svou oblíbenou databázi. Člověk potom sice nemá k dispozici neomezeně skálující úložiště jako které nabízí výše zmíněné Amazoní služby či Googlí BigTable, ale to se dá obejít za pomocí patternů prošlápnutých Flickrem, eBayí (zminěna onehdá i na Jabloku) a mnoha dalšími.

Potíž je ale v tom, že EC2 je primárně navržena pro aplikační servery, a nestará se o persistenci dat, jinými slovy co si na EC2 instanci nahrajete, to vám tam vydrží dokud instance nespadne – tedy třeba dokud se server, na kterém běží, nezrestartuje. A to se může stát přeci jen docela často oproti tomu, jak často se u „normální“ fyzické krabice rozbije harddisk.

Ani toto není neřešitelný problém – aplikace jako Scalr (dostupný ve zdrojácích i jako služba) můžou udržovat a synchronizovat farmu EC2 serverů hostujících master a slave instance MySQL, v případě výpadků roli mastera předávat „slejvům“ a průběžně zálohovat do S3.

Ale přeci jen, obnovení databáze ze zálohy vezme nějaký čas, a pro malé projekty (rozumněj projekty, kterým se nevyplatí mít zapnuté a tedy platit příliš mnoho EC2 instancí najednou) s objemnými databázemi to zjevně příliš spolehlivé řešení nebude.

Člověk si říká: „tohle je ten slavný cloud-computing? To bych teda čekal něco lepšího…“ Třeba mít nezávislé virtuální disky, které si člověk může ke své EC2 instanci namountovat aniž by riskoval ztrátu ulozených při shození instance.

A právě toto řeší nově spuštěný Elastic Block Store. Sláva.

Co?

Elastic Block Store (EBS) nabízí možnost vytvářet si perzistentní svazky o velikosti od 1GB do 1TB, které je možné namountovat k jedné EC2 instanci (ta naopak může mít připojeno ECB svazků několik). Vůči uživateli se pak tváří jako neformátované blokové zařízení, prostě jako pevný disk.

Navíc elegantně řeší otázku zálohování a replikace: EBS samotné sice nabízí spolehlivost několikrát vyšší oproti běžným diskům, ale spolehlivosti S3 zdaleka nedostahují. Uživatel si ale kdykoli může vytvořit snapshot, který se transparentně uloží do bezpečného úložiště S3, odkud se může použít pro obnovení nebo pro vytvoření kopie svazku. Snapshoty se vytváří inkrementálně, takže by to mělo celkem švihat.

Kvůli zpoždění sítě budou EBS svazky přirozeně pomalejší oproti lokálním diskům. Ale záleží na tom, s čím člověk srovnává. Na RightScale blogu naměřili 70MB/s s tím, že běžný průtok bude asi horší. Není to sice žádný zázrak, ale žít se s tím dá.

A za kolik?

Účtování služby SBS má dvě složky: platby za velikost svazku a za datový tok. Za alokovaný GB je účtováno $0.10 měsíčně a k tomu se počítá dalších $0.10 za každých milion I/O operací.

Pro ilustraci jsem si spočítal hypotetické náklady na používání této služby pro případnou migraci diskusního serveru Okoun.cz (zobrazuje zhruba 3 miliony dynamických stránek za měsíc):

  • MySQL má data na partition o velikosti 10GB (zaplněná ze 70%, řekněme, že to nějakou dobu bude  stačit). Tedy dolar měsíčně.
  • Podle iostatu server dává na databázové partition cca 80 I/O operací za sekundu, což měsíčně odpovídá zhruba dvaceti dolarům
  • Tedy $21 měsíčně celkem, což při aktuálním kurzu koruny dělá 340 Kč. To není úplně zlé, když uvážíme, co si tím můžeme ušetřit za opruz

Myslím, že se serverovým hardware si brzo přestanu dělat starosti.

Zdroje

About these ads

Written by Pavel Kolesnikov

Srpen 21, 2008 at 2:29 pm

Zasláno do Scalability

Tagged with ,

Napsat komentář

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Změnit )

Twitter picture

You are commenting using your Twitter account. Log Out / Změnit )

Facebook photo

You are commenting using your Facebook account. Log Out / Změnit )

Google+ photo

You are commenting using your Google+ account. Log Out / Změnit )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: