Jak jsme budovali cloud

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.
Nálepky:
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.
Libi se mi vase reseni, dobra prace.
Gratuluji, Plzen jede ;-)
My jsme pouzili reseni VMwaru. Nemuzeme si stezovat. To neni zadne Hyper-V nebo jina omezujici technologie :)
V čem je Hyper-V omezující? Nepolemizuji, jen se ptám.
A v com spociva „cloudovitost“ tohto riesenia? To ze ste to umiestnili do virtualnych strojov predsa este neznamena ze je to v cloude, alebo ano? Lebo potom vsetky vacsie institucie maju cloudove riesenia (lebo to bezia vo virtualoch).
Nejak my uslo kde akoze ten cloud je?
Velkou změnou oproti „umístit do virtuálních strojů“ je změna architektury aplikace tak, aby byl možný princip „multitenant“. U google také nemáte pro každého klienta vyhrazený server.
Na první pohled se může zdát, že tento problém je pouze v oblasti zastaralých „účetnictví“. Pokud se tedy podíváme např. na typický eshop, zjistíme, že se instalace skládá z programu (např. PHP skripty) a databáze. PHP skripty jsou na disku, aby bylo možné udělat úpravy pro konkrétního klienta. Naštěstí apache dělá to, že zabírá zdroje pouze pro vyřízení aktuálních HTTP požadavků. Nicméně musíte zajistit replikaci databáze mezi mnoho serverů a také i replikaci těch PHP skriptů.
Když chcete tento způsob provozovat jako službu (SaaS) a při tom být schopen obsloužit tisíce eshopů, musíte všechno automatizovat, mít zajištěnou redundantnost a dostatečný výkon, musíte umět celé řešení zaktualizovat na novou verzi a spostu dalších problémů.
Dovolím si přeformulovat Vaši otázku: kde je hranice mezi hostingem a cloudem? My ji vnímáme právě v dynamickém škálování výkonu (elasticita, my přepadáme do veřejných cloudů) a vícenájemnosti (multitenancy).
V tomto díle píšeme proč to vůbec dělat a co nám to přinese. Příště si povíme jak jsme upravovali architekturu té aplikace a v posledním díle jak se o ty „virtuální stroje“ staráme.
Petr Ferschmann
Vdaka za odpoved, ja sa viac zaoberam Javou a tam je to trochu narocnejsie ale vidim ze mame spolocne otazky.
V akej korelacii je „multitenant“ s cloudom? Musi byt aplikacia „multitenant“ aby mohla byt v cloude?
Elasticita je dalsi zaujimavy pojem z cloud buzzword slovnika. Ked mam dostatok zeleza a podla zataze a potreby tam pustam a migrujem virtualne stroje je to cloud?
Ak sa na to pozrieme z pohladu cloudu tak v podstate kazdy slusny hosting je IaaS alebo ma taky program ktory sa da ako IaaS vylozit (niekedy dokonca az na level PaaS).
Potom sa mi cloud scvrkava iba do NoSQL ktora sa tak akosi cloudovsky skaluje.
Zaujima ma to aj z toho pohladu ze pridem do firmy ktora ma zaujem o cloud (napr. banky) a ja im zacnem rozpravat, to musite mat HW, virtualne stroje a podla zataze spustat aby bola „elasticita“, a multitenant aha ale vy to bezite iba pre seba tak potom …. CO? Nemozte is do cloudu alebo v podstate uz cloud mate?
Dobrý den,
jen dodám, že FlexiBee je také napsané v Javě :-)
Cloud bych definoval jako přístup. Já mohu konzumovat cloud (mám pronajatý virtuální server od Amazon Web Services), ale nemusím jej nabízet dále jako cloud – např. tam pustím svůj jeden eshop v PHP.
A naopak mohu službu provozovat na svém železe, ale dále ji poskytovat jako cloud (např. na něm provozovat SaaS).
Petr
Podla vasej definicie sa da za cloud oznacit hocijake riesenie na baze aplikacneho serveru
Zajímalo by mě, proč jste budovali vlastní cluster a nespolehli se pouze na veřejný Cloud?
Poskytovatelů IaaS je u nás více – krom zmíněných VirtualMaster, třeba i T-Systems nebo Cloudee.
Bojíte se o data / dostupnost služby?
Osobně mi přijde komplikovanější a dražší budovat architekturu aplikace, která bude sedět na vlastním clusteru a „přepad“ bude pouštět do veřejného Cloudu, než aplikaci rovnou posadit pouze do veřejného Cloudu.
Dobrý den,
vzhledem k tomu, že jsme nemohli použít PaaS, moc bychom neušetřili. IaaS se chová jako „běžný“ server. Proto jsme museli upravit aplikaci tak, aby bez problému zvládala desítky serverů.
Zajímavé by samozřejmě byly další navazující služby, které nabízí třeba Amazon jako je Load balancer, CloudFront, Simple Email Service. Nicméně Amazon je pro nás daleko. Součástí systému je totiž specializovaná aplikace, která je citlivá na ping, zvlášť když se uživateli přidá přetížená WiFi – pak je ping i 250 ms a to je moc. V Čechách tak ušetříme 70ms.
Tyto navazující služby zatím nikdo v ČR neprovozuje. Takže se cloud pro nás degraduje na dynamické servery. A pro naše servery potřebujeme nějaké minimum a ty je levnější provozovat u sebe (viz např. http://www.lupa.cz/clanky/cloud-je-predrazena-hracka/ . My jsme došli k podobnému závěru).
Veřejný cloud je tedy pro nás v těchto případech:
– nabízí platformu (PaaS), kterou můžeme použít.
– má navazující služby jako je LoadBalancer, CloudFront apod.
– potřebujeme dočasně zvednout výkon (např. při testování nové verze, plánované odstávce serverů, apod.)
– potřebujeme vytěžovat špičky.
Snad jsem tedy odpověděl dostatečně.
Petr Ferschmann
IMHO, prostě móda. Od určité doby si začal kdejaký bezvýznamný web říkat portál. Čím se tak výrazně liší např. Abclinuxu.cz od Root.cz, že je jeho nejen současným vlastníkem nazýván portálem a to včetně dalších webů stejného vlastníka? Nic proti těmto webům, to byl jen příklad.
Dnes je tím správným slovem velmi populární cloud. „Máš data v luftu, máš to v cloudu.“ Ne že by to dřív bylo výrazně jinak, ale tohle zní zatím dobře, minimálně pro nezasvěceného. Jedno slůvko navíc a hned to na cílovou skupinu působí technologicky velmi vyspěle.
Je velice zajímavé, že spousta postsovětských frikulínů, tedy byznysmenů dneška – již prezentuje oblačná řešení.
Říkají, že dneska je in mít data v облаках (oblacích). Vtip je ten, že jenom všichni kecají ve stylu PR.
Ano máte pravdu. Dneska je in mít data v klódu :D.
Početl jsem spoustu místních pojednání na toto téma a mohu to shrnout asi takto – dejte nám data = outsorc – my se vám o ně postaráme.
Jenže ftip je v tem, že v Rusku se vám nikdo o nic nepostará. Hrabat jak slépky, to ano. Ale že by museli snášet vajíčka? Nedej V.I.L. pracovat.
Tfuj tajbl. Moderní společnost a totální úpadek. Každej je managér, podnikatel a hodně z těch co znám nedělají žádné hodnoty.
Už i to IT se nám ku.r.ví.
Howgh.
Každej je managér, podnikatel a hodně z těch co znám nedělají žádné hodnoty.
Presne tak, ja som z toho tiez obcas znechuteny, ze v IT mame vela ludi, ktori nechcu vytvarat hodnoty, ale iba sa nabalovat… … casto krat na hodnotach, ktore vytvorili ini….
Ze je to uzivatelsky neprijemne, hnusne jak cesta do prace a preplacane nesouvisejicimi informacemi mam napsat sem, anebo je k tomu potreba nejake cloudove reseni?
no, prosel jsem si to demo a take se v tom moc neorientuji. Asi by musel clovek dostat na zacatku mensi skolenicko. Chtel jsem zadat par kontaktu pro jiz existujici firmu, ale asi musi byt skutecne clovek minimalne Bc.
Dobrý den,
mohl byste mi napsat na sebe kontakt na fers (uzenáč) uctujte.cz? Zajímalo by mne jak jste postupoval.
Snažili jsem se udělat aplikaci maximálně jednoduchou a to zvlášť v oblastech, které jsou velmi složité – např.
– zjistíme sami legislativu (daňová evidence, s.r.o. apod.)
– sami zjistíme zda je firma plátcem a také načteme všechny povinné údaje pro fakturaci
– automatické našeptávání firem
Samozřejmě problém je, že aplikace je kompletní účetnictví a tak mohou některé účetní věci uživatele zmást.
A proto případné uživatele, kteří s tím mají problémy snažíme kontaktovat, abychom aplikaci maximálně vyladili.
Petr Ferschmann
Zaujimalo by ma ako sa zmeni priemerny cas vykonania referencneho use case-u, ked aplikacia ide v privatnom cloude a ked prepadne do public cloudu?
Ocakaval by som, ze cas sa zhorsi alebo sa mylim?
Ahoj Petře,
musím se přidat k ostatním, pokud to, co prezentuješ je cloud, pak je tu s námi od doby prvního hostingu, který nabízel vše, co popisuješ v sekci „S cloudem jsme původně nepočítali“, každá kdo nabídl hosting s Mambem/Joomlou/Wordpressem dle Tvého popisu už nabízel cloud a to dokonce ve formě SaaS, jenom typ aplikace (a tedy i dat) se změnil.
Pokud je cloudem to, že neprodáváte web aplikace na stroje zákazníků, ale prodáváte je flexibilně jako Vámi hostovanou službu, tak takové články tu mohli vycházet před deseti lety… ledasjaký freemail je potom cloudem… Chybí mi potom pointa, přínos.
Cloud je v Tvém případě buzzword, buď prostě hostuješ klientům aplikaci, kterou sem tam použijí a v tom případě clouduje ledaskdo… Nebo nabídneš firmám opravdovou kancelář v oblacích a v tom případě se budeš muset porovnávat s Googlem nebo MS (takovýto hnusný marketingový „komplexní řešení“).
Broňa