Platforma jako služba – PaaS – nasazujte aplikace jedním příkazem

Co je PaaS?

PaaS znamená platforma jako služba (Platform as a Service). Jedná se o cloudovou aplikační platformu, která je určena pro vývojáře aplikací, jimž poskytuje nástroje pro efektivní nasazování, provoz a správu aplikací v průběhu celého životního cyklu od nasazení, přes spuštění, škálování, poskytnutí služeb (databáze, message queue, apod.), až po zastavení a odstranění. Cloudové aplikační platformy jsou primárně určeny pro provoz cloudových aplikací, ale v současné době již době podporují také provoz tradičních webových a do určité úrovně také legacy aplikací. PaaS, které poskytuje Home at Cloud, je založeno na otevřeném řešení Cloud Foundry.

K čemu je PaaS dobré?

Hlavní činností, kterou se vývojář aplikací/software zabývá, je tvorba, testování a ladění kódu. V okamžiku, kdy je tvorba dokončena, následuje v životním cyklu aplikace nasazení a provoz. Nasazení a provoz aplikace v produkčním prostředí nicméně vyžaduje množství znalostí a dovedností nad rámec tvorby a údržby kódu a navíc zabere značné množství času. Vývojář musí zajistit potřebnou infrastrukturu, zajistit sestavení, nasazení, provoz, škálování a další aktivity správy aplikace v průběhu celého životního cyklu.

Platforma jako služba poskytuje prostředí a nástroje, které nasazení a provoz aplikace výrazně zjednodušují a usnadňují, přičemž podporují širokou škálu programovacích jazyků a frameworků (Java, Node.js, Go, Python, PHP, Ruby, .NET, …). Platforma jako služba Cloud Foundry, kterou Home at Cloud poskytuje tak umožňuje efektivně a rychle nasazovat aplikace bez potřeby interakce s infrastrukturou a jinými nízko úrovňovými artefakty. Z adresáře, kde se kód hotové aplikace nachází, vývojář jednoduše použije příkaz cf push a PaaS, respektive Cloud Foundry zajistí nasazení a spuštění aplikace, kterou lze následně ihned začít testovat/používat. Navíc poskytuje další užitečné funkce, jako je správa aplikace v průběhu životního cyklu, škálování, poskytování služeb (databáze, message queue, aj.). Vývojáři se tak mohou zaměřit na tvorbu kódu a maximálně omezit čas potřebný pro nasazování a provoz aplikací.

Základní koncepty PaaS

Orchestrace kontejnerů

Řešení PaaS, které jsme zvolili, tedy Cloud Foundry, je založeno na kontejnerech, v jejichž rámci jsou aplikace nasazovány a provozovány. Kontejner představuje základní organizační jednotku a současně jednotku izolace aplikací. Kontejner pro aplikaci kromě běhového prostředí zajišťuje také potřebné zdroje (CPU, RAM, disk). Veškerou orchestraci kontejnerů a životního cyklu aplikace, od vytvoření kontejneru, přes spuštění aplikace, škálování, až po odstranění, zajišťuje Cloud Foundry, takže vývojář nemusí spravovat infrastrukturu, ale může se soustředit užitečnější činnosti.

Základní workflow nasazení aplikace

Základní workflow nasazení aplikace v případě, že jsme přihlášeni do CF a v rámci lokálního stroje se nacházíme v umístění, kde je uložen kód aplikace, kterou chceme nasadit, zahrnuje pouze provedení příkazu cf push. Po provedení tohoto příkazu dojde v rámci lokálního prostředí ke shromáždění souborů aplikace a jejich odeslání do CF, v jehož rámci jsme přihlášeni. Platforma pak provede automatickou detekci balíčku sestavení (buildpack) (Java, Ruby, Node.js, atd.), který je potřeba pro sestavení obrazu aplikace (droplet), vytvoří obraz aplikace neboli droplet a uloží jej společně s metadaty dané aplikace. Následně platforma zajistí vytvoření a spuštění kontejneru, rozbalení obrazu aplikace v rámci daného kontejneru a spuštění aplikace. Defaultně je spuštěné aplikaci automaticky přiřazena route, jejímž prostřednictvím je aplikace dostupná z internetu. Výsledek procesu nasazení neboli příkazu cf push je reportován zpět klientovi.

Správa aplikace a podpůrných služeb v rámci PaaS

Manifest.yml, proměnné prostředí

Pro nastavení hodnot aplikace se používá soubor manifest.yml, který se musí nacházet v adresáři s kódem aplikace. V rámci tohoto souboru můžeme konfigurovat název aplikace, paměť, zda má být aplikaci automaticky přiřazena route, atd. Jakékoli parametry jsou aplikaci předávány pomocí proměnných prostředí.

Route

Route, jejímž prostřednictvím uživatelé a/nebo systémy s nasazenou aplikací komunikují, není po odstranění existující aplikace defaultně odstraněna. Důvodem je, že pokud bychom chtěli aplikaci znovu nasadit (například po provedení určitých změn) s identickou route, mohla by být mezitím přiřazena jiné aplikace a my bychom ji nemohli použít. Pokud tedy chceme route odstranit současně s aplikací, musíme explicitně uvést příslušný parametr.

Podpůrné služby

Jak již bylo uvedeno, jsou řešení typu PaaS primárně určena pro provoz cloudově nativních neboli dvanácti faktorových aplikací. Jedním z významných rozdílů oproti tradičním aplikacím je, že cloudové aplikace nikdy nejsou přímo napojeny na podpůrné služby (databáze, message queue, apod.), ale naopak s nimi komunikují s využitím údajů, které aplikace získá právě prostřednictvím proměnných prostředí. Architektura cloudových aplikací je obecně založena na paradigmatu mikroslužeb (microservices). V rámci každého jednotlivého kontejneru tak zpravidla běží pouze jediný atomický nezávislý proces a škálování je zajišťováno formou spuštění dalších kontejnerů. Jednorázové a/nebo opakovaně realizované úlohy jsou zpravidla zajišťovány formou pracovních aplikací (worker apps), které jsou spuštěny a realizovány v rámci samostatného kontejneru. Podpůrné služby tedy z této logiky neběží v rámci kontejneru, ale jsou poskytovány „zvenčí“.

V rámci platformy Cloud Foundry jsou podpůrné služby zajišťovány pomocí poskytovatelů služeb (service broker). V zásadě se může jednat o poskytovatele služeb, které zajišťuje provozovatel PaaS nebo vlastní poskytovatele služeb, které si zajišťuje vývojář vlastními silami nebo prostřednictvím externího poskytovatele služeb. V rámci Cloud Foundry je tudíž dostupné tržiště (marketplace) poskytovatelů služeb, k nimž lze získat přístup. Může se jednat například o služby datových úložišť/databází (PostgreSQL, MySQL, MariaDB, Redis, memcached, MongoDB), emailu (SMTP), monitoringu (NewRelic, Cedexis Radar), message queue (RabbitMQ), enginu pro fulltextové vyhledávání (ElasticSearch), aj. U každé služby lze zobrazit dostupné konfigurace (plans) a objednat si instanci určité konfigurace služby (u každé konfigurace je uvedeno, zda je zdarma či nikoli). Po vytvoření instance služby je pak možné připojit instanci služby k běžící aplikaci, která ji může začít využívat.

Závěrem

Pokud byste měli nějaké dotazy ohledně PaaS, můžete se na nás obrátit pomocí emailu nebo telefonu. Na blogu je také k dispozici podrobný návod, který Vás provede celým procesem nasazování aplikace v rámci PaaS. Pokud byste si chtěli PaaS bezplatně vyzkoušet, pošlete nám zprávu a my Vám zašleme instrukce pro vytvoření zkušebního PaaS.