Přeskočit na hlavní obsah

Ekonomika serverless řešení: využití skutečného obchodního potenciálu.

Serverless architektura a infrastruktura se stala mocným nástrojem pro organizace, které usilují o škálovatelnost, snížení provozní režie a efektivní alokaci zdrojů. Společnost Amazon Web Services (AWS), lídr v oblasti cloudových technologií, nabízí robustní serverless služby, které se ukázaly jako transformační pro řadu odvětví, zejména pro e-commerce. Nicméně názor, že serverless je drahá alternativa, vyvolává v poslední době u některých organizací obavy.

V tomto článku se zabýváme ekonomikou serverless služeb AWS, zkoumáme potenciální faktory, které stojí za domnělou vysokou cenou, a osvětlujeme, jak mohou organizace efektivně optimalizovat své serverless workloady s ohledem na nákladovou efektivitu.


Demystifikace serverless nákladů: objektivní důvody a mylné představy.

Důvodů, proč některé organizace vnímají své serverless workloady na AWS jako nákladné, může být několik, a to jak na základě objektivních faktů, tak na základě nesprávných představ.

Objektivní důvody:.

  1. Vysoký objem provozu: vysoký objem požadavků může mít za následek značné náklady. Při účinné správě je však serverless pay-per-use model obecně nákladově efektivnější než udržování vlastních serverů pro špičkové zatížení, které navíc vyžadují odhad kapacit dopředu a jejichž limity jsou pevně dány, tudíž jsou zdrojem trvalých fixních nákladů bez přímého vztahu k aktuálním příjmům společnosti.

  2. Složitá workflow: složité neoptimalizované systémy a procesy zahrnující více funkcí, služeb a přenosů dat mohou zvýšit náklady.

  3. Neefektivní kód: výkon a efektivita jsou kritické. Dlouhá doba provádění nebo zbytečné využívání paměti zvyšují náklady.

Nepřesné představy:

  1. Nepochopení celkových nákladů na vlastnictví (TCO): náklady na vlastnictví jsou pouze částí příběhu. Je třeba vzít v úvahu snížené náklady na údržbu serverů, infrastrukturu a zaměstnance, které serverless architektura přináší.

  2. Špatná architektonická rozhodnutí: pokusy o přímý přechod stávajících aplikací na serverless bez jejich přepracování pro paradigma serverless mohou vést k neefektivitě a vysokým nákladům.

  3. Nadměrné rezervy: nadměrné rezervování zdrojů vede k vysokým nákladům.

  4. Zanedbávání studeného startu: aplikace, které nejsou optimalizovány pro studené starty, mohou vést k vyšší latenci a vyšším nákladům.

  5. Zanedbání nákladů na přenos dat: náklady na přenos dat, zejména při přenosu dat z AWS, se mohou nasčítat.

  6. Nedostatečné sledování a optimalizace nákladů: průběžné monitorování a optimalizace jsou pro nákladově efektivní serverless provoz zásadní.


Pochopení nákladů serverless řešení: klíčové metriky

Sledování technických metrik souvisejících s náklady v serverless architektuře je zásadní pro zajištění její efektivity. Prozkoumejme některé kritické ukazatele:

  1. Náklady na vykonání funkce: odráží náklady na každé vyvolání vaší serverless funkce.

  2. Využití paměti: ovlivňuje náklady, protože společnost AWS účtuje podle přidělené paměti.

  3. Čas potřebný k vykonání: čím déle funkce běží, tím vyšší jsou náklady.

  4. Nadměrná míra paralelního zpracování: může vést ke zvýšení nákladů a potenciálnímu throttlingu.

  5. Nevyužité zdroje: nečinné prostředky znamenají zbytečně vynaložené prostředky.

  6. Míra selhání: náklady na neúspěšná (chybová) provedení se v průběhu času sčítají.

  7. Časy studeného startu: doba inicializace pro první volání funkce nebo po období nečinnosti může zvýšit náklady.

  8. Náklady na datové přenosy: často přehlížené, ale tvoří nedílnou součást celkových nákladů.

Sledování a optimalizace těchto ukazatelů vyžaduje průběžnou strategii, která zahrnuje nástroje, jako je AWS CloudWatch, AWS X-Ray, atp. pro sledování, debugging a včasné upozornění.

Představme si dva různé scénáře - první neoptimalizovaný a vnímaný jako nákladný a druhý s pečlivě průběžně optimalizovanou architekturou.

Scénář 1 - neoptimalizovaná serverless architektura:

  • Náklady na provedení funkce: 0,0002 USD
  • Využití paměti: 70%
  • Doba provádění: 800 ms
  • Využití paralelníh běhu: 800
  • Nečinné zdroje: 30%
  • Míra chybovosti: 5%
  • Časy studeného startu: 800 ms
  • Náklady na přenos dat: 0,15 USD/GB

Tyto hodnoty můžeme dosadit do našeho vzorce pro Serverless Efficiency Index (SEI):

SEI = α (1 / Cost_per_Function_Execution) + β Memory_Utilization + γ (1 / Execution_Time) + δ (1 / Concurrency_Usage) - ε Idle_Resources - ζ Error_Rates - η Cold_Start_Times - θ Data_Transfer_Costs

SEI = 0,2 (1 / 0,0002) + 0,15 70 + 0,15 (1 / 800) + 0,1 (1 / 800) - 0,1 30 - 0,1 5 - 0,1 800 - 0,1 0,15

Neoptimalizované skóre SEI ≈ 3557

Scénář 2 - optimalizovaná serverless architektura:

  • Náklady na provedení funkce: 0,0001 USD
  • Využití paměti: 85 %
  • Doba provádění: 400 ms
  • Využití paralelního běhu: 500
  • Nečinné prostředky: 15%
  • Míra chybovosti: 1%
  • Časy studeného startu: 400 ms
  • Náklady na přenos dat: 0,08 USD/GB

Nyní tyto hodnoty dosadíme do našeho vzorce SEI:

SEI = 0,2 (1 / 0,0001) + 0,15 85 + 0,15 (1 / 400) + 0,1 (1 / 500) - 0,1 15 - 0,1 1 - 0,1 400 - 0,1 0,08

Optimalizované skóre SEI ≈ 13032

V tomto příkladu má optimalizované serverless řešení vyšší skóre SEI, což svědčí o lepší efektivitě. Jak je vidět, různá zlepšení ve využití paměti, době provádění, nákladech na provedení funkce, efektivnější využití paralelního zpracování, nečinných zdrojů, míry chybovosti, době studeného startu a nákladech na přenos dat mohou vést k podstatnému zvýšení efektivity serverless řešení, která je odměněna  nižšími průměrnými náklady na transakci a redukovanou výší celkových nákladů (v tomto případě potenciálně desítky procent).

Nezapomeňte prosím, že se jedná o zjednodušený model a reálné situace mohou vyžadovat složitější posouzení, ale slouží jako srovnávací nástroj na vysoké úrovni.

V tabulce níže ilustrujeme obchodní dopady serverless řešení. Lze obecně konstatovat, že čím méně je zátěž infrastruktury předvídatelná a zároveň čím vyšší je počet obchodních transakcí, které musí systém zpracovat, tím výrazněji se serverless architektura ukazuje jako vítězné řešení.

Faktory  Monolitická architektura Privátní infrastruktura + Kubernetes Veřejný cloud + Serverless
Náklady na transakci Vysoké - Fixní náklady na infrastrukturu znamenají, že náklady na jednu transakci zůstávají vysoké, zejména v obdobích nízké poptávky. Nejvyšší - Kontejnerizace potenciálně snižuje některé náklady na infrastrukturu, ale Kubernetes s sebou přináš značné dodatečné režijní náklady na správu a orchestraci u fixní privátní infrastruktury, která vylučuje pay-per-use. Nejnižší - Cenový model "Pay-per-use" zajišťuje, že se náklady škálují s poptávkou, což vede k nízkým nákladům na transakci zejména v obdobích nízké poptávky.
Připravenost na kolísání poptávky Nízká - Monolitické architektury se potýkají s vysokou variabilitou poptávky. Škálování může být pomalé a nákladné a během období nízké poptávky je velká část rezervované kapacity promarněna. Dobrá - Kubernetes dokáže automaticky škálovat aplikace na základě poptávky, ale infrastrukturu je stále třeba rezervovat a spravovat. Náklady mohou být v obdobích nízké poptávky vyšší kvůli nevyužitým zdrojům. Výborná - Serverless si výborně poradí s kolísající poptávkou, automaticky okamžitě škáluje nahoru nebo dolů a zajišťuje, že zdroje nikdy nepřijdou nazmar.
Náklady na správu rozsáhlé infrastruktury Vysoké - Vyžaduje vyhrazený personál pro správu, údržbu a škálování serverů. Střední - Kubernetes sice některé úlohy automatizuje, ale stále vyžaduje specializované znalosti pro nastavení, údržbu a správu clusteru. Minimální - Není nutná žádná správa serverů. Veškerou správu infrastruktury zajišťuje poskytovatel cloudu.
Škálovatelnost infrastruktury Omezená - Škálování nad určitou mez vyžaduje významné změny infrastruktury, které mohou být časově i finančně náročné. Dobrá - Kubernetes je navržen pro škálovatelnost, ale stále je omezena dostupnou infrastrukturou. Škálování nad určitou mez může vyžadovat dodatečné rezervy. Neomezená - Serverless může škálovat téměř okamžitě, aby zvládl jakoukoli úroveň poptávky bez jakéhokoli předběžného provisioningu, což je ideální pro scénáře s velkými nárůsty provozu.
Zákaznická zkušenost Negativní - Riziko pomalého výkonu nebo výpadků během vysoké poptávky může vést ke špatným zkušenostem zákazníků. Dobrá - Lepší škálovatelnost může zlepšit zákaznickou zkušenost během vysoké poptávky, ale složitost správy Kubernetes může stále představovat riziko. Výborná - Okamžitá škálovatelnost a vysoká dostupnost serverless infrastruktury zajišťuje trvale dobrou zákaznickou zkušenost.
Riziko odlivu zákazníků Vysoké - Špatná zákaznická zkušenost během špičkové poptávky může vést ke zvýšenému odlivu zákazníků. Střední - Lepší škálovatelnost snižuje riziko odchodu zákazníků, ale ne tolik jako serverless. Nízké - Vynikající zákaznická zkušenost a schopnost zvládat špičkovou poptávku výrazně snižují riziko odlivu zákazníků.
Náklady na získání zákazníka Vysoké - Špatná zákaznická zkušenost může vést k vyšším nákladům na získání zákazníka kvůli nižší míře konverze a negativním zákaznickým hodnocením služby jako celku. Střední - Lepší zákaznická zkušenost může snížit akviziční náklady, ale složitost a potenciální problémy s Kubernetes to mohou do určité míry kompenzovat. Nízké - Vynikající zákaznická zkušenost v kombinaci se schopností rychle inovovat a nasazovat nové funkce díky nízké provozní režii může výrazně snížit akviziční náklady.
Riziko ztráty reputace Vysoké - Výpadky nebo špatný výkon, zejména při vysoké poptávce, mohou vážně poškodit reputaci. Střední - Ačkoli Kubernetes snižuje riziko ve srovnání s monolitickým systémem, potenciální problémy způsobené složitostí správy Kubernetes mohou stále představovat reputační riziko. Nízké - Vysoká dostupnost a vynikající výkon serverless infrastruktury minimalizují reputační riziko.

Z této tabulky je zřejmé, že serverless architektury mohou poskytnout významné výhody v oblasti nákladů a škálovatelnosti, zejména pro e-commerce firmy s velmi kolísavou poptávkou. Tím, že eliminuje potřebu správy infrastruktury a nabízí skutečný model pay per use, umožňuje serverless těmto podnikům optimalizovat náklady a efektivně zvládat prudké nárůsty provozu bez nutnosti předběžného rezervování výkonu.

Je důležité si uvědomit, že různé architektury jsou vhodné pro různé typy zákazníků, podniků, aplikací a potřeb. Zde je stručný přehled:

  1. Monolitická architektura

    • Ideální zákazník/podnik: Malé až středně velké podniky s jednoduchými aplikacemi a relativně stabilní a předvídatelnou poptávkou. Patří sem organizace, které teprve začínají svou cestu digitální transformace a adopce cloudu.
    • Typ aplikace: Interní systémy, starší aplikace nebo jednoduché webové aplikace.
    • Kolísání a objem poptávky: Nízká variabilita a objem. Poptávka je předvídatelná a nedochází u ní k náhlým výkyvům.
  2. Samostatně spravovaný Kubernetes.

    • Ideální zákazník/firma: Střední až velké podniky, které potřebují flexibilitu kontejnerů a mikroslužeb, ale jsou ochotny investovat do odborných znalostí a zdrojů potřebných ke správě infrastruktury Kubernetes.
    • Typ aplikace: Komplexní webové aplikace, architektury založené na mikroslužbách a aplikace, které vyžadují značné přizpůsobení a kontrolu.
    • Kolísání a objem poptávky: Mírná fluktuace a objem. Může docházet k občasným výkyvům poptávky a celkový objem transakcí je vyšší ve srovnání s menšími aplikacemi.
  3. Serverless architektura a infrastruktura

    • Ideální zákazník/společnost: Podniky všech velikostí, které potřebují vytvářet složité, škálovatelné aplikace bez režijních nákladů na správu infrastruktury. Může se jednat jak o začínající firmy uvádějící na trh nové produkty, tak o velké podniky, které chtějí rychle inovovat.
    • Typ aplikace: Vysoce škálovatelné webové aplikace, zpracování souborů v reálném čase, pipeline pro transformaci dat, API, architektury založené na mikroslužbách a aplikace s nepředvídatelnými vzorci poptávky.
    • Kolísání a objem poptávky: Vysoká variabilita a objem. Aplikace zažívá časté výkyvy v poptávce nebo má vysoký objem transakcí, které by využily možnosti automatického škálování serverless aplikací.

Jedná o zobecněné scénáře a skutečná nejlepší volba může záviset na mnoha dalších faktorech, včetně stávajících dovedností týmu, požadavcích na zabezpečení a dodržování předpisů, rozpočtu a dalších.

Je dobré si také připomenout, že serverless infrastruktura má své výhody, pokud jde o provozní aspekty, spolehlivost a podporu.

Kvalita IT provozu: Díky serverless architektuře podniky fakticky outsourcují významnou část svého IT provozu na odborníky, kteří se na tyto úkoly specializují. To v drtivé většině případů vede k mnohem vyšší míře kvality IT provozu ve srovnání s interním týmem, který se snaží vše zvládnout sám.

SLA: Přední poskytovatelé cloudových služeb, jako je například AWS, nabízejí závazné smlouvy o úrovni poskytovaných služeb (SLA), které zaručují vysokou dostupnost a výkon. Tyto SLA poskytují podnikům jistotu, že jejich aplikace budou stále v provozu a budou optimálně fungovat, čímž se snižuje riziko výpadků, které mohou poškodit jejich pověst a hospodářský výsledek.

Podpora: Zákazníci používající serverless infrastrukturu mohou těžit z komplexní podpory poskytované poskytovatelem cloudu. Tato podpora často zahrnuje jak technickou pomoc, tak přístup k široké škále zdrojů a osvědčených postupů, které jim pomohou maximalizovat hodnotu jejich serverless aplikací.

Vysoká dostupnost (HA): Serverless technologie jsou navrženy pro vysokou dostupnost. Dokážou automaticky zvládnout failovery, aby zajistily, že aplikace budou vždy dostupné a budou reagovat. To je významná výhoda oproti samostatně spravovaným systémům, které k dosažení podobné úrovně dostupnosti vyžadují velké úsilí a odborné znalosti.

Škálovatelnost: Serverless architektury mohou škálovat téměř okamžitě, aby vyhověly poptávce, zatímco škálování samostatně spravované infrastruktury vyžaduje dodatečné rezervy, konfiguraci a zdroje, což může zpozdit reakci na prudké nárůsty poptávky.

Bezpečnost: Poskytovatelé cloudu mají specializované bezpečnostní týmy, které neustále monitorují a zmírňují hrozby, což poskytuje další vrstvu zabezpečení, které jednotlivé společnosti těžko dosáhnou.

Serverless computing může být pro podniky velmi nákladově efektivním řešením, pokud se k němu přistupuje správně. Vyžaduje to změnu myšlení, abyste pochopili nuance nákladů serverless, průběžného monitorování a optimalizace. Místo toho, aby byl vnímán jako přítěž, by měl být při efektivním využití uznán jako mocný nástroj digitální transformace. Nepochopení požadavků může vést k vnímání vysokých nákladů, ale se znalostmi a strategickým plánováním mohou organizace využít skutečný potenciál serverless computingu.

Lukas Benda

Lukáš Benda

Certifikovaný AWS solutions architekt cloudových řešení s více než 20 lety praxe v oblasti podnikového softwaru. Specializuji se na navrhování robustních, serverless systémů a modernizaci podnikových architektur. Pojďme podpořit růst vašeho podnikání pomocí inovativních cloudových řešení.

Zajímá vás transformace vašeho podnikání pomocí cloudu? Ozvěte se a probereme, jak můžeme spolupracovat.

📞: 775 491 827

📧: lukas.benda@boldpivot.cz

LinkedIn: https://www.linkedin.com/in/luke-ben/

Komentáře

Populární příspěvky z tohoto blogu

The Future of Custom Software Development: Embracing AI for Competitive Advantage

Staying ahead of the curve is crucial for maintaining a competitive edge. As Chief Digital Officers (CDOs), tech leads, dev leads, senior developers, and architects, you are at the forefront of this transformation. Today, we dive into the game-changing potential of integrating OpenAI's code generation capabilities into your development strategy. This revolutionary approach promises not only to reshape the economics of custom development but also to redefine organizational dynamics and elevate competency demands. The Paradigm Shift: AI-Powered Code Generation Imagine a world where your development team is not just a group of talented individuals but an augmented force capable of producing custom codebases at unprecedented speeds. OpenAI's code generation technology makes this vision a reality. By leveraging AI, you can automate significant portions of the development process, allowing your team to focus on higher-level tas...

Bridging the Gap: How AI is Connecting Client Needs and Implementation in Software Agencies

  In the world of software development, one of the most significant challenges is bridging the gap between client needs and the implementation phase. This gap often results from a disconnect between strategic business analysis and the technical execution typically handled by software agencies. These agencies, while brimming with skilled coders, often lack the detailed strategic insights necessary for aligning their work with broader business goals. Enter Artificial Intelligence (AI), a game-changer that is effectively bridging this gap and transforming how software agencies operate. The Current Challenge Software agencies are renowned for their technical prowess, with teams of developers ready to bring any specification to life. However, the process often begins with a client’s broad vision or business problem, which needs to be meticulously translated into detailed specifications that developers can follow. This translation process is where many projects falter, as it requires dee...

Elevating Your Scrum Team with AI Fine-Tuning for Code Generation

Integrating AI fine-tuning into your development process can revolutionize how your Scrum team works, improving code quality, boosting productivity, and delivering exceptional business value. This blog post will guide Scrum Masters, Product Owners, and key sponsors through implementing AI fine-tuning in a practical, jargon-free way. We will also discuss the benefits of transitioning from large language models (LLMs) to specialized fine-tuned distilled models for better performance and cost efficiency. Understanding AI Fine-Tuning AI fine-tuning involves customizing pre-trained AI models to meet specific needs. For a software development team, this means training the AI to generate code that adheres to your company’s standards, performance metrics, and security requirements. By integrating this into your Scrum workflow, you can produce higher-quality code faster and more efficiently. Step-by-Step Implementation 1. Set Clear Objectives For the Scrum Master and Product Owner: Defi...