Pradžia / Programavimas / Cloud computing pagrindai

Cloud computing pagrindai

Kas iš tikrųjų yra tas debesis?

Jei kas nors jūsų paklaus, kas yra cloud computing, tikėtina, kad gausite atsakymą kažką panašaus į „na, tai kai duomenys saugomi internete”. Techniškai tai nėra visiškai neteisinga, bet tai yra maždaug tiek pat tikslu, kaip pasakyti, kad automobilis yra „daiktas, kuris juda”. Realybė yra kur kas įdomesnė ir sudėtingesnė.

Cloud computing – tai kompiuterinių resursų (serverių, saugyklos, duomenų bazių, tinklų, programinės įrangos) teikimas per internetą pagal poreikį. Vietoj to, kad turėtumėte savo serverių kambarį su ūžiančiais ventiliatoriais ir nuolat mirksinčiomis lemputėmis, jūs tiesiog „nuomojatės” šiuos resursus iš didžiulių duomenų centrų, kurie gali būti įsikūrę Airijoje, Singapūre ar Virdžinijoje.

Terminas „debesis” atsirado iš tinklo diagramų tradicijos – inžinieriai dažnai piešdavo internetą kaip debesį, nes vidinis jo veikimas buvo nesvarbus konkrečiai sistemai. Laikui bėgant šis simbolis tapo viso koncepto pavadinimu. Šiandien AWS, Microsoft Azure ir Google Cloud valdo fizinę infrastruktūrą, kurią sudaro šimtai tūkstančių serverių, o jūs tiesiog naudojatės jų galia per naršyklę ar API.

Trys pagrindiniai modeliai, kuriuos verta suprasti

Cloud paslaugos skirstomos į tris pagrindinius modelius, ir šis skirstymas nėra tik akademinis – jis tiesiogiai veikia, kaip jūs dirbate, ką kontroliuojate ir už ką mokate.

IaaS (Infrastructure as a Service) – tai pats žemiausias lygis. Čia jūs gaunate virtualius serverius, tinklą, saugyklą. Amazon EC2 yra klasikinis pavyzdys. Jūs pats instaliuojate operacinę sistemą, konfigūruojate viską nuo nulio. Maksimali kontrolė, bet ir maksimali atsakomybė. Tai tarsi nuomotis tuščią butą – jūs pats perki baldus, įrengi virtuvę.

PaaS (Platform as a Service) – vidurinysis lygis. Čia jau turite paruoštą aplinką kūrimui. Heroku, Google App Engine – jūs tiesiog įkeliate kodą, o platforma pasirūpina serveriais, skaliavimu, atnaujinimais. Puiku kūrėjams, kurie nori koncentruotis į logiką, o ne infrastruktūrą. Kaip nuomotis butą su baldais – tik atsineši savo daiktus.

SaaS (Software as a Service) – aukščiausias lygis, kurį naudoja beveik visi, net nežinodami. Gmail, Slack, Salesforce, Notion – tai visi SaaS produktai. Jūs tiesiog naudojatės programa per naršyklę, nieko neinstaliuodami, nieko nekonfigūruodami. Kaip viešbutis – ateini, gyveni, išeini.

Praktinis patarimas: jei pradedate naują projektą ir neturite dedikuotos DevOps komandos, pradėkite nuo PaaS. Sutaupysite daugybę valandų, kurias kitu atveju praleistumėte konfigūruodami nginx ir sprendžiant SSL sertifikatų problemas.

Deployment modeliai: ne visas debesis vienodas

Dar vienas svarbus aspektas – kur ir kaip jūsų infrastruktūra yra diegiama. Čia taip pat yra keletas variantų, ir kiekvienas turi savo logiką.

Public cloud – resursai priklauso ir valdomi cloud teikėjo (AWS, Azure, GCP). Jūs dalijatės fizine infrastruktūra su kitais klientais, bet logiškai esate atskirti. Pigiausia ir lankstiausia opcija mažoms bei vidutinėms įmonėms.

Private cloud – infrastruktūra skirta tik jūsų organizacijai. Gali būti jūsų duomenų centre arba pas trečiąją šalį, bet niekas kitas jos nenaudoja. Bankai, sveikatos apsaugos įstaigos, gynybos sektorius – štai kas renkasi šį modelį dėl reguliacinių reikalavimų ar saugumo priežasčių. Kaina atitinkamai aukštesnė.

Hybrid cloud – public ir private cloud derinys. Jautri informacija lieka private cloud, o mažiau kritiški darbo krūviai perkeliami į public cloud. Tai šiandien labiausiai paplitęs modelis tarp didelių įmonių. Sudėtingiau valdyti, bet lankstumas atsipirka.

Multi-cloud – naudojate kelis skirtingus cloud teikėjus vienu metu. Galbūt AWS duomenų bazėms, Azure ML modeliams, GCP duomenų analitikai. Sumažina priklausomybę nuo vieno tiekėjo (vendor lock-in), bet padidina kompleksiškumą.

Skalėjimas ir elastingumas – kodėl tai keičia žaidimo taisykles

Viena iš didžiausių cloud computing privalumų, apie kurią dažnai kalbama, bet retai gerai paaiškinama, yra elastingumas. Pabandykime tai paaiškinti konkrečiai.

Įsivaizduokite, kad turite e-komercijos svetainę. Paprastai per dieną turite 1000 lankytojų. Bet atėjo Juodasis penktadienis – ir staiga turite 50 000 lankytojų per valandą. Tradicinėje infrastruktūroje jūs turėtumėte iš anksto nusipirkti serverius, galinčius atlaikyti piko apkrovą. Tai reiškia, kad 364 dienas per metus mokate už serverius, kurie stovi tuščiai.

Cloud leidžia automatiškai pridėti resursus, kai apkrova auga, ir juos atimti, kai apkrova mažėja. AWS Auto Scaling, Azure Scale Sets – šie įrankiai gali per minutes paleisti papildomus serverius ir taip pat greitai juos išjungti. Mokate tik už tai, ką faktiškai naudojate.

Yra du skalėjimo tipai:

  • Vertical scaling (scale up) – didinamas vieno serverio galingumas (daugiau CPU, RAM). Paprasčiau, bet turi ribas ir reikalauja perstartavimo.
  • Horizontal scaling (scale out) – pridedami daugiau serverių. Sudėtingiau architektūriškai, bet praktiškai neribota galimybė augti.

Praktinė rekomendacija: projektuodami sistemas cloud aplinkoje, visada galvokite apie horizontal scaling. Stateless architektūra, kur kiekvienas serveris gali aptarnauti bet kurį užklausą nepriklausomai nuo kitų, yra aukso standartas.

Saugumas debesyje – mitas ir realybė

Vienas dažniausių argumentų prieš cloud yra saugumas. „Kaip galiu patikėti savo duomenis kažkam kitam?” Tai suprantamas klausimas, bet jis dažnai remiasi klaidinga prielaida, kad jūsų pačių infrastruktūra yra saugesnė.

AWS turi tūkstančius saugumo specialistų, dirba pagal SOC 2, ISO 27001, PCI DSS standartus, turi fizinę apsaugą duomenų centruose, kurios daugelis įmonių niekada negalėtų sau leisti. Palyginkite tai su tipišku serverių kambariu vidutinėje įmonėje – galbūt su spyna ant durų ir galbūt su UPS.

Tačiau svarbu suprasti shared responsibility modelį. Cloud teikėjas yra atsakingas už infrastruktūros saugumą (fiziniai serveriai, tinklas, hipervizoriai). Jūs esate atsakingi už saugumą debesyje (duomenys, prieigos kontrolė, konfigūracija, šifravimas).

Dauguma cloud saugumo incidentų įvyksta ne dėl teikėjo klaidos, o dėl netinkamos konfigūracijos kliento pusėje. S3 bucket’ai be prieigos apribojimų, per plačios IAM teisės, neužšifruoti duomenys – tai realios problemos, su kuriomis susiduria organizacijos.

Keletas konkrečių saugumo patarimų:

  • Visada naudokite principle of least privilege – suteikite tik minimalias reikalingas teises
  • Įgalinkite MFA (multi-factor authentication) visiems administratoriams
  • Šifruokite duomenis tiek saugojimo metu (at rest), tiek perdavimo metu (in transit)
  • Reguliariai peržiūrėkite saugumo grupes ir prieigos politikas
  • Naudokite cloud-native saugumo įrankius: AWS Security Hub, Azure Defender, GCP Security Command Center

Kaštų valdymas – kur dažniausiai pasimeta pinigai

Cloud gali būti labai pigu arba labai brangu – priklausomai nuo to, kaip jį naudojate. Istorijų apie šimtatūkstantines sąskaitas dėl pamiršto resursų išjungimo yra pakankamai, kad tai taptų rimtu įspėjimu.

Pagrindiniai kaštų modeliai cloud aplinkoje:

Pay-as-you-go – mokate tik už faktiškai sunaudotus resursus. Lankstiausia opcija, bet gali būti brangiausia ilgalaikėje perspektyvoje.

Reserved instances – įsipareigojate naudoti resursus 1 ar 3 metus ir gaunate iki 72% nuolaidą. Puiku stabiliai apkrovai, kurią galite prognozuoti.

Spot instances (AWS) / Spot VMs (Azure) – naudojate nepanaudotus cloud resursus už labai mažą kainą (iki 90% pigiau), bet jie gali būti atimti bet kada. Tinka batch processing, ML mokymo darbams, bet ne produkcinėms sistemoms.

Dažniausios kaštų problemos ir kaip jų išvengti:

  • Zombie resursai – serveriai, duomenų bazės, IP adresai, kurie sukurti ir pamiršti. Sprendimas: reguliarūs auditai, tagging politika, automatinis neaktyvių resursų išjungimas.
  • Oversizing – per didelių serverių naudojimas. Sprendimas: stebėkite CPU ir atminties naudojimą, naudokite rightsizing rekomendacijas.
  • Duomenų perdavimo kaštai – duomenų išsiuntimas iš cloud (egress) kainuoja. Sprendimas: architektūriškai minimizuokite duomenų judėjimą tarp regionų.
  • Neoptimizuota saugykla – visi duomenys saugomi brangiausio tipo saugykloje. Sprendimas: naudokite storage tiering – šaltus duomenis perkelkite į pigesnes klases (S3 Glacier, Azure Archive).

Pagrindiniai cloud teikėjai ir kaip pasirinkti

Rinkoje dominuoja trys pagrindiniai žaidėjai: Amazon Web Services (AWS), Microsoft Azure ir Google Cloud Platform (GCP). Kiekvienas turi savo stipriąsias puses ir ekosistemą.

AWS yra rinkos lyderis su didžiausiu paslaugų skaičiumi (virš 200 paslaugų). Jei ieškote ko nors specifinio, tikėtina, kad AWS tai turi. Ypač stiprus compute, serverless (Lambda), duomenų bazių srityje. Trūkumas – dokumentacija kartais chaotiška, o kaštų struktūra gali būti sudėtinga.

Azure – natūralus pasirinkimas organizacijoms, jau naudojančioms Microsoft ekosistemą (Active Directory, Office 365, .NET). Stipriausias enterprise segmente, ypač hibridiniuose sprendimuose. Azure Arc leidžia valdyti resursus tiek cloud, tiek on-premises iš vienos vietos.

GCP – Google stiprybė yra duomenų analitika ir mašininis mokymasis. BigQuery duomenų sandėliavimui, Vertex AI ML darbams, Kubernetes (GKE) – čia GCP tikrai blizga. Mažesnė rinkos dalis, bet labai stipri techninė bazė.

Kaip pasirinkti? Keletas praktinių kriterijų:

  • Jei jūsų komanda jau moka AWS – likite AWS. Mokymosi kreivė yra reali kaina.
  • Jei esate Microsoft-centrinė organizacija – Azure bus natūraliausias kelias.
  • Jei dirbate su dideliais duomenų kiekiais ar ML – rimtai apsvarstykite GCP.
  • Jei pradedate nuo nulio mažą projektą – DigitalOcean ar Hetzner gali būti paprastesni ir pigesni variantai.

Nuo teorijos prie pirmų žingsnių – kaip nepasiklysti

Cloud computing yra viena tų sričių, kur teorija ir praktika skiriasi labiau nei daugelyje kitų IT sričių. Galite perskaityti visą dokumentaciją ir vis tiek pirmą kartą sukonfigūravę VPC jaustis visiškai pasimetę.

Geriausia strategija pradedantiesiems – pradėkite mažai ir konkrečiai. Užsiregistruokite AWS Free Tier arba Google Cloud Free Tier – abu siūlo nemokamą lygį, kurio pakanka eksperimentams. Pabandykite paleisti paprastą web serverį, sukurkite duomenų bazę, išbandykite object storage. Klaidos šiame etape nieko nekainuoja, bet moko labai daug.

Sertifikatai gali būti naudingi struktūruotam mokymuisi. AWS Certified Cloud Practitioner yra geras pradžios taškas – jis apima pagrindinius konceptus be per didelio techninio gylio. Vėliau galite eiti į Solutions Architect arba Developer specializacijas.

Infrastruktūra kaip kodas (IaC) – tai konceptas, kurį verta išmokti kuo greičiau. Terraform, AWS CloudFormation, Azure Bicep leidžia aprašyti infrastruktūrą kodu, versijuoti ją Git’e ir atkurti bet kada. Tai ne tik patogiau – tai yra profesionalus standartas. Rankinis infrastruktūros kūrimas per konsolę yra geras mokymuisi, bet ne produkcijai.

Stebėjimas ir logging – nepamiršta, bet labai svarbi dalis. AWS CloudWatch, Azure Monitor, Datadog, Grafana – pasirinkite įrankius, kurie leis jums matyti, kas vyksta jūsų sistemose realiu laiku. Problemą, kurią matote, galite išspręsti. Problemą, apie kurią sužinote iš kliento skambučio – jau per vėlai.

Cloud computing šiandien nėra „ateities technologija” – tai dabartis. Absoliuti dauguma naujų sistemų kuriama cloud aplinkoje, ir ši tendencija tik stiprės. Suprasti cloud pagrindus nebėra tik IT specialistų prerogatyva – tai tampa bendrojo technologinio raštingumo dalimi, kaip suprasti, kas yra duomenų bazė ar kaip veikia HTTP. Kuo anksčiau pradėsite eksperimentuoti, tuo greičiau teoriniai konceptai taps intuityviais įrankiais jūsų arsenale.