Înțelegerea modelelor de servicii cloud este fundamentală pentru orice inginer Azure, deoarece determină exact ce responsabilități îți asumă compania versus cele ale providerului. Alegerea corectă între IaaS, PaaS, SaaS și Serverless influențează direct costurile, viteza de implementare și complexitatea operațională a proiectelor. În practică, nu alegem doar tehnologii, ci definim nivelul de control și automatizare dorit, ceea ce este esențial pentru scalabilitate și mentenanță pe termen lung.
Concepte cheie
- IaaS (Infrastructure as a Service): Oferi virtualizare de bază (servere, rețea, stocare) și gestionezi tu sistemul de operare, middleware-ul și aplicațiile, similar cu un server fizic, dar la cerere.
- PaaS (Platform as a Service): Platforma gestionează infrastructura și sistemul de operare; tu te concentrezi exclusiv pe dezvoltarea, testarea și deploy-ul codului aplicației tale.
- SaaS (Software as a Service): Consumi aplicații gata făcute prin browser (ex: Office 365, Gmail); nu ai acces la infrastructură sau cod, doar la funcționalitate.
- Serverless: Execută cod în răspuns la evenimente fără a gestiona niciun server; plătești doar pentru timpul de execuție al funcției, nu pentru timp de inactivitate.
- Responsabilități împărțite: Modelul cloud se bazează pe o diviziune clară: providerul asigură siguranța cloud-ului, iar tu ești responsabil pentru siguranța în cloud (date, acces, configurare).
- Scalabilitate automată: Capacitatea platformei de a adăuga sau elimina resurse automat în funcție de trafic, reducând nevoia de planificare manuală a capacității.
Exemplu practic
Să comparăm deploy-ul unei aplicații web simple. În IaaS (Azure VM), trebuie să provisionezi un VM Windows/Linux, să instalezi IIS/Nginx, să configurezi firewall-ul, să patch-uiești OS-ul și apoi să copiezi fișierele aplicației. În PaaS (Azure App Service), te autentifici în portal, încarci arhiva ZIP a aplicației sau conectezi un repo Git, iar Azure gestionează runtime-ul și scaling-ul. În Serverless (Azure Functions), scrii o funcție simplă în Python/C# care procesează o cerere HTTP. Nu există servere vizibile; Azure invocă funcția doar când vine o cerere.
// Configurație simplificată pentru Azure Function trigger
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req"
}
]
}
Greșeli frecvente
- Supra-provisionarea în IaaS: Menținerea serverelor goale 24/7 pentru trafic mic, ceea ce duce la costuri inutile comparativ cu Serverless.
- Ignorarea securității în PaaS: Credearea că platforma ascunde totul; totuși, datele sensibile și accesul la baza de date rămân responsabilitatea ta.
- Vendor Lock-in excesiv: Construirea arhitecturii strict pe servicii proprietare Azure fără un strat de abstractizare, făcând migrarea ulterioară foarte dificilă.
- Confuzia între Serverless și Microservices: Serverless este un model de execuție, nu o arhitectură completă; poți avea microservices care rulează pe containerize (PaaS) sau pe serverless.
Întrebări de interviu
Care este diferența principală dintre PaaS și Serverless? La PaaS, gestionezi runtime-ul și configurațiile mediului (deși nu serverele), plătești pentru resurse rezervate. La Serverless, nu gestionezi deloc mediul și plătești per apel/execuție, fiind ideal pentru sarcini sporadice.
Când ai alege IaaS în detrimentul PaaS? Când ai nevoie de control total asupra sistemului de operare, ai licențe legacy care necesită configurări specifice de kernel sau ai cerințe stricte de compliance care interzic multi-tenancy-ul standard.
Exercițiu
Alocă 45 de minute pentru următoarea sarcină:
- Creează un cont gratuit Azure (dacă nu ai deja).
- Deploy-uiește o aplicație "Hello World" simplă folosind Azure App Service (PaaS). Folosește CLI-ul Azure (
az webapp up) sau portalul. - Analizează costurile estimate pentru această resursă comparativ cu un Azure Function care face același lucru.
- Notează câte pași ai fost nevoit să faci pentru a configura mediul de execuție (runtime, versiune PHP/Node/etc.) și cum s-ar fi schimbat procesul dacă ai fi ales o VM (IaaS).