Úvod do PaaS služeb Azure a Bluemix
Jak už jsem psal v minulém článku, žijeme v době PaaS a SaaS služeb. Protože jsme si už popsali současné trendy ve vývoji software v této oblasti, dalším krokem bude představení deploymentu a fungování vašich aplikací. V dnešním článku se zaměříme zejména na serverové aplikace.
V dřívějších dobách probíhal deployment aplikace tak, že jste měli vlastní fyzický nebo virtuální server, na kterém jste se starali o všechno od operačního systému přes podpůrné knihovny až po samotný software. Podle počtu aplikací jste možná měli i pro každý projekt vlastní server a o všechny jste se museli neustále starat.
Ale to už je minulost, nebo by alespoň měla být. Moderní přístup tzv. kontejnerizace má silný vliv na to, jak v dnešní době probíhá deploy a správa aplikací. Představte si, že se u své aplikace staráte pouze o psaní kódu a starosti s operačním systémem, knihovnami, bezpečností i rozšiřováním má někdo jiný. A o tom je PaaS. Nabízí totiž základně nastavitelný runtime pro váš programovací jazyk v cloudu, kam pouze nahrajete svůj kód a o nic jiného se už nemusíte starat.
Během práce v této oblasti jsem se setkal se třemi velkými hráči:
- IBM Bluemix
- Microsoft Azure
- Heroku
Do detailu popíšu první dva, protože nabízí více funkcí i mimo PaaS a osobně s nimi mám více zkušeností. I přesto si ale myslím, že vám Heroku může skvěle vyhovovat, zvlášť pokud jste menší tým.
Runtimes
Azure i Bluemix podporují jak nejpopulárnější jazyky jako PHP, Node.js, Javu, Python, tak i statické webové stránky. Protože je Bluemix v podstatě cloudfoundry, nabízí podporu nejrůznějším buildpackům, takže vám tam poběží skoro cokoliv. Výborné je, že tam dokonce můžete použít i buildpacky Heroku!
Při užívání Node.js aplikací jsme nenarazili na žádné problémy. V Bluemixu vše fungovalo ihned po spuštění bez složitého nastavování. Dokonce můžete vytvořit aplikaci, která poběží na pozadí a nebude poslouchat na žádném portu.
Naopak při spuštění PHP Symfony aplikací jsme zaznamenali problémy. V Azure nás trápil slabý výkon a povolování přístupu k souborům. U Bluemixu pak nefungoval PHP-Buildpack, u kterého jsme museli poupravit strukturu aplikace a konfiguraci buildpacku.
Ukládání souborů
Když vyvíjíte cloudovou aplikaci, musíte počítat s tím, že v ní nebudete mít trvalý file systém. Azure i Bluemix však mají pro tento problém řešení. U Bluemixu jsme zkusili ObjectStorage a u Azure AzureStorage. Oba nástroje pracují podobně a oba jsou dobré. Osobně bych stejně preferoval Amazon S3, ale oba zmíněné by vám měly bohatě stačit.
Autoscaling
Na obou službách (hlavně na Bluemixu) mám nejradši, jak jednoduše jde manuálně upravovat velikost paměti nebo počet instancí. Pokud se ale budeme bavit o autoscalingu, tak tam jasně vede Azure a Bluemix se s ním nedá srovnávat. Oba umožňují nastavit škálování v předem danou dobu nebo dle aktuálního využití paměti. Azure jde ještě dále a nabízí úpravu dle využití CPU (throughput) a MessageQueues.
My se ale nesetkáváme s velkými výkyvy a proto tyto nástroje využíváme jen málo.
Deployment
Deployment probíhá pomocí napojení na GIT a nástrojů CLI. Bluemix ještě nabízí možnost využití jejich nástroje Continuous Delivery Pipeline, který je užitečný a jednoduchý na pochopení. Pokud vám už ale běží vlastní platforma pro průběžnou integraci, tak ho nevyužijete.
Webový portál
Uživatelská prostředí obou služeb nejde popsat jiným slovem než „hrozná“. Jsou pomalá a těžko se v nich orientuje. Nejhorší z nich je pro mě Azure, kde je za trest cokoliv hledat. Bluemix je rychlejší a jednodušší, i tak ale často neintuitivní.
Command Line Tools
Všechny tři platformy mají vlastní CLI nástroje ve kterých můžete připravovat a spravovat vaše aplikace. Chvíli zabere, než si zvyknete na syntax, ale brzy je budete milovat! Skutečně jde o nejjednodušší a nejrychlejší způsob ovládání vašich aplikací. Během pár sekund zvládnete spouštět aplikace, škálovat je nebo si prohlížet jejich záznamy.
Další služby
Azure i Bluemix zvládnou mnohem víc než jen PaaS. Azure je specialistou na cloudové služby jako celek. U obou ale můžete využít FileStorages, Database deployments, Action Schedulers, Machine learning toolsets a ještě mnohem víc. Azure také nabízí více datacenter, CDN serverů a celkově disponuje rozsáhlejší infrastrukturou. Tím, že spouštíme aplikace pouze v Evropské unii, tak to ale pro nás není hlavním faktorem.
Ceny
Obě služby stojí skoro stejně. Hlavním rozdílem je ovšem to, že Bluemix nenabízí zdarma žádné developerské instance. Bezplatně vám může běžet pouze jedna aplikace s využitím 256 MB RAM. Při více projektech už ale musíte zaplatit a to i za nejjednodušší instance. Věřím, že pro spoustu společností to může být hlavní faktor při jejich rozhodování.