Pustit se do tvorby softwaru jakožto startup není zrovna jednoduché. Většinou máte značně omezený rozpočet, minimum zkušeností a málo času – zato však silnou konkurenci a vysoká očekávání. Vývoj aplikací pro startupy má zkrátka svá specifika, kterým by měl ten, kdo pro vás bude požadované řešení vyvíjet, dokonale rozumět. Jak ale takového partnera najít?
Není to tak dávno, co jsme v podobné pozici byli my sami, takže si ještě moc dobře pamatujeme, s jakými výzvami jsme se museli potýkat a jaké překážky překonat. Situaci většiny startupů známe velmi dobře takříkajíc „zevnitř“ – a díky tomu víme, jak vašemu podnikání dodat v samých začátcích potřebný impulz. Řešení má název: Cloud Native.
Snad v každé oblasti podnikání je nejtěžší začít a poté přežít prvních pár let – technologické startupy nejsou v tomto ohledu žádnou výjimkou. S jakými nástrahami se však potýkají nejčastěji? Jaká témata u nich rezonují? Jaké výzvy před ně staví současná doba?
Jedním z hlavních faktorů je bezpochyby rapidní technologický pokrok. Technologie se mění a vyvíjejí rychleji než kdy dřív, což vyžaduje neustálé přizpůsobování se novým trendům, nástrojům a platformám. Bez neustálých inovací je přežití v drsném konkurenčním prostředí pouhou fikcí. Mezi mantry současného IT prostředí patří především umělá inteligence, strojové učení, big data nebo třeba IoT.
Věčným bojem je pro startupy financování. Získat počáteční kapitál a investice je v prostředí čím dál větší konkurence stále těžší a těžší. V počáteční fázi podnikání je tedy kriticky důležité mít správně nastavené řízení cashflow a optimalizaci provozních výdajů.
Dále se startupy často potýkají s otázkou škálování byznysu. Pokud se začínající firma prosadí, bude se muset brzy zabývat tím, jak reagovat na skokový nárůst prodejů, objednávek nebo požadavků na webovou službu. Nutnost přizpůsobit se náhlému nárůstu poptávky se sice může zdát jako příjemná starost, ale v praktické rovině je potřeba najít technické řešení, jak toho dosáhnout.
Asi vás nepřekvapí, že naší odpovědí na všechny tyto problémy je právě vývoj aplikací v duchu Cloud Native. Technologicky zaměřeným startupům pomůže držet krok s nejmodernějšími IT trendy, výrazně jim sníží náklady na vývoj a provoz aplikací a díky vynikající škálovatelnosti je připraví na růst jejich podnikání.
Cloudové technologie se již dávno staly nedílnou součástí našich životů a je téměř jisté, že alespoň jedna z mobilních nebo webových aplikací, které doma nebo v práci dnes a denně používáte, nějakou cloudovou službu obsahuje. V čem se ale liší od klasických aplikací?
Hlavní rozdíl mezi cloudovými a klasickými aplikacemi spočívá v architektuře. Struktura Cloud Native aplikací je výrazně modulární, založená na mikroslužbách nebo kontejnerech. To znamená, že aplikace je rozdělená do menších, volně pospojovaných služeb, které lze nasazovat nezávisle na sobě a které vždy zajišťují jednu konkrétní funkci. Tyto modularizované služby jsou navíc často nabízeny velkými poskytovateli cloudů (AWS, Google Cloud, …), takže není potřeba vše programovat od nuly. Naproti tomu klasická architektura se označuje také jako monolit a je tvořena jednolitým kódem, do kterého jsou integrovány všechny komponenty a funkcionality.
Z toho vyplývá již zmíněný rozdíl ve škálovatelnosti a výkonu. Cloud Native aplikace jsou na dynamické škálování doslova stavěné a poradí si s obrovskými skoky např. v počtu požadavků během velmi krátké doby. Škálování lze navíc automatizovat, takže nasazování dalších instancí probíhá víceméně „samospádem“. Díky modulární architektuře jsou navíc tato řešení odolnější vůči výpadkům – nedostupnost jedné služby nenaruší dostupnost celku. Klasické aplikace je nutné škálovat manuálně, což v praxi znamená přidávání serverů. To je nesrovnatelně nákladnější, náročnější a mnohem méně efektivní než škálování virtuálních instancí v cloudu během pár vteřin až minut.
S předchozím bodem souvisí využití výpočetních zdrojů a provozní náklady. Kontejnery a cloudové služby nabízejí výrazně efektivnější využití IT technologií, protože se jejich alokace řídí momentálním vytížením. To se může promítnout i do nižších nákladů (model „pay-as-you-go“ – tedy plaťte pouze za to, co využijete). U většiny aplikací a webových služeb se množství požadavků v průběhu dne mění – typicky v noci je provoz nižší a přes den vyšší. Klasické aplikace tuto možnost nemají a často je nutné výpočetní infrastrukturu předimenzovat, aby zvládla maximální zatížení ve špičce.
Odlišný průběh má i samotný proces vývoje. Cloud Native přístup je založený na DevOps kultuře (úzká spolupráce týmů zapojených do vývoje a provozu) a agilním vývoji (časté iterace, průběžné zapracovávání změn a zpětné vazby – někdy se tyto krátké cykly označují jako spurty). Při vývoji klasických aplikací jsou jednotlivé role a odpovědnosti více oddělené, což znamená pomalejší a méně integrované procesy. Vývojové cykly jsou delší a uvolňování průběžných verzí je méně časté.
V úvodu článku jsme nastínili tři největší problémy současných startupů a způsoby, jak může Cloud Native přístup pomoct. Pojďme si je nyní rozebrat podrobněji.
Vzhledem k závratnému tempu technologického pokroku musejí být dnešní firmy neustále ve střehu, pokud jde o zavádění inovací a přizpůsobování se IT trendům. Pro startupy to platí dvojnásob, protože právě vysoká adaptabilita může být jejich největší konkurenční výhodou.
Jsme přesvědčeni, že Cloud Native je k tomu tou nejlepší cestou. Aplikace vyvinutá speciálně pro cloudové prostředí je přímo stvořená k tomu, aby dokázala velice rychle reagovat na příchod nových technologií. Díky modulární struktuře založené na vzájemně nezávislých cloudových službách lze kdykoli jednoduše přidávat nové funkce pouhým napojením požadovaného modulu. Není tím pádem potřeba „překopávat“ celý kód, omezovat dostupnost aplikace ani těmito změnami zbytečně zatěžovat IT tým. Poskytovatelé cloudů dnes nabízejí téměř nepřeberné množství služeb, ze kterých si můžete vysněnou aplikaci poskládat jako stavebnici a kdykoli v budoucnu ji libovolně rozšiřovat či měnit. Cloud Native řešení je jednoduše připravené na budoucnost a další technologický pokrok.
Druhým palčivým bodem, se kterým může Cloud Native startupům pomoct, jsou finance. Jako konkrétní příklad úspory nákladů můžeme uvést program Free Tier od Amazon Web Services (AWS). Ten je určený novým zákazníkům a nabízí jim možnost vyzkoušet si bezplatně vybrané cloudové služby AWS. Tyto služby jsou rozděleny do tří kategorií:
Speciálně pro startupy nabízí AWS programy AWS Activate Portfolio a AWS Activate Founders. Žadatelé, kteří splní podmínky, mohou od Amazonu dostat kredity na využívání služeb ve výši až 100 000 dolarů.
S Cloud Native však můžete výrazně ušetřit i jinde, například na vývoji MVP (minimal viable product) nebo PoC (proof of concept). Jak jsme již zmínili výše, řada AWS služeb je prvních 12 měsíců úplně zdarma (EC2, S3, Lambda, RDS, …), a kromě toho můžete využít i dalších nástrojů AWS pro ještě účinnější optimalizaci nákladů (AWS Cost Explorer, AWS Trusted Advisor) a efektivní alokaci výpočetní infrastruktury (CloudWatch) tak, abyste zbytečně neplatili nic navíc. Pokud toto vše zkombinujete se serverless přístupem, můžete velice rychle získat jednoduchou apku se základními funkcemi, okamžitě ji poslat na trh a postupně rozšiřovat podle odezvy uživatelů.
Nedocenitelnou výhodou Cloud Native řešení pro startupy je flexibilita a škálovatelnost. Strmý růst podnikání je něco, co si jistě každý majitel firmy přeje, ale zároveň je to něco, na co je potřeba se po technické stránce perfektně připravit.
Aplikace navržená a vyvinutá jako Cloud Native od samého počátku počítá s možností škálovat výpočetní kapacitu směrem nahoru i dolů, což znamená stabilní provoz za nejnižší možnou cenu. Škálovat lze jak okamžitě během dne (například zpravodajské portály zaznamenávají nejvíce požadavků ráno, když lidé vstávají a čtou si zprávy, a naopak v nočních hodinách je návštěvnost nejnižší), tak i dlouhodobě, kdy vaše firma expanduje a spolu s tím roste trvale i celkový počet návštěv a požadavků.
Automatické škálování se například u AWS týká většiny služeb, takže při provozu Cloud Native skutečně platíte jen za to, co využijete (ať už to jsou databáze, servery, kontejnery nebo load balancery). Růst vašeho byznysu tak již nebude limitován IT infrastrukturou – s Cloud Native bude vaše apka doslova nafukovací.
Abyste měli lepší představu o tom, jak konkrétně může vypadat Cloud Native řešení pro startupy, podívejme se na jednu z našich případových studií. Slovenská reklamní společnost Engerio si u nás objednala vývoj vysoce sofistikovaného systému nativní inzerce, který zobrazuje relevantní reklamy na předních slovenských a zahraničních mediálních platformách. Požadavky na výkon tohoto systému byly mimořádně náročné – v průměru musí zvládnout asi 20 000 návštěv (100 000 požadavků) za minutu, pracovat s pokročilými technologiemi scrapingu dat a pružně reagovat na neustále se měnící internetový obsah.
Nativní reklama spočívá v zobrazování marketingových sdělení v nenápadných widgetech přímo mezi články zpravodajských portálů. Obsah inzerce je navíc přizpůsobený na míru konkrétnímu uživateli na základě jeho preferencí a tématu samotného článku, čímž se odlišuje od klasické „vlezlé“ a nežádoucí reklamy. Systém Engerio propojuje inzerenty (mezi něž patří i obří korporace jako ČSOB, O2 nebo Kaufland) s populárními mediálními portály (Pravda.sk, Zoznam.sk, Topky.sk a další) a umožňuje jim dostat na své weby nové potenciální klienty.
Celé řešení je od A do Z postaveno na nejmodernějších technologiích a koncipováno plně jako Cloud Native. Při vývoji jsme museli čelit mnohým výzvám, které byly dány jednak samotnou komplexností systému (mnoho vrstev, pokročilé funkce získávání a třídění dat, přizpůsobení pro různá zařízení, …), a jednak nutností snížit provozní náklady na úroveň, která zajistí dostatečnou rentabilitu projektu.
Architekturu celého řešení jsme tedy rozdělili do osmi modulů, které fungují nezávisle na sobě a snižují míru komplexity. Značnou pozornost jsme museli věnovat metodě získávání a ukládání článků. Pro tento účel jsme vytvořili speciální skript, který anonymně sleduje zobrazení článků na webu a ukládá jejich URL adresy na našem serveru. Pokud článek v databázi ještě není a splňuje nastavené podmínky, dojde k jeho scrapingu a uložení do databáze. Jelikož některé weby scraping blokují, bylo nutné najít způsob, jak tuto obranu obejít.
Samostatnou kapitolou bylo zpracování widgetů pro publishery. Klient od nás požadoval, aby webová aplikace nabízela rozsáhlé možnosti customizace widgetů (hlavně jejich zobrazení). Důležité bylo rovněž minimalizovat dobu stažení, aby widget nezpomaloval načítání stránky jako takové. Dobu odezvy se nám nakonec podařilo stlačit na 100 ms. Reklamy zobrazované ve widgetech se získávají z propojené výdejní služby SmartAd.
Mezi klíčovými požadavky figurovalo také škálování, které jsme nastavili tak, aby u každé z používaných služeb (databáze, fronty, webservery, …) vždy běžely alespoň dvě instance (každá v jiném datovém centru). To zajišťuje vysokou dostupnost a plynulý provoz i v případě výpadku jednoho z datových center. Na nárůst nebo pokles vytížení systém reaguje škálováním instancí směrem nahoru a dolů. Touto cestou se nám podařilo snížit provozní náklady při nízkém provozu. Za zmínku stojí také funkce podmíněného načítání widgetů – je-li widget umístěn ve spodní části stránky, nemusí se načíst hned při vstupu na stránku, ale teprve poté, co k němu uživatel „doscrolluje“.
Přínos všech technických a provozních optimalizací, kterých jsme při vývoji využili, lze nejvýstižněji doložit na jednom jediném čísle: Vypočítali jsme, že díky Cloud Native přístupu jsme se dostali na méně než 2,5 % výkonu, který by byl potřeba v případě, že bychom se optimalizací vůbec nezabývali.
Když si člověk čte o výhodách a lákavých možnostech Cloud Native vývoje, je těžké se pro takové řešení okamžitě nenadchnout. Pokud máte i vy zájem o flexibilní software připravený na budoucnost, který poroste spolu s vaším byznysem a bude se přizpůsobovat novým výzvám, není nic jednoduššího než vyplnit náš kontaktní formulář a domluvit si nezávaznou konzultaci! Podíváme se, jak konkrétně může Cloud Native pomoct ve vaší situaci, a navrhneme optimální postup. Svěřte svou aplikaci do rukou certifikovaných odborníků na cloudové služby a nakopněte své podnikání!