Pilvepõhine arvutus

Pilvepõhine arvutus (ingl cloud native computing) on paradigma, mida edendab Cloud Native Computing Foundation (CNCF), eesmärgiga pakkuda viisi skaleeritavate rakenduste loomiseks ja käitamiseks tänapäevastes, dünaamilistes pilvekeskkondades. Selle paradigma järgi loodud rakendusi nimetatakse pilvepõhisteks rakendusteks. Need rakendused on kavandatud kasutama täiel määral pilveplatvormide pakutavat mastaabitavust (kohanemist kõrge koormusega), elastsust (arvutusressursside kasutuse vähendamist või suurendamist vastavalt vajadusele) ning töökindlust (vigade sujuvat käsitlemist)N.R. Herbst, S. Kounev, and R. Reussner, “Elasticity in Cloud Computing: What it is, and What it is Not,” in Proceedings of the 10th International Conference on Autonomic Computing (ICAC 2013). Selliste rakenduste arendamise tava on tuntud kui pilvepõhiste rakenduste arendus (ingl cloud native application development) ning seda iseloomustab spetsiifiline kultuur ja tehnoloogiad, mis võimaldasid seda paradigma muutust ning lõid eeldused rakenduste väljatöötamiseks just selliste omadustega.

 Tehnoloogiad, mis võimaldavad pilvepõhist arvutust 

 Üleminek monoliitsetest rakendustest mikroteenuseni 
Võib tekkida eksiarvamus, et iga pilves töötav rakendus on pilvepõhine. Tegelikkuses ei vasta kõik arhitektuuristiilid pilvepõhise rakenduse nõuetele, ja varem loodud monoliitsed rakendused on üks näide neist. Monoliitses rakenduses on kõik rakenduse komponendid tihedalt seotud ja neid juurutatakse ühtse tervikuna. See põhjustab mitmeid puuduseidA. Koschel, I. Astrova, J. Dötterl, Making the move to microservice architecture, in: 2017 International Conference on Information Society, I-Society, 2017, pp. 74–79:

 Piiratud skaleeritavus: Monoliitseid rakendusi on keeruline skaleerida, sest skaleerimiseks tuleb skaleerida kogu rakendus, isegi kui ainult väike osa sellest kogeb suurt koormust.
 Vähene vastupidavus: Monoliitsed rakendused on rikete suhtes vähem vastupidavad, kuna ühe komponendi rike võib kogu rakenduse teovõimetuks ajada.
 Aeglased arendustsüklid: Monoliitsetel rakendustel on pikad arendustsüklid, sest arendajate muudatused kipuvad omavahel konflikti minema ja ühe komponendi muutmine võib nõuda täiendusi ka mitmes teises kohas.

Mikroteenuste arhitektuur lahendab neid probleeme, jagades rakenduse loogika väiksemateks mooduliteks. See tagab lühema ehitusaja, kiirema juurutuse ja parema moodulipõhise skaleeritavuseM. Fowler, J. Lewis, (2014). "Microservices a definition of this new architectural term". Lisaks on sel moel arendatud rakendustel suurem autonoomia, mistõttu on eri meeskondadel hõlpsam keskenduda konkreetsetele mikroteenustele. 

 Konteinerid 
Konteinerid on porditavad ja kergekaalulised täitmisüksused, mis kapseldavad rakendust koos kõigi selle sõltuvustega. Sõltuvuste hulka kuuluvad nii rakenduse kood, kui ka käituskeskkond, süsteemitööriistad ja teegid. Selline kapseldamine eraldab rakendust ning selle sõltuvusi alustaristust, võimaldades konteineril töötada igal süsteemil, kus on paigaldatud ühilduv konteinerite mootor. Konteinerite eraldamine ja kergekaalulisus lahendab mitmeid pilvepõhise rakenduse vajadusi, pakkudes muu hulgas kordistavat juurutamist, mis omakorda lihtsustab silumist ning tõrkeotsingut. Lisaks võimaldab konteineripõhine lahendus hõlpsat skaleerimist, luues või eemaldades vajadusel konteinereid, suurendades seekaudu süsteemi tõhusust.

 Orkestreerimine 
Kuigi konteinerid vähel hulgal on hõlpsasti hallatavad, rakendused — eriti mikroteenustel põhinevad — siiski võivad vajada sadu või koguni tuhandeid konteinereid. Sellise arvu konteinereid käsitsi hallata, nende tervist tagada ning neid vajaduspõhiselt lisada või eemaldada on keeruline. Konteinerite orkestreerimine lahendab need probleemid, võttes üle konteinerite halduse, skaleerimise ja juurutamise automatiseerimise.

Konteinerite orkestreerija pakub keskset platvormi konteineripõhiste rakenduste haldamiseks. See võimaldab arendajatel deklaratiivses vormis määrata rakenduse soovitud oleku: mitu konteinerit igast tüübist peab töötama, millistesse keskkondadesse need jaotada ning kuidas konteinerid omavahel ühenduvad. Orkestreerija ülesanne on seejärel tagada, et rakenduse tegelik olek vastab soovitud olekule. Näiteks Kubernetes (nimi tuleneb vanakreeka sõnast 'tüürimees'), üks populaarsemaid orkestraatoreid, võimaldab tagada tõrkekindlust ja mastaabitavust replitseerimise kaudu, teha ilma seisakuta (ingl zero downtime) uuendusi, horisontaaselt ja dünaamiliselt mastaapida rakendusi ning tagada, et kriitilised protsessid jooksevad igal arvutussõlmel.

 Pilvepõhise lahenduse tasuvus 
Pilvetehnoloogia pakub märkimisväärseid eeliseid nii kulutõhususe kui ka ressursikasutuse valdkonnas. Erinevalt traditsioonilistest omatarbelahendustest ei nõua see esialgseid investeeringuid riistvarasse ega andmekeskustesse, vähendades nii rahalisi takistusi kui ka turule tarnimise aega. Pilveplatvormide elastsus võimaldab ressursse dünaamiliselt jaotada, vältides nii ülemäärase kui ka ebapiisava võimekuse riske. Tasupõhise (ingl pay-as-you-go) hinnamudeli tõttu maksavad kasutajad vaid tegelikult kasutatavate ressursside eest, vältides kulusid ilma tööta seisvale taristule. Need tegurid tagavad kõrgema investeeringute tootluse kui omatarbelahendused (ingl on-prem), ja see erinevus vaid kasvab.

 Pilvepõhise arvutuse raskused 
Pilvepõhine lahendus toob mitte ainult eelistusi, aga ka täiendavaid probleeme eriti rakenduste turvalisuse ja arhitektuurilise keerukuse osas.

Pilverakendused on vastuvõtlikud mitmesugustele turvariskidele, muu hulgas vigastele konfiguratsioonidele, volitamata juurdepääsule ja mitme kasutajaga (ingl multi-tenant) arhitektuuride haavatavustele. Mõned rünnakud võivad ära kasutada ka pilvetehnoloogia elastsust: nn „Denial-of-Wallet“ pidevalt ülekoormab pilvepõhist rakendust ning suurendab sellega kasutuskulusid kurnades rakenduse omaniku rahakottiD. Kelly, F. G. Glavin, and E. Barett, “Denial of wallet—Defining a looming threat to serverless computing” in Journal of Information Security and Applications, volume 60, 2021. Nende ohtude tõrjumiseks on tarvis täiendavat pädevust, et tagada tugev autentimine ja tõhus ressursihaldus, vältides nii operatiivset kui ka finantsilist kahju.

Mikroteenused pakkuvad mastaabitavust, aga toovad ühtlasi kaasa suurema keerukuse, jaotades süsteemi arvukateks omavahel ühendatud komponentideks, millest igal on oma sõltuvused ja võimalikud tõrkepunktid. Üksainus vigane konfiguratsioon või teenusekatkestus võib kergesti levida näiliselt mitteseotud osadesse, muutes tõrgete avastamise ja lahendamise keerulisemaks. Seetõttu on põhjalik jälgitavus (ingl observability) vältimatu, et mõista süsteemi eri osade toimimist ja vastastikust mõju ulatuslikult. Samas lisab jälgitavuse rakendamine täiendavat halduskoormust, sest nõuab spetsiaalseid tööriistu, taristut ja eksperditeadmisi, mis võib märkimisväärselt kasvatada kulusid.

 Viited 

Kategooria:Pilvandmetöötlus