Cloud computing pentru începători: IaaS, PaaS, SaaS și serverless
Modelele de cloud explicate simplu: cine administrează ce, cum alegi între ele, AWS vs. Azure vs. Google Cloud și cum eviți costurile surpriză.
Aproape orice aplicație modernă rulează, măcar parțial, „în cloud”, iar anunțurile de angajare pomenesc constant AWS, Azure sau Google Cloud. Termenul sună abstract, dar ideea de bază e simplă: închiriezi resurse de calcul de la cineva care le administrează pentru tine, în loc să cumperi și să întreții propriile servere. Ghidul acesta explică modelele principale (IaaS, PaaS, SaaS și serverless), cum alegi între ele și cum faci primii pași fără o factură surpriză.
Ce este cloud computing
Cea mai citată definiție vine de la institutul american de standarde NIST, în documentul SP 800-145. Tradusă în limbaj de zi cu zi, un serviciu de cloud are cinci caracteristici:
- Self-service la cerere: pornești un server sau o bază de date din consolă sau din linia de comandă, în câteva minute, fără să vorbești cu cineva.
- Acces prin rețea: resursele sunt disponibile prin internet, de pe orice dispozitiv.
- Resurse partajate: furnizorul deservește mulți clienți pe aceeași infrastructură fizică, izolându-i între ei.
- Elasticitate: poți crește sau reduce capacitatea rapid, uneori automat, în funcție de trafic.
- Plată după consum: plătești pentru ce folosești (ore de procesor, gigabytes stocați, cereri procesate), nu pentru hardware cumpărat în avans.
O analogie utilă este curentul electric: nu îți construiești o centrală, ci te conectezi la rețea și plătești consumul. Diferența e că, în cloud, poți alege cât de mult din „instalație” administrezi tu.
Modelele de servicii: cine se ocupă de ce
Diferența dintre IaaS, PaaS și SaaS se reduce la o întrebare: ce administrezi tu și ce administrează furnizorul?
| Strat | On-premises | IaaS | PaaS | SaaS |
|---|---|---|---|---|
| Aplicația | Tu | Tu | Tu | Furnizorul |
| Datele și accesul la ele | Tu | Tu | Tu | Tu (în mare parte) |
| Runtime și middleware | Tu | Tu | Furnizorul | Furnizorul |
| Sistemul de operare | Tu | Tu | Furnizorul | Furnizorul |
| Virtualizarea | Tu | Furnizorul | Furnizorul | Furnizorul |
| Servere, stocare, rețea | Tu | Furnizorul | Furnizorul | Furnizorul |
Observă rândul despre date: chiar și în SaaS, tu rămâi responsabil pentru cine are acces la date și cum le folosești. Această împărțire se numește modelul responsabilității partajate (shared responsibility model) și e esențială pentru securitate.
IaaS: Infrastructure as a Service
Închiriezi mașini virtuale, stocare și rețea. Tu instalezi sistemul de operare, actualizările de securitate, runtime-ul și aplicația.
- Exemple: Amazon EC2, Azure Virtual Machines, Google Compute Engine.
- Când are sens: ai nevoie de control complet asupra mediului, rulezi software care cere o anumită configurație sau migrezi aplicații existente fără să le rescrii („lift and shift”).
- Ce cere de la tine: cunoștințe de Linux, rețelistică și securitate. Un server uitat fără actualizări e o problemă reală.
PaaS: Platform as a Service
Furnizorul administrează serverele și runtime-ul; tu aduci codul. Faci deploy, iar platforma se ocupă de scalare, actualizările sistemului de operare și, adesea, de certificatele HTTPS.
- Exemple: Azure App Service, Google App Engine, AWS Elastic Beanstalk, Heroku.
- Când are sens: aplicații web și API-uri standard, echipe mici care vor să livreze fără să administreze infrastructură.
- Compromisul: mai puțin control (versiuni de runtime, configurații speciale) și o dependență mai mare de platformă.
SaaS: Software as a Service
Folosești o aplicație completă, direct în browser, fără să administrezi nimic tehnic. Gmail, Microsoft 365, Slack sau Salesforce sunt toate SaaS. Ca programator, construiești adesea produse SaaS și folosești zilnic altele.
Serverless: un pas mai departe
Serverless nu înseamnă că nu există servere, ci că nu te mai gândești deloc la ele. Scrii funcții care rulează ca reacție la un eveniment (o cerere HTTP, un fișier încărcat, un mesaj într-o coadă), iar furnizorul pornește exact câte instanțe sunt necesare, inclusiv zero atunci când nu vine nicio cerere.
O funcție AWS Lambda minimală, în JavaScript, care răspunde la o cerere HTTP:
export const handler = async (event) => {
const nume = event.queryStringParameters?.nume ?? "lume";
return {
statusCode: 200,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ mesaj: `Salut, ${nume}!` }),
};
};
Exemple de servicii: AWS Lambda, Azure Functions, Google Cloud Run functions.
Avantaje:
- Plătești, în principal, pentru execuțiile efective; o aplicație fără trafic costă foarte puțin.
- Scalare automată, fără configurare.
- Zero administrare de servere.
Limitări de care trebuie să ții cont:
- Cold start: prima cerere după o perioadă de inactivitate poate dura vizibil mai mult, pentru că furnizorul pornește o instanță nouă.
- Durată limitată: funcțiile au un timp maxim de execuție (la AWS Lambda, 15 minute), deci nu sunt potrivite pentru procesări foarte lungi.
- Fără stare locală: orice trebuie păstrat merge într-o bază de date, un cache sau un serviciu de stocare.
- Cost la volum mare: la trafic constant și ridicat, serverless poate ajunge mai scump decât servere dedicate.
Între PaaS și funcțiile serverless există și o categorie foarte populară: containere serverless, precum Google Cloud Run, AWS Fargate sau Azure Container Apps. Livrezi o imagine Docker, iar platforma o rulează și o scalează. Primești flexibilitatea containerelor fără să administrezi un cluster.
Cum alegi modelul potrivit
| Criteriu | IaaS | PaaS | Containere serverless | Funcții serverless |
|---|---|---|---|---|
| Control asupra mediului | Maxim | Mediu | Mediu-mare | Mic |
| Efort de administrare | Mare | Mic | Mic | Minim |
| Scalare | Configurezi tu | Automată sau semi-automată | Automată | Automată, inclusiv la zero |
| Model de cost | Pe oră, indiferent de trafic | Pe instanță sau plan | Pe resurse consumate | Pe cereri și durată |
| Potrivit pentru | Software special, migrări | Aplicații web standard | API-uri, servicii în containere | Evenimente, trafic variabil |
O regulă bună pentru început: alege cel mai înalt nivel de abstractizare care îți rezolvă problema. Cobori spre IaaS doar când ai un motiv concret.
Modele de implementare
Pe lângă ce închiriezi, contează și unde rulează:
- Cloud public: infrastructura furnizorului, partajată cu alți clienți (AWS, Azure, Google Cloud).
- Cloud privat: infrastructură dedicată unei singure organizații, în propriul centru de date sau la un furnizor.
- Cloud hibrid: o combinație, de exemplu datele sensibile rămân on-premises, iar aplicația web rulează în cloud public.
- Multi-cloud: folosești mai mulți furnizori publici, pentru reziliență, preț sau servicii specifice. Aduce flexibilitate, dar și complexitate operațională.
Pentru companiile din Uniunea Europeană, alegerea regiunii contează și din motive de conformitate (GDPR): furnizorii mari au regiuni în UE, iar datele personale se păstrează de regulă acolo.
Cei trei mari furnizori, pe scurt
Serviciile au nume diferite, dar conceptele se suprapun aproape perfect:
| Categorie | AWS | Azure | Google Cloud |
|---|---|---|---|
| Mașini virtuale | Amazon EC2 | Azure Virtual Machines | Compute Engine |
| Stocare de obiecte | Amazon S3 | Azure Blob Storage | Cloud Storage |
| Bază de date relațională gestionată | Amazon RDS | Azure SQL Database | Cloud SQL |
| Funcții serverless | AWS Lambda | Azure Functions | Cloud Run functions |
| Containere serverless | AWS Fargate | Azure Container Apps | Cloud Run |
| Kubernetes gestionat | Amazon EKS | Azure Kubernetes Service | Google Kubernetes Engine |
| PaaS pentru aplicații web | AWS Elastic Beanstalk | Azure App Service | App Engine |
Dacă înveți bine un furnizor, trecerea la altul înseamnă mai ales să înveți nume noi pentru concepte cunoscute.
Costurile: cum eviți o factură surpriză
Plata după consum e un avantaj, dar și o capcană: o resursă uitată pornită costă bani în fiecare oră. Câteva reguli de la prima zi:
- Setează un buget și alerte imediat după crearea contului. Toți furnizorii mari oferă bugete cu notificări pe email (AWS Budgets, Azure Cost Management, bugetele din Google Cloud Billing).
- Citește condițiile ofertei gratuite (free tier). Fiecare furnizor are oferte pentru conturi noi, dar limitele și condițiile diferă și se schimbă în timp. Verifică pagina oficială, nu un tutorial vechi.
- Atenție la transferul de date spre internet (egress): de regulă se plătește separat și e ușor de ignorat la estimare.
- Oprește sau șterge ce nu folosești: mașini virtuale, baze de date, adrese IP rezervate, volume de stocare rămase după ștergerea unui server.
- Etichetează resursele (tags) după proiect, ca să vezi în factură ce costă fiecare.
Securitate de bază
- Nu folosi contul principal (root) pentru munca zilnică. Creează utilizatori sau roluri cu permisiuni limitate și activează MFA peste tot.
- Least privilege: fiecare aplicație și fiecare persoană primește doar permisiunile de care are nevoie.
- Nu pune niciodată chei de acces în cod sau în Git. Folosește variabile de mediu, servicii de secrete sau, mai bine, roluri atașate direct resurselor.
- Verifică accesul public: multe incidente de securitate din cloud pornesc de la configurări greșite, de exemplu un bucket de stocare lăsat public din neatenție.
Primul tău proiect în cloud
Un drum progresiv, de la simplu la complex:
-
Un site static găzduit într-un serviciu de stocare de obiecte, eventual servit printr-un CDN. Cu AWS CLI, publicarea arată cam așa:
aws s3 mb s3://site-ul-meu-de-test-12345 aws s3 sync ./dist s3://site-ul-meu-de-test-12345 -
O funcție serverless care răspunde la un formular de contact sau expune un mic API.
-
O bază de date gestionată, conectată la funcție sau la o aplicație PaaS.
-
Infrastructure as Code: descrie totul în fișiere cu Terraform, OpenTofu, AWS CloudFormation sau Bicep, ca să poți recrea mediul oricând dintr-o singură comandă.
Dacă vrei o confirmare formală a cunoștințelor de bază, certificările de nivel introductiv sunt un bun prim obiectiv: AWS Certified Cloud Practitioner, Microsoft Azure Fundamentals (AZ-900) sau Google Cloud Digital Leader. Nu te angajează singure, dar îți structurează învățarea.
Pașii următori
- Creează un cont la un furnizor, setează imediat un buget cu alertă și publică un site static.
- Alege un furnizor și urmează roadmap-ul dedicat: AWS sau Azure.
- Învață cum se împachetează aplicațiile în containere și cum se automatizează livrarea lor cu roadmap-ul DevOps.
- Pentru o prezentare oficială a conceptelor, citește pagina AWS despre ce este cloud computing.