Máte rozmyšlený základní koncept vaší nové aplikace, definovanou cílovou skupinu a spoustu nápadů na funkce, které chcete uživatelům nabídnout. Ocitli jste se však před rozhodnutím, se kterým si nevíte rady: Vydat se cestou server, nebo serverless architektury? Které řešení je vhodné právě pro váš projekt a nabídne vám lepší poměr cena/výkon? Jaké faktory vzít v úvahu a na jaká úskalí si dát u obou variant pozor?
Pokud vám není jasné, v čem se od sebe server a serverless architektury odlišují a v čem spočívají jejich specifika, přečtěte si náš článek, ve kterém se dozvíte odpovědi na všechny důležité otázky. Vysvětlíme si základní rozdíly a podrobněji se zaměříme na výhody a nevýhody obou přístupů. A jako vždy vám rádi pomůžeme i prakticky: Obě možnosti ovládáme, takže si klidně váš projekt vezmeme na starost od A do Z!
Serverless architektura je model provozu aplikací nebo softwarových služeb využívající serverové infrastruktury třetích stran. Navzdory svému názvu se tato metoda neobejde zcela bez serverů, ale vás ani vaše vývojáře nemusejí vůbec zajímat – tyto starosti můžete přenechat poskytovateli cloudu (např. Amazon Web Services). Serverless přístup je maximálně oddělený od hardwarové složky (opakem by byla vlastní fyzická serverová infrastruktura). Typická je pro něj také pokročilá automatizace – nové webservery jsou generovány podle předem specifikovaného postupu tak, jak to vyžaduje momentální provoz (tzv. autoscaling).
V případě server architektury se naopak provozovatel aplikace do jisté míry na výběru a správě serverů podílí. První možností je investovat do vlastních fyzických serverů, což znamená hodně vysoké počáteční investice a průběžné náklady spojené s provozem a údržbou. Druhou, mnohem častější variantou je pronájem virtuálních serverů (opět např. přes AWS). Na rozdíl od serverless modelů, které jsou plně automatizované, se v tomto případě některé činnosti a provozní zásahy (aktualizace, opravy, škálování) provádí ručně. Vlastní servery nabízejí naprostou kontrolu nad hardwarovou složkou a daty, avšak za cenu spousty práce navíc. Pronájem virtuálních serverů již umožňuje částečnou automatizaci některých postupů (autoscaling), a to zejména díky pestré nabídce managed cloudových služeb provozovatelů jako AWS (mnoho z nich lze navíc při splnění podmínek získat zdarma, jak píšeme v našem článku o programu Free Tier).
Pojem serverless se v IT světě skloňuje čím dál častěji a firmy, které na tento model přecházejí, k tomu samozřejmě mají dobré důvody. Serverless architekturu si klienti spojují zejména s bezstarostným provozem, flexibilitou a v mnoha případech s nižšími náklady (neplatí to však neplatí univerzálně, viz cenové srovnání dále v článku). Podívejme se proto na některé výhody blíže.
Jednou z nejčastěji uváděných výhod serverless řešení je škálovatelnost. To znamená jednak možnost efektivně rozšiřovat aplikaci nebo službu o nové funkce spolu s tím, jak se bude vyvíjet vaše podnikání, a jednak škálování samotné serverové infrastruktury podle momentálního objemu požadavků (tzv. autoscaling). Serverless architektura je tak výbornou volbou například pro startupy, které zpočátku potřebují jen minimální výpočetní kapacitu a pronájem virtuálních serverů by se jim nevyplatil. Při rozšiřování svého softwaru se nemusejí na nic ohlížet – ať už se rozhodnou přidat jakékoli funkce nebo možnosti, potřebná serverová infrastruktura bude vždy k dispozici prakticky okamžitě. Stejně tak je serverless přístup vhodný pro dynamické společnosti a organizace, které potřebují rychle zavádět inovace a adaptovat svůj software podle měnících se požadavků uživatelů. Vývojáři se mohou soustředit pouze na kód a nové verze lze nasazovat během pár hodin namísto dnů či týdnů.
Serverless přístup vám uvolní ruce pro to, co je v podnikání skutečně důležité – a tím je především spokojenost zákazníků a vynikající uživatelský dojem. Díky tomu, že vaši vývojáři nebudou mít žádné starosti se serverovou infrastrukturou, se mohou plně zaměřit na UX a UI design. Uživatelské prostředí lze vylepšovat průběžně operativními zásahy do aplikace, kdykoli dostanete zpětnou vazbu s upozorněním na nefunkční prvky nebo jiné nedostatky. Automatické škálování také znamená vynikající dostupnost aplikace. Serverless architektura pružně reaguje na množství požadavků, takže se nemusíte bát náhlého zvýšení návštěvnosti a s ním souvisejících výpadků. Ke spokojenosti uživatelů může navíc přispět také nižší latence (odezva). Ta závisí na fyzické poloze serverů nebo CDN (Content Delivery Network), a nemusí být tedy nutně výhodou pouze serverless architektury. Pro většinu klientů je však v praxi mnohem výhodnější využít decentralizované infrastruktury některého z velkých poskytovatelů serverless služeb (AWS, Google Cloud), který má přístupové body po celém světě, takže si snadno poradí s požadavky z nejrůznějších míst.
Ačkoli to není univerzální pravidlo (viz podrobnější srovnání níže v článku), serverless technologie skutečně dokážou v mnoha případech výrazně snížit náklady na provoz aplikací. Úspory oproti fyzickým serverům mohou být až 90 % – odpadají investice do hardwarového vybavení, IT personálu, chlazení, údržby a oprav. Pronájem virtuálních serverů zase znamená paušální poplatky za kapacitu, kterou ale třeba aplikace kvůli nižší návštěvnosti z velké části nevyužije. Hlavně menší softwarová řešení s kolísajícím vytížením tak mohou využít modelu pay as you go nebo pay per use, který spočívá v platbách podle skutečně využité výpočetní kapacity. Někteří poskytovatelé serverless infrastruktur jsou schopni účtovat využitou dobu s přesností na stovky milisekund, takže skutečně nezaplatíte ani korunu navíc!
I přes rostoucí popularitu serverless řešení stále existuje početná skupina vlastníků firem, která se spoléhá na tradiční přístup založený na vlastních nebo pronajatých serverech. I tato volba má v mnoha případech své opodstatnění, proto bychom si měli přiblížit některé její výhody.
Pokud mezi vaše priority patří ochrana dat a maximální kontrola nad nimi, může vám u serverless řešení a pronájmu virtuálních serverů vadit sdílení prostoru se třetími stranami. Jediným způsobem, jak předejít veškerému přenosu dat mimo vaše prostředí, je vytvoření vlastní serverové infrastruktury. Pouze tehdy skutečně víte, kde jsou vaše data ukládána a jak přesně jsou zabezpečena (počet vrstev, šifrování atd.). Navíc můžete efektivně řídit přístup k datům i pro váš vlastní personál prostřednictvím rolí a oprávnění. Pokud se bojíte o bezpečí svých dat, je možné data v cloudu zašifrovat klíčem, díky čemuž cloud data nerozšifruje.
Zatímco z hlediska nasazení kódu je serverless přístup maximálně výhodný, v případě testování a odstraňování chyb naopak vedou servery. Serverless prostředí je obtížně replikovatelné, takže nelze příliš dobře předvídat chování kódu po nasazení. Komplikovanější je také debugging neboli odstraňování chyb, protože vývojáři „nevidí“ do backendových procesů a protože je aplikace rozdělena do mnoha menších funkcí. Naopak u vlastní serverové infrastruktury mají testeři neomezený přístup k backendu, a odhalování chyb je tak pro ně snazší.
U serverless architektury může občas docházet k poklesu výkonu v důsledku jevu, který se v angličtině označuje jako „cold start“ (doslova „start za studena“). Jedná se o situaci, kdy po určité době neaktivity musí platforma při prvním novém požadavku nejprve inicializovat interní výpočetní zdroje, což zpomalí její „rozběh“. Naproti tomu kód na vlastních či pronajatých serverech běží neustále, takže k tomuto jevu nedochází.
Ačkoli bývá serverless architektura často prezentována jako za všech okolností ekonomičtější model, zdaleka ne vždy tomu tak musí být. Úspora nákladů je sice jednou z hlavních výhod, které si zákazníci od tohoto přístupu slibují, avšak ne každý projekt vás vyjde v serverless provedení levněji.
Serverless přístup se rozhodně vyplatí u menších aplikací s menší návštěvností a hůře předvídatelným vytížením. Dejme tomu, že na trh uvedete novou aplikaci, která si své uživatele bude teprve postupně hledat. Není tedy příliš pravděpodobné, že by ji někdo používal 24/7. Pokud se rozhodnete pro serverless model, budete platit pouze za dobu, kdy vaši aplikaci skutečně někdo používá (pay as you go, pay per use). V případě pronájmu virtuálního serveru byste naproti tomu platili paušální poplatek i za dobu, kdy žádné požadavky nepřicházejí, a váš kód by tak vlastně běžel „naprázdno“.
Stejně tak se serverless vyplatí u softwaru, který je v provozu pouze v pravidelně se opakujících intervalech. Například podnikové a informační systémy jsou zaměstnanci používány téměř výhradně v pracovní době, a naopak minimálně nebo vůbec v nočních hodinách. Pokud se rozhodnete pro serverless technologii, zaplatíte pouze za skutečně využitou výpočetní kapacitu (když se například někdo ze zaměstnanců bude muset do systému výjimečně přihlásit i mimo pracovní dobu).
Existují ale i opačné případy, kdy je naopak ekonomičtější vsadit spíše na server architekturu. Určujícím faktorem je výkon (objem požadavků) – pokud požadovaný výkon překročí kritickou hranici, může být serverless řešení ve finále dražší než server (tento jev se označuje jako „cost at scale“). Dalším případem, kdy může být serverless nákladnější než server, jsou dlouho běžící procesy. Poskytovatelé serverless služeb si účtují poplatky za dobu, po kterou kód běží, což může u některých aplikací znamenat výrazné prodražení.
Vrtají vám hlavou nezodpovězené dotazy i po přečtení našeho článku? Nemáte stále úplně jasno v tom, zda se vám vyplatí víc server, nebo serverless architektura? Chtěli byste svůj další projekt napřed raději probrat s experty?
Požádejte nás o nezávaznou konzultaci a představte nám své požadavky! Rádi se s vaším projektem seznámíme a doporučíme vhodné řešení. A pokud se rozhodnete jít do vývoje s námi, provedeme vás celým procesem od návrhu až po hotový software na míru!