Architektonické návrhy v minulosti byly často monolitické a postrádaly správu, škálovatelnost a agilitu. V této situaci by podniky musely nasadit celý program na osamocený aplikační server fungující na osamoceném počítači.
Někdy může být dokonce celá databáze nainstalována na stejném systému. I po provedení tohoto všeho by problém jednoduše způsobil vypnutí programu a přerušení všech činností.
Výsledkem byl nekonečný cyklus kódování, nasazování a odstraňování problémů, které snižovaly produktivitu podniků.
Když se však architektonické nápady změnily, průmysl zaznamenal dramatický otřes, který dal vzniknout dvěma hlavním architekturám známým jako bezserverové a mikroslužby. Oba mají silné pouzdro pro použití v škálovatelných a agilních systémech.
Oba upřednostňují bezpečnost, ale používají různé přístupy. Majitelé podniků se pravidelně ptají, zda jsou nebo nejsou stejné.
Který z nich byste si měli vybrat, pokud se liší, abyste získali ještě úžasnější výhody? Tento článek nám to pomůže zjistit.
Co jsou mikroslužby?
Architektonický návrhový vzor známý jako mikroslužby rozděluje větší aplikaci na několik menších, tedy název. Tomu zcela odporuje monolitický design, ve kterém je veškerá funkčnost obsažena v jediném celku.
K lepšímu pochopení použijeme příklad aplikace pro online nakupování. Po nalezení požadovaného zboží je spotřebitel přidá do nákupního košíku a odešle objednávku.
Aplikační programovací rozhraní (API) propojují několik služeb, které fungují nezávisle na sobě (API). Mikroslužby poskytují funkce, jako je nákupní košík, proces pokladny a produkt.
Implementace mikroslužeb může být provedena různými způsoby. Každá mikroslužba má základní komponenty, které potřebuje k samostatnému fungování, včetně vlastní databáze, knihoven a šablon.
V podstatě dodržuje principy SOA (Service Oriented Architecture), které uživateli umožňují vytvářet nové aplikace a spouštět různé aplikace nezávisle.
DevOps rozděluje všechny funkce aplikace do menších aplikací nebo služeb, které mohou fungovat samy o sobě a přitom stále fungovat jako aplikace jako celek. Před nasazením je každá z těchto aplikací mikroslužeb vytvořena a funkčně testována.
Co je to model bez serveru?
V paradigmatu bez serveru je za správu serveru odpovědný externí poskytovatel cloudových služeb. Vývojáři se prostě musí starat o kód; poskytovatel služby se postará o bezpečnostní aktualizace, vyvažování zatížení, správa kapacity, škálovatelnost, protokolování a monitorování.
Celou aplikaci lze provozovat na bezserverové architektuře nebo pouze na její podmnožině. Jakmile je kód aplikace spuštěn, server mu přidělí prostředky a uvolní je, jakmile se aplikace již nepoužívá, takže je vyžadován pouze tehdy, když je aplikace aktivně používána.
Vlastníkovi aplikace jsou účtovány poplatky pouze po dobu, kdy je aplikace používána. Společnosti poskytující cloudové služby poskytují Backend-as-a-Service (BaaS) a Function-as-a-Service (FaaS).
BaaS nabízí předpřipravené funkce, takže se vývojář musí soustředit pouze na front-end. Používá se zřídka kvůli omezené přizpůsobitelnosti a ovládání, které nabízí.
FaaS je však flexibilnější, protože vývojáři mohou vytvářet přední i zadní konce a přitom stále spouštět aplikaci na vzdáleném serveru. Pomocí FaaS lze vytvořit aplikaci jako kolekci funkcí.
Každá funkce má svůj účel a iniciační faktor. Funkce nemůže fungovat nepřetržitě; je obvykle dočasná a je ukončena, jakmile již není potřeba.
Bezserverové vs Microservices
Decentralizovaný program, který byl rozdělen do několika menších komponent, také známých jako služby, se nazývá architektura mikroslužeb. Všichni jsou zodpovědní za to, že jeden konkrétní úkol bude proveden k dokonalosti.
Mikroslužby jsou velmi specializované a umí bezchybně jen jednu věc. Každá architektura má jinou strategii pro řešení problémů. S mikroslužbami jsou k dispozici dlouhodobé opravy.
Každá služba může fungovat nepřetržitě a 24/7. Je to vynikající dlouhodobá odpověď pro týmy, které škálují.
Na druhé straně se funkce aplikací bez serveru zaměřují na zlepšení efektivity kódu. Funkce netrvají tak dlouho jako mikroslužby. Začnou fungovat pouze v reakci na určitý vstup nebo situaci.
Protože architektura bez serveru je řízena událostmi, funkce se nespustí, pokud neexistuje spouštěč. Program nevyužívá více CPU, než je nutné, a týmy mohou ušetřit peníze za výpočetní a úložný prostor díky této efektivní metodologii vývoje.
Kromě těchto základních variant se oba designy liší i jinými způsoby.
Při rozhodování, zda použít mikroslužby nebo bezserverové výpočty, se zaměřme na několik klíčových úvah.
Funkce
Funkce jsou přechodné a spouštějí se pouze tehdy, když je vyžaduje určitá situace. Jsou kompaktnější a štíhlejší.
Mikroslužba může spravovat několik propojených operací najednou, zatímco funkce je výhradně zodpovědná za jednu aktivitu.
Jedna mikroslužba může provádět několik funkcí.
Runtime
Funkce, které jsou bez serveru, mají krátkou dobu běhu. Jak moc může určitá funkce běžet, se liší v závislosti na dodavateli.
Například funkce může běžet na AWS Lambda po dobu 15 minut. To je způsobeno skutečností, že funkce jsou ze své podstaty krátké procedury, které by neměly spotřebovávat mnoho paměti RAM.
Specifikace dodavatele pro běhové prostředí, úložiště a RAM nepředstavují omezení pro mikroslužby. Z tohoto důvodu jsou vhodnější pro složité, dlouhodobé činnosti, které vyžadují ukládání a zpracování masivních objemů dat.
IT operace
Vytvoření týmových zdrojů je pro mikroslužby nezbytné. Úkoly monitorování, nasazení, podpory a údržby provádí interní nebo externí tým. Tým je plně odpovědný za podporu architektury, manipulaci s jejími výpočty a zajištění její bezpečnosti.
Naproti tomu architektura bez serveru závisí na dodavateli třetí strany. Podnik nemusí vytvářet, chránit a spravovat svůj vlastní serverový prostor. Veškeré interní funkce má na starosti poskytovatel cloudu.
Tato strategie může snížit náklady na projekt a zároveň se vyhnout poplatkům za nábor a registraci, poplatkům za úložiště a nákupům hardwaru.
Stát
Počáteční náklady na vytvoření mikroslužeb jsou vyšší. K dokončení projektu je zapotřebí několik týmů a vytvoření vztahů mezi různými složkami vyžaduje čas a pečlivou přípravu.
Vytvoření a údržba mikroslužeb je nákladnější v důsledku jejich závislosti na interních zdrojích a pomoci.
Tato strategie má však své výhody. Podnik se nespoléhá na plány zvenčí a nehrozí nebezpečí uzamčení dodavatele.
Schopnost snížit náklady je primární konkurenční výhodou bezserverové architektury. Podniky, které využívají bezserverovou architekturu, získávají ze sdružování zdrojů.
Protože sdílejí své servery mezi několika zákazníky, mohou poskytovatelé třetích stran nabízet nižší ceny předplatného.
Navíc ušetříte na nákladech na lidské zdroje, protože nepotřebujete najímat odborníky na hardware a servery.
Kdy byste měli používat Microservices vs. Serverless Architecture
Mikroslužby jsou nejlepší volbou, pokud je vaší nejvyšší prioritou důvěrnost
Služby architektury bez serveru nemusí být ideální volbou, pokud si vyměňujete informace. Aplikace může mít vážné problémy.
Formou spravovaného nebo sdíleného hostingu je cloud hosting.
Budete tedy moci pozorovat, že nejste jedinou osobou, která používá zdroje třetí strany. Protože se tato okolnost týká „více nájemců“ na rozdíl od „jednoho nájemce“, vaše data nejsou v tomto případě zcela chráněna.
Informace a data patřící jinému tenantovi jsou viditelné a přístupné jednomu tenantovi. Navíc je nepravděpodobné, že byste neustále spotřebovávali zdroje od jednoho dodavatele. Může jich být velké množství.
Schopnost monitorovat a konfigurovat celý proces tak bude se změnami dodavatele obtížnější.
Pokud chcete, aby vaše dědictví přetrvalo, využijte mikroslužby.
Služby bezserverové architektury nebudou fungovat, pokud infrastruktura starého systému musí být prozatím na místě.
Rychlost a cena jsou dva aspekty architektury bez serveru, které fungují dobře, ale nejsou jediné.
Ačkoli je bezserverový systém poměrně zrnitý, není kompatibilní s rozsáhlou existující kódovou základnou kvůli této granularitě.
Jinými slovy, jakmile máte starší systém, je to příliš velký skok. Proto je vhodnější zvolit strategii Microservices.
Pokud jste začínající, volba bez serveru je správná cesta.
Nejlepší volbou pro bezserverovou architekturu je, pokud jste zakladatel startupu. Bezserverová architektura vám poskytne nejrychlejší a nejrychlejší čas uvedení na trh, bez ohledu na váš cíl – reagovat na časově omezený trh nebo okamžitě získat podíl na trhu na začátku jakéhokoli trendu.
Navíc to bude cenově dostupná varianta pro podnikatele. Server, který se nepoužívá, vás nebude nic stát. Při nedostatku spolehlivých statistik používání často potřebujete aplikace, které jsou extrémně přizpůsobivé.
Pokud začínáte od nuly, měli byste používat bezserverové a mikroslužby
Nový začátek vám umožní získat výhody bezserverových poskytovatelů architektury rychleji, ale ne hned. Při navrhování zcela nové architektury použijte Microservices, ale počítejte s přechodem na Serverless později.
Architektura bez serveru vs. Microservices: Klady a zápory
Bohužel žádná technologie není dokonalá; kdyby tomu tak bylo, svět by už byl spokojeným, vysoce rozvinutým místem.
Každá technologie zahrnuje výhody, které můžete využít pro svůj projekt, i nevýhody, se kterými musíte být připraveni žít. Podívejme se nyní na oba.
Výhody mikroslužeb
- Jednodušší škálování: Vzhledem k tomu, že služby jsou oddělené, je možné přidávat nebo odstraňovat funkce a škálovat věci s nejmenším množstvím práce. Na rozdíl od monolitických programů nemusíte brát v úvahu kompletní základnu kódu.
- Lepší odolnost softwaru: Vzhledem k tomu, že mikroslužby jsou na sobě méně závislé, selhání jednoho nesníží celou aplikaci. To je užitečné zejména při hustém provozu.
- Různé platformy: Kromě jazyků můžete propojit mikroslužby umístěné na několika platformách. Část aplikace může být také hostována normálně a bez serveru.
- Autonomie týmu: Více malých týmů může spolupracovat a pracovat na projektu současně
- Vícejazyčné: API umožňuje propojit mikroslužby napsané v několika jazycích. Je to užitečná výhoda, protože různé technologie účinněji splňují různé požadavky na funkci. Používání příliš mnoha jazyků však může mít za následek potíže s propojením všeho, a proto je lepší mít věci jednoduché.
- Prostor pro experimenty: Navzdory velkému množství dat jsou naše předpoklady někdy nesprávné a mikroslužby vám umožňují testovat vše. Vzhledem k tomu, že aplikace s mikroslužbami jsou neuvěřitelně přizpůsobivé, jak jsme již dříve diskutovali, není třeba utrácet tisíce dolarů pouze za přidání nové funkce, kterou možná budete chtít později odstranit.
Nevýhody mikroslužeb
- Problémy se zabezpečením: Musíte pečlivě sledovat svá rozhraní API, protože jsou často nesprávně nastavena, a proto jsou náchylná.
- Problémy s připojením: Musíte pečlivě navrhnout, jak propojit všechny mikroslužby a přesunout data z jednoho místa na druhé.
- Ladění je náročné, protože musíte prozkoumat protokoly každé mikroslužby.
- Obtížné testování: před vyhodnocením připojení v globálním měřítku musíte otestovat každou mikroslužbu samostatně.
Výhody serveru bez serveru
- Snadné škálování: server se automaticky přizpůsobí nahoru nebo dolů.
- Velmi rychlé nasazení: můžete rychle navrhnout nové funkce a otestovat své nápady.
- Správa serveru není vaší starostí: můžete se soustředit na aplikaci spíše než na server.
- Pay-as-you-go: Platíte pouze za kapacitu serveru, kterou používáte; není třeba platit za neaktivní dobu.
Nevýhody bez serveru
- Obtížné testování: I když nemůžete plně reprodukovat prostředí bez serveru, je obtížné pochopit, jak bude kód fungovat po jeho nasazení.
- Nízká flexibilita: Mnoho jednotlivců má problém se zavázat k jedinému poskytovateli prostředí bez serveru na delší dobu.
- Studený start: Zůstane v mezipaměti, ale pouze krátce, jakmile je každá funkce dokončena. Funkce bude muset znovu odpovědět na žádost o vyvolání, což chvíli trvá, pokud ji znovu spustíte a není uložena v mezipaměti.
Proč investovat do čističky vzduchu?
Bezserverové a mikroslužby jsou architektonicky příbuzné technologie, které využívají různé techniky. Bezserverové i mikroslužby kladou důraz na škálovatelnost, přizpůsobivost, nákladovou efektivitu a jednoduchost přidávání nových funkcí na rozdíl od monolitického designu.
Protože každá služba funguje jako nezávislá aplikace, je hlavním cílem mikroslužeb dlouhodobá škálovatelnost.
V závislosti na rozsahu produktů a prioritách organizace lze volit mezi dvěma strategiemi.
Microservices vám poskytne mikroslužby bez serveru pro dlouhodobá řešení, pokud máte v úmyslu vybudovat velkou platformu, která potřebuje neustálý růst.
Bezserverová architektura je fantastická volba, pokud chcete nasadit rychle a levně.
Napsat komentář