Oblaci su poput Äarobne kutije - pitate Å”ta vam treba, a resursi se jednostavno pojavljuju niotkuda. Virtuelne maÅ”ine, baze podataka, mreža - sve ovo pripada samo vama. Postoje i drugi zakupci oblaka, ali u vaÅ”em svemiru vi ste jedini vladar. Sigurni ste da Äete uvijek dobiti potrebne resurse, ne vodite raÄuna o nikome i sami odreÄujete kakva Äe mreža biti. Kako funkcioniÅ”e ova magija koja Äini da oblak elastiÄno rasporeÄuje resurse i potpuno izoluje stanare jedne od drugih?

AWS oblak je mega-super složen sistem koji se evolucijski razvija od 2006. godine. Dio ovog razvoja se dogodio Vasilij Pantjuhin - Amazon Web Services Architect. Kao arhitekta, on dobija pogled iznutra ne samo na krajnji rezultat, veÄ i na izazove koje AWS savladava. Å to je bolje razumevanje kako sistem funkcioniÅ”e, veÄe je poverenje. Stoga Äe Vasilij podijeliti tajne AWS usluga u oblaku. Ispod je dizajn fiziÄkih AWS servera, elastiÄna skalabilnost baze podataka, prilagoÄena Amazon baza podataka i metode za poveÄanje performansi virtuelnih maÅ”ina uz istovremeno smanjenje njihove cene. Poznavanje Amazonovih arhitektonskih pristupa pomoÄi Äe vam da efikasnije koristite AWS usluge i može vam dati nove ideje za izgradnju vlastitih rjeÅ”enja.
O govorniku: Vasilij Pantyukhin () zapoÄeo je kao Unix administrator u .ru kompanijama, radio na velikom hardveru Sun Microsystema 6 godina i propovijedao svijet usmjeren na podatke u EMC-u 11 godina. Prirodno je evoluirao u privatne oblake, a 2017. preÅ”ao u javne. Sada pruža tehniÄke savjete kako bi pomogao u životu i razvoju u AWS oblaku.
Odricanje od odgovornosti: sve ispod je Vasilijevo liÄno miÅ”ljenje i možda se ne poklapa sa stavom Amazon Web Services. IzvjeÅ”taj na kojem se zasniva Älanak dostupan je na naÅ”em YouTube kanalu.
ZaÅ”to govorim o Amazon ureÄaju?
Moj prvi auto je imao ruÄni menjaÄ. Bilo je odliÄno zbog osjeÄaja da mogu voziti auto i imati potpunu kontrolu nad njim. Svidjelo mi se i to Å”to sam barem otprilike razumio princip njegovog rada. Naravno, zamiÅ”ljao sam da je struktura kutije priliÄno primitivna - neÅ”to poput mjenjaÄa na biciklu.

Sve je bilo odliÄno, osim jedne stvari - zaglavljeni u saobraÄajnoj gužvi. Äini se kao da sjedite i ne radite niÅ”ta, ali stalno mijenjate brzine, pritiskate kvaÄilo, gas, koÄnicu - to vas zaista umara. Problem saobraÄajne gužve je delimiÄno reÅ”en kada je porodica dobila auto-automat. Dok sam vozio, imao sam vremena da razmislim o neÄemu i posluÅ”am audio-knjigu.
JoÅ” jedna misterija pojavila se u mom životu, jer sam potpuno prestao da razumijem kako moj auto radi. Savremeni automobil je složen ureÄaj. Automobil se istovremeno prilagoÄava na desetine razliÄitih parametara: pritisak na gas, koÄnicu, stil vožnje, kvalitet puta. ViÅ”e ne razumijem kako to funkcionira.
Kada sam poÄeo da radim na Amazon oblaku, i za mene je to bila misterija. Samo je ova misterija za red veliÄine veÄa, jer u autu je jedan vozaÄ, a u AWS-u ih ima na milione. Svi korisnici istovremeno upravljaju, pritiskaju gas i koÄnicu. Neverovatno je da idu kuda žele - za mene je to Äudo! Sistem se automatski prilagoÄava, skalira i elastiÄno prilagoÄava svakom korisniku tako da mu se Äini da je sam u ovom Univerzumu.
Magija je malo nestala kada sam kasnije doÅ”ao da radim kao arhitekta u Amazonu. Vidio sam sa kakvim se problemima suoÄavamo, kako ih rjeÅ”avamo i kako razvijamo usluge. Sa sve veÄim razumijevanjem kako sistem funkcionira, pojavljuje se viÅ”e povjerenja u uslugu. Stoga želim podijeliti sliku onoga Å”to se nalazi ispod haube AWS oblaka.
O Äemu da priÄamo
Odabrao sam raznolik pristup - odabrao sam 4 zanimljive usluge o kojima vrijedi govoriti.
Optimizacija servera. Efemerni oblaci sa fiziÄkim oliÄenjem: fiziÄki centri podataka u kojima postoje fiziÄki serveri koji bruje, greju i trepÄu svetlima.
Funkcije bez servera (Lambda) je vjerovatno najskalabilniji servis u oblaku.
Skaliranje baze podataka. ReÄi Äu vam o tome kako gradimo vlastite skalabilne baze podataka.
Mrežno skaliranje. Posljednji dio u kojem Äu otvoriti ureÄaj naÅ”e mreže. Ovo je divna stvar - svaki korisnik oblaka vjeruje da je sam u oblaku i uopÄe ne vidi druge stanare.
BiljeÅ”ka. Ovaj Älanak Äe raspravljati o optimizaciji servera i skaliranju baze podataka. Razmotrit Äemo skaliranje mreže u sljedeÄem Älanku. Gdje su funkcije bez servera? O njima je objavljen poseban transkript ā" Govori o nekoliko razliÄitih metoda skaliranja i detaljno razmatra Firecracker rjeÅ”enje - simbiozu najboljih kvaliteta virtuelne maÅ”ine i kontejnera.
Serveri
Oblak je prolazan. Ali ta prolazna priroda ipak ima fiziÄko utjelovljenje ā servere. U poÄetku je njihova arhitektura bila klasiÄna. Standardni x86 Äipset, mrežne kartice, Linux, Xen hipervizor na kojem su pokrenute virtuelne maÅ”ine.

U 2012. godini ova arhitektura se priliÄno dobro nosila sa svojim zadacima. Xen je odliÄan hipervizor, ali ima jedan veliki nedostatak. Dosta mu je visoki troÅ”kovi za emulaciju ureÄaja. Kako nove, brže mrežne kartice ili SSD diskovi postaju dostupni, ovi troÅ”kovi postaju previsoki. Kako se nositi s ovim problemom? OdluÄili smo da radimo na dva fronta odjednom - optimizirati i hardver i hipervizor. Zadatak je veoma ozbiljan.
Optimizacija hardvera i hipervizora
Uraditi sve odjednom i to dobro neÄe raditi. Å ta je ādobroā takoÄe je u poÄetku bilo nejasno.
OdluÄili smo se za evolutivni pristup - mijenjamo jedan važan element arhitekture i bacamo ga u proizvodnju.
Nagazimo na svaku grabu, sluŔamo pritužbe i sugestije. Zatim mijenjamo drugu komponentu. Dakle, u malim koracima, radikalno mijenjamo cjelokupnu arhitekturu na osnovu povratnih informacija korisnika i podrŔke.
Transformacija je poÄela 2013. godine sa najsloženijom stvari - mrežom. IN S3 U sluÄajevima, standardnoj mrežnoj kartici dodana je posebna kartica Network Accelerator. Bio je povezan bukvalno kratkim loopback kablom na prednjoj ploÄi. Nije lijepo, ali se ne vidi u oblaku. Ali direktna interakcija sa hardverom je suÅ”tinski poboljÅ”ala podrhtavanje i mrežnu propusnost.
Zatim smo odluÄili da poboljÅ”amo pristup blok memoriji podataka EBS - Elastic Block Storage. To je kombinacija mreže i skladiÅ”ta. PoteÅ”koÄa je u tome Å”to, dok su kartice Network Accelerator postojale na tržiÅ”tu, nije bilo moguÄnosti da se jednostavno kupi hardver Storage Accelerator. Pa smo se okrenuli startupu Annapurna Labs, koji je za nas razvio posebne ASIC Äipove. Dozvolili su da se udaljeni EBS volumeni montiraju kao NVMe ureÄaji.
U sluÄajevima C4 rijeÅ”ili smo dva problema. Prvi je da smo implementirali temelj za buduÄnost obeÄavajuÄe, ali u to vrijeme nove, NVMe tehnologije. Drugo, znaÄajno smo rasteretili centralni procesor prebacivanjem obrade zahtjeva u EBS na novu karticu. Ispalo je dobro, tako da je sada Annapurna Labs dio Amazona.
Do novembra 2017. shvatili smo da je vrijeme da promijenimo sam hipervizor.
Novi hipervizor je razvijen na osnovu modifikovanih modula KVM kernela.
OmoguÄio je fundamentalno smanjenje troÅ”kova emulacije ureÄaja i direktan rad s novim ASIC-ovima. Instance S5 bile su prve virtuelne maÅ”ine sa novim hipervizorom koji je radio ispod haube. Dali smo mu ime Nitro.
Evolucija instanci na vremenskoj liniji.
Sve nove vrste virtuelnih maŔina koje su se pojavile od novembra 2017. rade na ovom hipervizoru. Bare Metal instance nemaju hipervizor, ali se nazivaju i Nitro, jer koriste specijalizovane Nitro kartice.
U naredne dvije godine broj tipova Nitro instanci premaŔio je nekoliko desetina: A1, C5, M5, T3 i drugi.

Tipovi instanci.
Kako rade moderne Nitro maŔine
Imaju tri glavne komponente: Nitro hipervizor (o kome je veÄ bilo rijeÄi), sigurnosni Äip i Nitro kartice.
Sigurnosni Äip integrisan direktno u matiÄnu ploÄu. On kontrolira mnoge važne funkcije, kao Å”to je kontrola uÄitavanja host OS-a.
Nitro kartice - Postoje Äetiri vrste njih. Sve ih je razvila Annapurna Labs i zasnovani su na uobiÄajenim ASIC-ovima. Neki od njihovih firmvera su takoÄer uobiÄajeni.

Äetiri vrste Nitro kartica.
Jedna od kartica je dizajnirana za rad mrežaVPC. To je ono Å”to je vidljivo u virtuelnim maÅ”inama kao mrežna kartica ENA - ElastiÄni mrežni adapter. TakoÄer inkapsulira promet prilikom njegovog prijenosa kroz fiziÄku mrežu (o tome Äemo govoriti u drugom dijelu Älanka), kontrolira firewall sigurnosnih grupa i odgovoran je za usmjeravanje i druge mrežne stvari.
Odabrane kartice rade sa blok memorijom EBS i diskove koji su ugraÄeni u server. GostujuÄoj virtuelnoj maÅ”ini se pojavljuju kao NVMe adapteri. Oni su takoÄer odgovorni za enkripciju podataka i nadzor diska.
Sistem Nitro kartica, hipervizora i sigurnosnog Äipa integrisan je u SDN mrežu ili Softverski definirana mreža. Odgovoran za upravljanje ovom mrežom (Control Plane) kartica kontrolera.
Naravno, nastavljamo sa razvojem novih ASIC-ova. Na primjer, krajem 2018. objavili su Äip Inferentia, koji vam omoguÄava da efikasnije radite sa zadacima maÅ”inskog uÄenja.

Inferentia Äip procesora za maÅ”insko uÄenje.
Skalabilna baza podataka
Tradicionalna baza podataka ima slojevitu strukturu. Da bismo uvelike pojednostavili, razlikuju se sljedeÄi nivoi.
- SQL ā na tome rade dispeÄeri klijenata i zahteva.
- Odredbe transakcije - Ovde je sve jasno, ACID i sve to.
- keÅ”iranje, koju obezbjeÄuju puferski pulovi.
- Logging ā omoguÄava rad sa redo logovima. U MySQL-u se zovu Bin Logs, u PosgreSQL-u - Write Ahead Logs (WAL).
- SkladiÅ”tenje ā direktno snimanje na disk.

Slojevita struktura baze podataka.
Postoje razliÄiti naÄini za skaliranje baza podataka: dijeljenje, Shared Nothing arhitektura, dijeljeni diskovi.

MeÄutim, sve ove metode održavaju istu monolitnu strukturu baze podataka. Ovo znaÄajno ograniÄava skaliranje. Da bismo rijeÅ”ili ovaj problem, razvili smo vlastitu bazu podataka ā Amazon Aurora. Kompatibilan je sa MySQL i PostgreSQL.
Amazon Aurora
Glavna arhitektonska ideja je da se nivoi skladiŔtenja i evidentiranja odvoje od glavne baze podataka.
GledajuÄi unaprijed, reÄi Äu da smo takoÄer uÄinili neovisnim nivo keÅ”iranja. Arhitektura prestaje da bude monolit i dobijamo dodatne stepene slobode u skaliranju pojedinaÄnih blokova.

Nivoi evidentiranja i skladiŔtenja su odvojeni od baze podataka.
Tradicionalni DBMS zapisuje podatke u sistem skladiŔtenja u obliku blokova. U Amazon Aurori smo kreirali pametnu pohranu koja može govoriti jezik redo-logs. Unutra, skladiŔte pretvara evidencije u blokove podataka, nadgleda njihov integritet i automatski pravi rezervne kopije.
Ovaj pristup vam omoguÄava da implementirate takve zanimljive stvari kao Å”to su kloniranje. Funkcionalno radi brže i ekonomiÄnije zbog Äinjenice da ne zahtijeva stvaranje potpune kopije svih podataka.
Sloj za skladiÅ”tenje je implementiran kao distribuirani sistem. Sastoji se od veoma velikog broja fiziÄkih servera. Svaki redo log se obraÄuje i pohranjuje istovremeno Å”est Ävorova. Ovo osigurava zaÅ”titu podataka i balansiranje optereÄenja.

Skaliranje Äitanja može se postiÄi koriÅ”tenjem odgovarajuÄih replika. Distribuirano skladiÅ”te eliminira potrebu za sinhronizacijom izmeÄu glavne instance baze podataka, preko koje piÅ”emo podatke, i preostalih replika. Zagarantovano je da Äe ažurirani podaci biti dostupni svim replikama.
Jedini problem je keÅ”iranje starih podataka na proÄitanim replikama. Ali ovaj problem se rjeÅ”ava prijenos svih redo dnevnika na replike preko interne mreže. Ako je dnevnik u keÅ”u, on je oznaÄen kao netaÄan i prepisan. Ako nije u keÅ”u, jednostavno se odbacuje.

Sredili smo skladiŔte.
Kako skalirati nivoe DBMS-a
Ovdje je horizontalno skaliranje mnogo teže. Pa idemo niz utabanu stazu klasiÄno vertikalno skaliranje.
Pretpostavimo da imamo aplikaciju koja komunicira sa DBMS-om preko glavnog Ävora.
Prilikom vertikalnog skaliranja, dodjeljujemo novi Ävor koji Äe imati viÅ”e procesora i memorije.

Zatim prebacimo aplikaciju sa starog glavnog Ävora na novi. Nastaju problemi.
- Ovo Äe zahtijevati znaÄajno vrijeme zastoja aplikacije.
- Novi glavni Ävor Äe imati hladnu keÅ” memoriju. Performanse baze podataka Äe biti maksimalne tek nakon Å”to se predmemorija zagrije.

Kako poboljÅ”ati situaciju? Postavite proxy izmeÄu aplikacije i glavnog Ävora.

Å ta Äe nam ovo dati? Sada sve aplikacije ne moraju biti ruÄno preusmjerene na novi Ävor. Prebacivanje se može izvrÅ”iti pod proxyjem i suÅ”tinski je brže.
Äini se da je problem rijeÅ”en. Ali ne, joÅ” uvijek patimo od potrebe za zagrijavanjem keÅ”a. Osim toga, pojavio se novi problem - sada je proxy potencijalna taÄka kvara.
KonaÄno rjeÅ”enje s Amazon Aurora bez servera
Kako smo rijeŔili ove probleme?
Ostavio proxy. Ovo nije zasebna instanca, veÄ Äitava distribuirana flota proksija preko kojih se aplikacije povezuju na bazu podataka. U sluÄaju kvara, bilo koji od Ävorova može se zamijeniti gotovo trenutno.
Dodan bazen toplih Ävorova razliÄitih veliÄina. Stoga, ako je potrebno dodijeliti novi Ävor veÄe ili manje veliÄine, on je odmah dostupan. Nema potrebe Äekati da se uÄita.
Cijeli proces skaliranja kontrolira se posebnim sistemom za praÄenje. Monitoring stalno prati stanje trenutnog glavnog Ävora. Ako otkrije, na primjer, da je optereÄenje procesora dostiglo kritiÄnu vrijednost, obavjeÅ”tava skup toplih instanci o potrebi da se dodijeli novi Ävor.

Distribuirani proksiji, tople instance i praÄenje.
Dostupan je Ävor sa potrebnom snagom. Skupovi meÄuspremnika se kopiraju u njega i sistem poÄinje da Äeka siguran trenutak za prebacivanje.

ObiÄno trenutak za prebacivanje doÄe priliÄno brzo. Tada se prekida komunikacija izmeÄu proxyja i starog glavnog Ävora, sve sesije se prebacuju na novi Ävor.

Rad sa bazom podataka se nastavlja.

Grafikon pokazuje da je suspenzija zaista vrlo kratka. Plavi grafikon prikazuje optereÄenje, a crveni koraci pokazuju momente skaliranja. KratkoroÄni padovi na plavom grafikonu su upravo to kratko kaÅ”njenje.

InaÄe, Amazon Aurora vam omoguÄava da potpuno uÅ”tedite novac i iskljuÄite bazu podataka kada nije u upotrebi, na primjer, vikendom. Nakon zaustavljanja optereÄenja, DB postupno smanjuje svoju snagu i gasi se neko vrijeme. Kada se optereÄenje vrati, ponovo Äe lagano rasti.
U sljedeÄem dijelu priÄe o Amazon ureÄaju govorit Äemo o skaliranju mreže. Pretplatite se i ostanite sa nama kako ne biste propustili Älanak.
U Vasilij Pantjuhin Äe dati izvjeÅ”taj ā" Koje Å”ablone dizajna za distribuirane sisteme koriste Amazon programeri, koji su razlozi otkazivanja servisa, Å”ta je Cell-based arhitektura, Konstantni rad, Shuffle Sharding - biÄe zanimljivo. Manje od mjesec dana do konferencije - . KonaÄno poskupljenje 24. oktobra.
izvor: www.habr.com
