Modul 11 — Cloud platformy

52. Úvod do cloud computingu a modely IaaS/PaaS/SaaS

Co znamená cloud computing, hlavní nasazovací modely a rozdíl mezi IaaS, PaaS a SaaS z pohledu toho, co spravuje poskytovatel a co zákazník.

Odhadovaná délka studia: 45 minut · Stav: nehotovo

Technologie: Cloud computing

Úvod a kontext

Doposud kurz probíral nástroje (Docker, Kubernetes, Terraform, Ansible),
které fungují nezávisle na tom, kde fyzicky infrastruktura běží — může
to být firemní datacentrum, nebo pronajatá kapacita u cloudového
poskytovatele. Tato lekce otevírá modul o cloudu: vysvětluje, co cloud
computing vlastně je, jaké má nasazovací modely a jaký je zásadní
rozdíl mezi IaaS, PaaS a SaaS — rozdíl, který určuje, o co
se musí starat vývojář/DevOps inženýr a o co se stará poskytovatel.

Teorie

Co je cloud computing

Cloud computing je poskytování výpočetních zdrojů (servery,
úložiště, sítě, databáze, ...) jako služby přes internet, na vyžádání
a s platbou podle skutečné spotřeby, místo nákupu a provozu vlastního
fyzického hardwaru. Klíčové vlastnosti, které odlišují cloud od
klasického pronájmu serveru:

  • Samoobslužnost na vyžádání — nový server nebo databázi lze
    vytvořit sám, během minut, bez nutnosti jednat s dodavatelem hardwaru.
  • Elasticita — kapacitu lze podle potřeby rychle navýšit i snížit
    (automaticky nebo ručně), a platí se jen za to, co se skutečně
    používá.
  • Sdílená infrastruktura (multi-tenancy) — fyzický hardware
    poskytovatele obsluhuje mnoho zákazníků současně, izolovaných od
    sebe virtualizací.
  • Měřená služba — přesné měření spotřeby (CPU-hodiny, GB přenesených
    dat, počet requestů) jako základ pro platbu.

Nasazovací modely

  • Veřejný cloud (public cloud) — infrastruktura sdílená mezi
    libovolnými zákazníky, provozovaná poskytovatelem (AWS, Azure, GCP).
    Nejnižší počáteční náklady, nejvyšší elasticita.
  • Privátní cloud (private cloud) — infrastruktura vyhrazená jedné
    organizaci, ať už provozovaná interně, nebo poskytovatelem, ale
    fyzicky/logicky izolovaná. Používá se kvůli přísným regulatorním nebo
    bezpečnostním požadavkům.
  • Hybridní cloud — kombinace veřejného a privátního cloudu (nebo
    on-premise datacentra), typicky s propojením sítí, kdy citlivá data
    zůstávají privátně a proměnlivá zátěž se odbavuje ve veřejném cloudu.
  • Multi-cloud — vědomé používání více veřejných cloudových
    poskytovatelů současně (podrobněji v lekci o multi-cloud strategiích
    v modulu pro seniorní úroveň).

Modely IaaS / PaaS / SaaS

Tři základní modely cloudových služeb se liší tím, kolik odpovědnosti
za správu zůstává na zákazníkovi a kolik přebírá poskytovatel
. Je
užitečné si to představit jako škálu:

                Spravuje ZÁKAZNÍK  ←──────────────────→  Spravuje POSKYTOVATEL

  On-premise:   aplikace, runtime, OS, virtualizace, servery, síť, datacentrum
  IaaS:         aplikace, runtime, OS         |  virtualizace, servery, síť, datacentrum
  PaaS:         aplikace                       |  runtime, OS, virtualizace, servery, síť, datacentrum
  SaaS:         (jen používání)                 |  aplikace, runtime, OS, virtualizace, servery, síť, datacentrum

IaaS (Infrastructure as a Service) — poskytovatel dává k dispozici
základní výpočetní zdroje: virtuální servery, úložiště, síť. Zákazník
si sám instaluje a spravuje operační systém, runtime, veškerý software
i aplikaci. Příklady: AWS EC2, Azure Virtual Machines, Google Compute
Engine. Nejvyšší kontrola a flexibilita, ale i nejvyšší provozní
zodpovědnost — patchování OS, zabezpečení, škálování si řeší zákazník
(často právě nástroji z tohoto kurzu — Terraform, Ansible, Docker).

PaaS (Platform as a Service) — poskytovatel spravuje operační
systém, runtime prostředí i infrastrukturu pod ním; zákazník jen
nahrává a spouští svůj aplikační kód. Příklady: AWS Elastic Beanstalk,
Heroku, Google App Engine, Azure App Service. Rychlejší vývoj a méně
provozní zátěže, ale méně kontroly nad prostředím (např. přesná verze
OS balíčků) a typicky vyšší náklady na jednotku výkonu než srovnatelný
IaaS.

SaaS (Software as a Service) — kompletní hotová aplikace dostupná
přes internet, zákazník ji jen používá (typicky přes prohlížeč),
nezajímá se vůbec o infrastrukturu, runtime ani o to, jak je aplikace
nasazená. Příklady: Gmail, Salesforce, Slack, GitHub jako služba. Z
pohledu DevOps inženýra je to spíš nástroj, který se v procesu používá
(např. GitHub jako SaaS pro hosting Git repozitářů a CI/CD), ne něco, co
se sám provozuje.

Kde v této škále leží Kubernetes jako služba

Praktický mezipřípad: spravovaný Kubernetes (AWS EKS, Azure AKS,
Google GKE) je vlastně PaaS na úrovni orchestrace kontejnerů —
poskytovatel spravuje řídicí rovinu clusteru (viz dřívější lekce o
architektuře Kubernetes), zákazník spravuje jen to, co do clusteru
nasazuje (Pody, Deploymenty, konfiguraci). To je typický příklad, jak
se hranice modelů v praxi prolínají — jedna platforma může být z
pohledu jedné vrstvy IaaS (uzly clusteru běžící na virtuálních
serverech) a z pohledu jiné vrstvy PaaS (samotná řídicí rovina
Kubernetes).

Praktický příklad

Konkrétní srovnání téhož úkolu — provozovat webovou aplikaci s
databází — ve třech modelech:

IaaS přístup (plná kontrola, plná zodpovědnost):

# zákazník sám vytváří, patchuje a spravuje vše
terraform apply           # vytvoří EC2 instanci a síť
ansible-playbook setup.yml # nainstaluje OS balíčky, Docker, aplikaci
# zákazník odpovídá i za bezpečnostní aktualizace OS, monitoring, zálohy

PaaS přístup (poskytovatel spravuje runtime):

# zákazník jen nahraje aplikační kód, platforma zajistí zbytek
git push heroku main
# Heroku samo zajistí OS, runtime prostředí, škálování instancí,
# load balancing; zákazník neřeší patche OS ani konfiguraci serveru

SaaS přístup (žádná infrastruktura, jen konfigurace v UI):

Zákazník si v cloudové službě (např. Salesforce) jen nastaví
formuláře a pravidla přes webové rozhraní — žádný kód, žádný server,
žádné nasazování v tradičním slova smyslu.

Shrnutí

Cloud computing poskytuje výpočetní zdroje na vyžádání, elasticky
a s platbou podle spotřeby, ve veřejném, privátním, hybridním nebo
multi-cloud nasazovacím modelu. IaaS, PaaS a SaaS se liší tím, kolik
vrstev (OS, runtime, infrastruktura, aplikace) spravuje zákazník a kolik
poskytovatel — IaaS dává nejvíc kontroly a zodpovědnosti zákazníkovi,
SaaS nejméně. Spravovaný Kubernetes je praktickým příkladem, jak se
tyto modely v reálných službách prolínají.

Kontrolní otázky

  1. Co konkrétně spravuje zákazník a co poskytovatel v modelu PaaS, ve
    srovnání s IaaS?
  2. Proč se hybridní cloud používá i přes svou vyšší komplexnost oproti
    čistě veřejnému cloudu?
  3. Je spravovaný Kubernetes (EKS/AKS/GKE) IaaS, PaaS, nebo SaaS? Zdůvodněte.
  4. Mini cvičení: zařaďte tři služby — vlastní virtuální server s ručně
    nainstalovaným PostgreSQL, Heroku Postgres jako spravovanou databázi,
    a Google Workspace (e-mail, dokumenty) — do modelů IaaS/PaaS/SaaS a
    zdůvodněte zařazení každé z nich.

Lekce na sebe nejsou zamčené — libovolnou lekci můžete otevřít i označit jako hotovou v jakémkoliv pořadí.