Přejít k navigační liště

Zdroják » Různé » Jak jsme budovali cloud

Jak jsme budovali cloud

Články Různé

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.

Komentáře

Subscribe
Upozornit na
guest
19 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
Radek Kavan

Libi se mi vase reseni, dobra prace.

faha

Gratuluji, Plzen jede ;-)

NoMercy

My jsme pouzili reseni VMwaru. Nemuzeme si stezovat. To neni zadne Hyper-V nebo jina omezujici technologie :)

generál Eric Cartman Lee

V čem je Hyper-V omezující? Nepolemizuji, jen se ptám.

Palo

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?

Palo

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?

sid

Podla vasej definicie sa da za cloud oznacit hocijake riesenie na baze aplikacneho serveru

Lukáš Burkoň

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.

brk

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.

100% Lenin

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.

Astapov

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….

LV

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?

backup

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.

wwworkoholik

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?

bauglir

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

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.