SQL Heisenberg's Cloud Diaries

Računarstvo u oblaku - Cloud

Svi posjedujemo računar ili mobilni uređaj sa pristupom internetu, te smo svjesno ili nesvjesno korisnici cloud-a ili nekog od cloud servisa. Na internetu možete pronaći mnogo definicija koje objašnjavaju šta je to cloud. Neki će se usuditi reći da je cloud “samo nečiji drugi računar”, vođeni tom analogijom onda bismo mogli reći i da je restoran samo nečija druga kuhinja - a nije, u pitanju je mnogo više od toga.
Računarstvo u oblaku ili cloud computing odnosno cloud, je najjednostavnije rečeno mogućnost da preko interneta koristite računarske, mrežne i druge resurse bez mogućnosti fizičkog pristupa hardverskim uređajima koji vam pružaju tražene resurse. Kako se resursima pristupa preko javne mreže, odnosno interneta, za cloud koristimo i precizniji izraz public -  javni cloud. Trenutno tri vodeća pružatelja, odnosno provajdera usluga javnog cloud-a su Amazon Web Services, Microsoft Azure i Google Cloud.

Kod vlastitih podatkovnih centara (on-premises data centers) kompanije svoje podatke i aplikacije čuvaju na vlastitom hardveru i u vlastitom okruženju, te su u potpunosti odgovorni kako za hardver, tako i za svu ostalu prateću infrastrukturu koja prati taj data centar (napajanje električnom energijom, pristup internetu, sigurnost, fizičko osiguranje i nadzor, servisiranje i nadogradnja komponenti itd). Pored navedenog, odlika takvih okruženja jeste da se računarski resursi koriste isključivo od strane jedne organizacije ili kompanije gdje se komunikacija sa servisima i njihovo održavanje odvija preko privatne mreže. U slučajevima kada kompanije plaćaju trećoj strani da im iznajmljuje i vodi brigu o hardverskim resursima koje koristi, gdje se ti resursi i dalje koriste samo od strane te kompanije, kažemo da koriste privatni cloud.

Kako bi mogli iskoristiti najbolje od obe infrastrukture, kompanije mogu u kombinaciji da koriste vlastitu infrastrukturu unutar on-premisses data centara ili privatnog cloud-a u kombinaciji sa javnim cloud-om. Takva okruženja nazivamo hibridnim cloud-om. Jedan od primjera hibridnog cloud-a je taj kada kompanije unutar vlastitog data centra čuvaju podatke baze podataka i samu bazu, a na infrastrukturi javnog cloud-a se nalazi aplikativni sloj.
Multi-cloud predstavlja pristup, gdje se unutar iste infrastrukture koristi kombinacija više različitih vrsta cloud-a, ili različitih provajdera cloud usluga.

Prednosti javnog clouda


Postoje mnoge prednosti upotrebe javnog clouda (Amazon Web Services, Microsoft Azure, Google Cloud) u odnosu na tradicionalnu on-premisses infrastrukturu, u prvom redu to je eliminisanje potrebe za ulaganjem unaprijed i investicijama za obnavljanje hardverskih resursa. Kada govorimo o cijeni javnog cloud-a, njegova je odlika da plaćate onoliko koliko koristite i do kada koristite. Troškovi vlastitog data centra nisu samo hardverski resursi, tu su troškovi koji se odnose na prateću infrastrukturu i održavanje, kao i ulaganje u ljudske resurse koji su neophodni da omoguće pravilan rad i funkcionisanje jednog data centra. Pored toga što plaćamo samo za količinu korištenih resursa, public cloud omogućava da u zavisnosti od vaših potreba dinamički povećavate i smanjujete količinu korištenih resursa u kratkom vremenskom periodu (doslovno na klik miša), dok je za povećanje resursa vlastitog data centra potrebno vrijeme i novac za planiranje i povećanja kapaciteta.

Na samim počecima razvoja clouda, najveća prepreka i  protuargument cloudu bila je sigurnost, odnosno mišljenje da podaci nisu sigurni na cloudu, jer se ne nalaze u prostorijama vlastitog data centra. Iz moje perspektive, sigurnost je upravo jedan od najvećih argumenata zašto koristiti cloud. Zahvaljujući modelu sigurnosti zasnovanom na dijeljenoj odgovornosti, gdje se pružatelj cloud usluga brine za sigurnost cloud-a, vi kao korisnik usluga se brinete za sigurnost unutar samog clouda, te je vaša odgovornost smanjena. Vi više niste odgovorni za to da li je neko otuđio hard disk iz vašeg data centra, kao i da li je vaša lokalna mreža kompromitovana, jer je mrežni administrator propustio instalirati posljednja sigurnosna ažuriranja na vašu mrežnu opremu. Naravno, vi morate da vodite računa da koristite enkripciju podataka, zatim da propisno konfigurišete dozvoljeni saobraćaj, te da pazite na to da li je vaš web server uredno konfigurisan itd. Ovo su bili samo neki od izdvojenih primjera koji ukazuju koliko je ustvari takav pristup sigurnosti bolji u odnosu na ono na šta smo do sada navikli.
Resursi provajdera usluga javnog clouda su raspoređeni po čitavom svijetu, zahvaljujući tome jednostavno je kreirati infrastrukturu otpornu na greške, ali i napraviti učinkovite planove oporavka u slučaju katastrofe. Uzmemo li za primjer prirodne katastrofe, kao što je zemljotres, za visoku dostupnu infrastrukturu neophodno je imati hardverske resurse na različitim tektonskim pločama. U slučaju da posjedujete vlastiti data centar i želite imati plan oporavka od takvog tipa katastrofe, to bi zahtijevalo značajna novčana sredstva u odnosu na javni cloud. Za pravilan rad i funkcionisanje vlastitog data centra, potrebni su i značajni ljudski resursi. Kada koristite public cloud, vrijeme uloženo u zadatke održavanja vlastite infrastrukture se može preusmjeriti na zadatke koji će ubrzati postizanje zadanih poslovnih ciljeva.

Razumijevanje cloud terminologije

Da bismo bili u mogućnosti razumjeti u potpunosti koncepte cloud-a, a samim tim i Amazon Web Servisa potrebno je prvo pojasniti vrlo važne pojmove koji su sastavni dio cloud-a.

High Availability (HA) označava svojstvo infrastrukture da osigura dostupnost sistema. Što je veća važnost aplikacije, odnosno sistema, ovo svojstvo postaje sve od većeg značaja. Prema Harvard Research Group (HRG) postoje sljedeće klasifikacije dostupnosti sistema (Availability Environments Classification - AEC):

  • Highly Reliable (AEC-1): Funkcionisanje sistema može biti prekinuto, ali dostupnost i integritet podataka moraju biti osigurani. U ovom slučaju, za krajnjeg korisnika dolazi do nekontrolisanog gašenja sistema, međutim dostupnost podataka je osigurana u vidu sigurnosne kopije (backup).
  • High Availability (AEC-2): Funkcionisanje sistema može biti minimalno prekinuto. Za krajnjeg korisnika, to znači da će rad biti prekinut, ali se može brzo nastaviti. Postoji mogućnost kratkotrajnog pada performansi sistema.
  • Fault Resilient (AEC-3): Funkcionisanje sistema mora biti osigurano i održavano tokom radnog vremena. Korisnik mora ostati prijavljen na sistem (online), bez obzira na problem koji se dogodio. Postoji mogućnost kratkotrajnog pada performansi sistema.Fault Tolerant (AEC-4): Funkcionisanje sistema mora biti osigurano 24 sata, 7 dana u sedmici. Za krajnjeg korisnika nema prekida u radu sistema, odnosno nema izgubljenih transakcija i pada u perfromansama.

Sistem se smatra visoko dostupnim ako maksimalna nedostupnost sistema nije veća od ~53 minute godišnje što je znači da je sistem dostupan 99,99% vremena tokom godine.

Disaster recovery (DR) predstavlja mogućnost oporavka sistema i nastavak njegovog funkcionisanja uslijed prirodne katastrofe (zemljotresi, poplave, požari itd), ili katastrofe uzrokovane ljudskim faktorom.

Bilo koji događaj koji ima negativan uticaj na rad sistema, kao i na poslovanje kompanije, može se smatrati katastrofom.

Elasticity - elastičnost, odnosno elastičnost, označava mogućnost trenutnog (real-time) odgovora zahtjevima za resursima unutar vaše infrastrukture u cloud-u.  U cloud okruženju elasticity ima veliku važnost. Naime kada se pojavi veliki i iznenadni zahtjev za dodatnim resursima nad aplikacijom, zahvaljujući elasticity-u, novi resursi neophodni za nesmetan rad naše aplikacije će automatski biti aktivirani. Nakon što se opterećenje smanji, resursi bivaju oslobođeni, pa tako plaćamo samo ono što koristimo i koliko koristimo. Elasticity se koristi u kratkim vremenskim intervalima.

Scalability - skaliranje, predstavlja unaprijed predviđeni rastu infrastrukture. Primjera radi, zahvaljujući testovima opterećenja utvrđeno je da postojeća infrastruktura više ne odgovara trenutnim zahtjevima, te se pojavila potreba za dodatnim resursima. Tada smo mi unaprijed svjesni potrebe za dodatnim resursima, te ćemo povećati resurse unutar naše infrastrukture, na način da povećamo (pojačamo) hardver unutar postojećih instanci (servera) ili da dodamo još novih instanci (servera).

U skladu sa tim, razlikujemo dvije vrste Scalability-a:

  • Vertikalno skaliranje ili Scale Up predstavlja povećavanje postojećih hardverskih karakteristika, npr. dodavanje RAM-a ili prostora na disku ili izmjenom tip procesora
  • Horizontalno skaliranje ili Scale out predstavlja dodavanje resursa u vidu povećavanja broja servera.

Razlika između Elasticity-a i Scalability-a je u tome što kod Elasticity-a resurse koje koristimo možemo osloboditi, dok kod Scalability-a nemamo tu mogućnost, odnosno možemo raditi samo scale out i scale up, međutim ne i scale down. Možemo reći da je Scalability i jednosmjerni Elasticity.

Kategorije servisa u javnom cloudu

Za razliku od vlastitih data centara, gdje je sva odgovornost na kompanijama, počevši od hardvera pa do aplikacije koju isporučuje korisnicima, to sa javnim cloudom nije slučaj. Procenat odgovornosti za cjelokupno okruženje između korisnika cloud servisa i cloud provajdera varira u zavisnosti od toga kojoj kategoriji cloud servis pripada. Da bi se to lakše razumjelo često se koristi analogija “Pizza as a Service”:

  • On Premise (vlastiti data centar) - "vi kupujete sve namirnice i pravite pizzu kod vaše kuće"
  • Infrastructure as a Service (IaaS) - "pizzu spremnu za pečenje kupujete u supermarketu, i pečete je kod svoje kuće"
  • Platform as a Service (PaaS) - "dobijete pizzu spremnu za pečenje na kućnu adresu"
  • Software as a Service (SaaS) - "jedete pizzu u restoranu"
Slika 1: Usporedba različitih kategorija cloud servisa sa on premise infrastrukturom

Infrastructure as a Service (IaaS) ili “Infrastruktura kao Servis” se može opisati kao servis koji krajnjem korisniku omogućava korištenje infrastrukture jednog podatkovnog (data) centra kao servisa. Prosta definicija bi bila da je to mogućnost pokretanja vlastitih virtuelih mašina unutar tuđeg data centra. U slučaju IaaS kategorije, cloud provajder posjeduje svu hardversku opremu, zadužen je za njen pravilan rad i održavanje, dok krajnji korisnik određuje količinu resursa koje želi da iznajmi, odnosno koristi za potrebe svojih mašina.

Mašine su virtualizirane i hipervizorom su odvojene od hardvera, što cloud provjaderu omogućava da ima više mašina na istom bare-metal serveru, koje ne moraju biti vlasništvo istog korisnika. Virtuelne mašine “ne znaju” za postojanje druge mašine, iako dijele isti hardver, te svaka koristi onliko resursa koliko je krajnji korisnik za nju zatražio prilikom njenog kreiranja.

Krajnji korisnik resurse (mašine, diskove, mrežno okruženje) kreira koristeći korisnički interfejs, API ili SDK koji mu je omogućio cloud provajder.

Za razliku od IaaS, gdje je cloud provajder vodio brigu samo o hadveru na kojem se nalazi vaša mašina, u slučaju Platform as a Service (PaaS) ili “Platforma kao Servis” kategorije cloud provajder vam kao servis isporučuje čitavu platformu. Platforma uključuje operativni sistem, te okruženje za izvršavanje vaše aplikacije sa neophodnim bibliotekama, servisima i alatima.

Pa tako kada koristite PaaS, pored toga što ne morate da brinete o hardveru na kojem se nalazi mašina, ne brinete oko operativnog sistema, njegove instalacije i ažuriranja. To vam u konačnici omogućava da vašu aplikaciju korisnicima isporučite na brz i jednostavan način, uz minimalan napor i utrošak vremena.

Software as a Service (SaaS) ili Aplikacija kao Servis je najraširenija public cloud kategorija, koja krajnjem korisniku omogućava da koristi, odnosno iznajmljuje aplikacije koje se nalaze unutar javnog cloud-a. Cloud provajder je taj koji je u potpunosti zadužen, kako za hardver, tako i za platformu na kojoj se aplikacija izvršava. Potkategorija SaaS kategorije, bi bila Database as a Service (DBaaS) ili Baza kao servis, gdje je krajenjem korisniku omogućeno korištenje različitih tipova sistema za upravljanje bazama podataka (MS SQL, MySQL, PgSQL itd.), bez potrebe da ih samostalno instaliraju i administriraju.

SaaS se često definiše i kao aplikacija na zahtjev, primjeri takvih aplikacija su GMail, Office 365 itd.

Zaključak


U ovom blog postu smo objasnili šta je to cloud odnosno računarstvo u oblaku, koje su to vrste cloud-a, kao i koji su to najvažniji pojmovi vezani za cloud. Kako će fokus narednih postova uglavnom biti na javnom cloud-u, umjesto punog naziva javni odnosno public cloud koristiti ćemo samo izraz cloud.

Author image
#AWS ☁ #DevOps #databases enthusiast