Jak jsme budovali cloud

FlexiBee

Sesterský server Podnikatel.cz spustil ve spolupráci se společností FlexiBee online účetní službu Účtujte.cz. V třídílném miniseriálu – případové studii nám Petr Ferschmann prozradí něco o pozadí tvorby této služby, o jejím fungování a o tom, proč nakonec služba běží na cloudových technologiích.

Prohlášení o neutralitě: Autor článku pracuje ve společnosti FlexiBee Systems (dříve WinStrom) na pozici výkonného ředitele. Článek popisuje produkty této společnosti.

Jak už asi víte, spustili jsme ve spolupráci se serverem Podnikatel.cz novou službu internetového účetnictví Účtujte s Podnikatel.cz, zkráceně Účtujte.cz. Jedná se o adaptaci internetového ekonomického systému FlexiBee do jednoduché webové služby se základní verzí zdarma. Rádi bychom tímto navázali na předchozí článek REST API jako rozhraní desktopové aplikace” a vysvětlili technickou stránku věci.

Jen shrňme, že FlexiBee byla především desktopová aplikace, do které jsme přidali RESTful programátorské rozhraní (API), založené na protokolu HTTP. A od tohoto rozhraní byl už jenom kousek ke kompletně internetové službě, která je postavena právě na tomto systému.

Na první pohled se může zdát, že jsme vzali desktopovou aplikaci a v podstatě ji znovu napsali do formy internetové služby. Pravdou však je, že už od začátku vývoje jsme s touto postupnou transformací počítali a použití REST API pro programátorský přístup je toho důkazem.

S cloudem jsme původně nepočítali

S čím jsme ovšem zpočátku nepočítali, bylo nasazení v cloudu. Museli jsme proto provést úpravy aplikace a všechno přizpůsobit. Pod slovem cloud zde míním toto:

  • škálovatelnost a elasticita – aplikace je škálovatelná podle aktuálních potřeb uživatelů a zatížení a může k tomu využívat i veřejné/privátní cloudy.

  • více nájemců (multitenancy) – více uživatelů sdílí jednu aplikaci bez toho, že by se navzájem ovlivňovali. V našem případě to také znamená, že sdílí aplikační servery a klienti mohou být superadministrá­toři, ale pouze na svém “písečku”.

  • pay as you go – uživatel platí podle svých aktuálních potřeb. Aplikaci lze pronajmout a každý měsíc své požadavky měnit.

  • aktualizovatelnost – aplikace je aktualizovaná poskytovatelem (tedy námi). V našem případě to také znamená, že musíme být schopni současně provozovat pro různé zákazníky různé verze současně (tzv. rolling upgrade).

  • přístup přes internet – ať už specializovanou aplikací, mobilním nebo webovým přístupem.

Proč to vlastně děláme?

Než budeme moci pokračovat, musíme si zodpovědět na základní otázku: Proč dělat cloud?

Hlavním důvodem úpravy architektury bylo snížení nákladů na provoz jednoho klienta. Důležitým aspektem je, že máme mnoho pasivních klientů, kteří aplikaci právě teď nevyužívají. Buď se připojují jednou za několik dní, nebo prostě aplikaci zatím testují a plné nasazení se teprve připravuje. Vzhledem k tomu, že testování je zdarma a může trvat několik měsíců, těchto klientů je opravdu hodně (cca 30 %).

Ušetření jsme dosáhli těmito změnami:

  • dynamické škálování dle potřeby s tím, že lze umožnit přepad zvýšené zátěže do tzv. veřejného cloudu, kdy platíme za spotřebovaný čas. Naše aplikace jsou používány převážně v pracovní době a pak v termínech jednotlivých přiznání. Tím jsme schopni ušetřit teoreticky i více než 50 % nákladů na procesorový čas.

  • vícenájemnost – dříve bylo obvyklé, že jsme pro každého klienta provedli instalaci jeho aplikačního a databázového serveru. Vzhledem k tomu, že mnoho uživatelů aplikaci právě nepoužívalo, měli jsme velké paměťové zatížení.

  • levnější servery – s nasazením cloudu máme clusterové řešení, které nám umožňuje používat výrazně levnější hardware. Když se rozbije, nevadí, zbytek clusteru převezme jeho funkci.

Preferujte platformu

Při zvažování cloudu narazíte na několik pojmů:

  • Infrastruktura jako služba (IaaS) – poskytovatel cloudu nabízí pronájem virtuálních serverů na úrovni operačního systému. Nemusíte se starat o hardwarovou stránku, ale pouze o softwarové vybavení.

  • Platforma jako služba (PaaS) – poskytovatel nabízí řešení formou nástroje ve kterém provozujete své aplikace. Aplikaci jednoduše napíšete a poskytovatel řeší její provoz, instalaci a také dimenzování serverů. Obvykle je řešena na cloudové infrastruktuře (IaaS).

  • Software jako služba (SaaS) – poskytovatel software zajišťuje provoz a uživatelé aplikaci pouze používáte.

Při zvažování cloudu obecně platí, že bychom měli preferovat software (SaaS) před platformou (PaaS) a platformu před infrastrukturou (IaaS).

V našem případě chceme být poskytovatel software jako služby, musíme tedy volit mezi platformou a infrastrukturou. V případě jazyka Java či Python bychom mohli použít například AppEngine od společnosti Google. Použití platformy by nám vyřešilo mnoho problémů, jako je vyvažování zátěže, spouštění nových serverů či jejich monitoring.

Bohužel v našem případě jsme AppEngine nemohli použít, protože neposkytuje otevřenou databázi PostgreSQL, na které je náš software velmi závislý.

Současně jsme také potřebovali garantovat, že veškerá infrastruktura neopustí jurisdikci České, respektive Slovenské republiky. Především kvůli legislativním omezením, kde typickým příkladem je slovenské omezení exportu personálních (mzdových) dat do zahraničí. A pokud server běží v zahraničí, vždy se jedná o export. A nesmíme zapomenout, že řešení musí být schopné provozu i na vlastních serverech u klienta pro případ, že cloud z různých důvodů používat nemůže.

Z těchto důvodů jsme “platformu” použít nemohli. Pokud se situace v budoucnu změní, budeme o tom znovu uvažovat.

Přepsat to nemůžeme

Po přečtení předchozích odstavců vás jistě napadlo, zda by nebylo lepší aplikaci přepsat do jiného databázového systému, který by byl lépe připravený pro cloud. Dnes jsou tyto systémy souhrnně označovány jako NoSQL.

Problémem přepisu by byla nejen vysoká cena přepisu (cca 30 % celkové investice na vývoj systému), ale i malé zkušenosti ve světě s těmito databázemi pro informační systémy. Základem informačního systému takového druhu je totiž analýza dat, a SQL je pro tyto účely zatím, dle našich poznatků, nejlepší.

Privátní cloud

Celé řešení jsme tedy postavili na několika interních serverech. Pro základní fixní alokaci zdrojů (nutné minimum) nám cena vycházela lépe. My jsme již servery měli a jen jsme je transformovali z původního hostingu s mnoha instalacemi na jeden cluster pro všechny klienty.

Službu jsme rozdělili na několik rolí pro malé virtuální servery, které se specializují pouze na jeden úkol (např. aplikační server) a které je možné velmi snadno a rychle spouštět a tím zvyšovat výkon celého systému.

V tuto chvíli máme založeny tyto role:

  • databázový server primární

  • databázový server záložní

  • aplikační server

  • webový server

  • vyvažování zátěže (loadbalancer)

  • konfigurační server

Pokud by výkon našich serverů nestačil (typicky přes den), dojde ke spuštění potřebných rolí ve veřejném cloudu (v našem případě český VirtualMaster).

Vlastní design především

Dnes je čím dál častější, že účetní firmy nabízejí své služby online přes internet. Pro tyto případy jsme potřebovali zajistit, aby bylo možné ekonomický systém vložit jako součást prezentace účetní firmy a udělat ono “magické” přihlašovací tlačítko přímo součástí webové prezentace.

Proto jsme vytvořili nástroj, který slouží jako vstupní brána do cloudové služby. Tento nástroj je možné zasadit do stránek účetní firmy a tím zpřístupnit aplikaci klientům pod vlastní značkou. Příkladem této aplikace je právě služba Účtujte.cz, která je modrá, přestože FlexiBee má barvu zelenou. Integrace je dělána sadou PHP skriptů (interně jim říkáme PHP Proxy) a je možné pomocí ní kompletně ovlivňovat design aplikace.

Závěr

Dnes jsme si ukázali důvody, které nás vedly k přesunu našich služeb do prostředí cloudu. Příště si povíme, jaké úpravy aplikace jsme dělali, aby ji bylo možné provozovat jako webovou aplikaci. Konečně v posledním, třetím díle se podíváme, které nástroje používáme pro provoz a konfiguraci cloudu.

Absolvent FAV ZČU, obor Softwarové inženýrství. V současné době je výkonný ředitel společnosti FlexiBee Systems.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 19

Přehled komentářů

Radek Kavan Hezke reseni
faha Re: Hezke reseni
NoMercy VMware
generál Eric Cartman Lee Re: VMware
Palo Re: Jak jsme budovali cloud
Petr Ferschmann Re: Jak jsme budovali cloud
Palo Re: Jak jsme budovali cloud
Petr Ferschmann Re: Jak jsme budovali cloud
sid Re: Jak jsme budovali cloud
Lukáš Burkoň Re: Jak jsme budovali cloud
Petr Ferschmann Re: Jak jsme budovali cloud
brk Re: Jak jsme budovali cloud
100% Lenin Re: Jak jsme budovali cloud
Astapov Re: Jak jsme budovali cloud
LV Kam se tohle pise?
backup Re: Kam se tohle pise?
Petr Ferschmann Re: Kam se tohle pise?
wwworkoholik Private verzus public cloud
bauglir Opravdu cloud?
Zdroj: https://www.zdrojak.cz/?p=3511