Ne morate da prodate bubreg da biste prešli na AWS

Miloš Savić u svom trećem tekstu daje argumente da je prelazak na AWS zapravo isplativ.

Miloš Savić - 21. Januar, 2016.

U prošlom tekstu smo nabacali gradivne elemente, sad je vreme da ih nekako vežemo. Upravljanje servisima se vrši kroz  Management Console (MC). Da biste dobili pristup, potrebno je da se registrujete kao korisnik, i ostavite nekoliko ličnih podataka, među kojima je najvažniji broj kreditne kartice. Bez nje nećete moći da napravite nalog. Kada završite postupak, dobićete pristup Dashboardu, sa spiskom svih servisa za čije korišćenje možete da se prijavite (a kad se prijavite za jedan, prijavićete se za sve njih).

Šta sada?

Sada, kada imate pristup, formirate sistem koristeći elemente na raspolaganju, u onolikom broju koliko vam je potrebno da rešite svoj problem. Bacite na papir šta vam je sve potrebno od servisa, na osnovu toga ćete steći ideju šta vam je potrebno za početak. Budući da ništa nije uklesano u kamenu, sve resurse možete zauzimati, odjavljivati, tako da čak i ako pogrešite, možete ispraviti grešku. Pokušajte, ipak, da osmislite sve tako da smanjite kasnije baratanje (osim skaliranja) na minimum.

Zašto?

Zbog vašeg vremena. I troškova. Troškove za sada na stranu, baratanje servisima jeste olakšano koliko god je to bilo moguće, a da vam ostane dovoljno mogućnosti da uradite šta vam treba, ali pojedine operacije zahtevaju više vremena od ostalih. Greške su, naravno, deo učenja, ali ukoliko baš-baš omašite, i izgradite sistem na toj omaški, kasnije prebacivanje, ponovna konfiguracija i čekanje umeju da budu zamorni, i da oduzmu dosta vremena koje biste (po Marfiju) u tom momentu mogli korisno da upotrebite drugde.  Osim toga, dobro isplaniran sistem u startu omogućava lakši razvoj i skaliranje u budućnosti, tako da je tračak više vremena uloženog u planiranje i vezivanje u startu jako dobra investicija.

Kada planirate potrebne elemente, pokušajte da gledate bar neko vreme unapred. Na primer, ocenili ste da će vam za vaš servis trebati jedna do dve mašine iza load balancera. Međutim, ovaj izbor zavisi od više faktora. Dve male mašine imaju svaka svoj overhead koji generiše operativni sistem, po pitanju prostora, procesora i memorije. Za “lakše” sajtove, u svakom slučaju je bolje imati dve mašine, zbog mogućnosti da budete online makar imali i neku hitnu intervenciju da izvršite.

Međutim, ako npr. čuvate velike količine slika pre nego što ih pošaljete na S3, onda vam je možda jedan kompaktan veći slobodan prostor zgodnija opcija od dva mala? Ako radite neku obradu podataka, da li će jedna jača mašina lakše da se izbori sa opterećenjem nego dve male, ili ćete možda jednu posvetiti obradi, a drugu okrenuti ka korisnicima da opslužuje zahteve? Malo frikombinovanja, koje zavisi od vaših potreba i zahteva, može vam uštedeti dosta nerviranja i problema.

Kada ste smislili šta vam je sve potrebno, zauzeli resurse, dočekali status “Running”, i jedva čekate da vaše čedo ugleda svetlost Interneta, ostalo je još samo da instalirate potreban softver, časkom ga konfigurišete, pošaljete svoje fajlove, i voila. Međutim, jedno bitno pitanje pre toga.

Hoće li mi posle svega ostati bar jedan bubreg?

Amazon naplaćuje samo resurse koje koristite. Budući da različiti resursi funkcionišu na različite načine, različite metrike se i naplaćuju kod svakog servisa. Kod EC2 servisa, na primer, naplaćuje se radni sat mašine, i to samo kada je mašina aktivna. Međutim, cena radnog sata mašine se menja prema snazi mašine koju ste izabrali. Postoji više predefinisanih mašina, različitih generacija i namena, ali se u gruboj podeli dele na male (small), srednje (medium), velike (large), i izuzetno velike (xxlarge) . Snaga se određuje prema broju tzv. Računajućih jedinica (Elastic Compute Unit – ECU), pri čemu se 1 ECU aproksimira kao jedan procesor oko 1.2GHz – tačan rezultat je prilično nemoguće izračunati, i dostupne radne memorije (od 600MB pa do par desetina GB).

U zavisnosti od vaših potreba, izabraćete adekvatnu mašinu, i prema tome i plaćati. Da stvari ne bi bile jednostavne, pored procesora i memorije, treba vam i prostor za skladištenje (storage). On može biti privremen i besplatan – traje dok je živa instanca, tzv. ephemeral storage, ili trajan i itekako cenovno određen – Elastic Block Storage (EBS). Za početak, sigurnija varijanta je EBS, a kasnije će ephemeral storage pokazati neke svoje prednosti, naročito kada su u pitanju mašine koje učestvuju u AutoScaling servisu. Storage-based servisi (EBS, S3, Glacier) se uobičajeno naplaćuju po broju Gigabajta koje ste zauzeli mesečno i broju zahteva upućenih servisu. Instance-based servisi (EC2, RDS) se naplaćuju po broju radnih sati. Routing-based servisi (Route 53, Elastic Load Balancer) se naplaćuju po broju zahteva itd. Sve cene su jasno definisane, povremeno se spuštaju, ali je ponekad teško proračunati u dolar koliko će sve da košta, naročito jer broj pristupa i veličina fajlova koji će biti smešteni ne mogu biti poznati unapred.

Pored standardnog načina rada, sa naplaćivanjem resursa, postoji i tzv. free tier. Amazon za probu daje određenu količinu svojih resursa do određene granice potrošnje. Tako na primer, ukoliko koristite najslabiju instancu – tipa micro, ne pređete 30GB sa 2000000 zahteva za storage, i smestite do 5GB podataka na S3 mesečno – nećete platiti ništaNaravno, micro instance su dosta osakaćene po svojim mogućnostima, ali ipak mogu da rade 24/7 besplatno, pa će naći svoju primenu. Free tier se primenjuje za svaki servis pojedinačno, tako da u pojedinim slučajevima može znatno, ili čak potpuno, da eliminiše troškove.

Osim ovih, recimo uobičajenih opcija, postoji i mogućnost aukcije za neiskorišćene resurse (spot instances). Npr, navešćete cenu koju ste voljni da platite za određenu mašinu, i kada cena koju ste ponudili bude dostignuta, dobićete vašu instancu. Ukoliko vam nije bitna tacnost vremena izvršavanja, već da se posao završi (neka dugačka obrada, distribuirano izvršavanje), na ovaj način možete ostvariti značajnu uštedu. Još jedna značajna mogućnost za obaranje cena koju Amazon nudi je rezervisanje instanci. Ukoliko ste sigurni da će vaša infrastruktura raditi sledećih godinu-dve-tri, možete unapred platiti određenu svotu, i oboriti cenu rada mašine za vrlo primetnu svotu – od 30 do 60%.

Primera radi, jedna Linux small instanca trenutno košta 0.044$/h (Windows su nešto skuplje, zbog licence koja ulazi u cenu). Sa jednim standardnim EBS diskom od 8GB (0.05$/GB=0.4$ mesečno i do milion zahteva za upis/čitanje – 0.1$/milion), računica je 0.044$*24*31~32$, EBS će upasti u free tier i neće biti naplaćen. Dakle, za jednu fulltime small instancu (1 ECU, 1.7GB Ram) sa 8GB diska potrebno je oko 32$ mesečno.

Ako ste npr. kupili domen www.mojdomen.com, i želite da ga usmerite na Amazon, podići ćete Route 53 servis, u njega uneti jednu Hosting zonu (mojdomen.com), definisati potrebnih par unosa – 0.5$ mesečno. Recimo da ćete imati dva web servera small veličine iza load balancera (jedna mašina radi stalno još jedna se diže po potrebi kada opterećenje traje duže od 5 minuta) – 2*32$, vaši korisnici će slati velike količine svojih slika visoke rezolucije koje ćete držati na S3 servisu, recimo do 50GB sa 100000 zahteva za čitanje i prenetih do 50GB – 0.5$+1$+6$, i podatke ćete čuvati na MySQL bazi medium veličine, 0.1$*24*31=75$. Vaši ukupni troškovi za prilično dobar sistem, sa redundantnim čuvanjem podataka, dovoljno snage da opsluži i stotinak ljudi istovremeno, i regulisanim bekapom mesečno iznose (najviše) 0.5+90+8+75=175$. (*cene su orijentacione!)

Deluje da nije povoljno? U pravu ste. Troškovi shared hostinga su manji. Neka druga rešenja će možda koštati manje (pogledaj “Neki drugi pogledi”), ali ovde dobijate zaokruženu uslugu, iza koje stoji Amazon, gde je sve pod vašom kontrolom, i za koju postoji ogromna podrška na Internetu, budući da se sve bazira na opensource rešenjima. A i sjajno je kao iskustvo: klik, sad je tu, klik sad ga nema, klik sad ga ima dva puta više. To mora da vredi :)

Ukoliko ste propustili, počeli smo odavde — koje su razlike između Amazona i drugih hosting rešenja.