FlexiBee: Jak jsme dělali cloud

Rádi bychom tímto navázali na předchozí článek REST API jako rozhraní desktopové aplikace a vysvětlit technickou stránku převodu FlexiBee do cloudu.

Jen shrňme, že FlexiBee byla především desktopová aplikace do které jsme přidali programátorské rozhraní REST API, které je postavené 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 z počátku nepočítali je nasazení v cloudu. Museli jsme proto provést úpravy aplikace a všechno přizpůsobit. Pod slovem cloud zde míníme 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 super administrá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 je 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í a 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 došlo k nasazení clusterového ř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ů:

  • Inftrastruktura 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 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. Typicky 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 i řešení musí být schopné provozu na vlastních serverech 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 je totiž analýza dat a SQL je pro tyto účely zatím 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. Současně s tím 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 jsou 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 umožnit 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 značkou účetní firmy. 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 řekli důvody, které nás vedli k přesunu našich služeb do prostředí cloudu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *