• Nebyly nalezeny žádné výsledky

Model jako takový má několik charakteristik, které sdílí nebo oddělují od ostatních cloudových služeb:

• Žádná administrace infrastruktury

• Vysoká škálovatelnost

• Řízené událostmi

• Pomíjející

• Bezstavová

• Vícejazykové

• Vysoká dostupnost

• Cenová dostupnost

1.3.1 Žádná administrace infrastruktury

Jeden z velkých tahounů marketingu FaaS řešení u Amazonu je to, že uživatel nepotřebuje žádnou znalost toho, jak spustit, nastavit nebo spravovat servery. Toto se projevuje tím, že uživateli stačí nahrát pouze kód funkce do rozhraní služby v ZIP souboru nebo v případě AWS Lambda, pokud je kód větší jak 10 MB tak vybrat kde je soubor umístěn v jejich S3 řešení (Amazon Web Services, Inc, 2014)

Co toto znamená pro firmy je především méně administrace a více času pro vývojáře na psaní kódu. Toto také napomáhá například s bezpečností, kdy službu hlídají ti nejlepší z nejlepších a není zapotřebí se starat o aktualizace či jiné problémy.

1.3.2 Vysoká škálovatelnost

Další velkou výhodou, která zároveň navazuje na první charakteristiku, je že díky automatické správě infrastruktury, na které běží funkce či celé aplikace může poskytovatel automaticky navyšovat počet kontejnerů na kterých kód běží. Toto způsobuje obrovskou výhodu, kdy v případě že aplikace získá na popularitě se nemůže stát takzvaný „Slashdot efekt“, kdy služba není připravena na nápor nových požadavků a začne být přehlcena a přestane plnit tyto požadavky. Toto se může stát na cloudových nebo on-premise architekturách.

1.3.3 Událostmi řízené

Tato charakteristika je jedním ze základních kamenů FaaS modelu. Narozdíl od běžných serverů neběží služby na této distribuci neustále, naopak čekají až na zavolání událostí z ekosystému poskytovatele, kdy je následně spuštěna na omezenou dobu, pokud nebudou znovu zavolány v tomto intervalu. Jako příklad lze uvést spuštění funkce jednou za hodinu pomocí časovače.

1.3.4 Pomíjející

Pomíjející v tomto případě znamená, že kód se spouští v takzvaných kontejnerech, kdy po události jako je například změna v databázi, server dostane informaci o tom, že má spustit svůj kód. Po spuštění a provedení mají poskytovatelé nastavený takzvaný timeout pro každou funkci. Pokud na ni nebude zaznamenán další požadavek, bude vypnuta a přejde do takzvaného „cold state“ neboli „studeného stavu“. Tento stav vypne kontejner a jeho výpočetní síla bude poskytnuta pro jinou funkci jakéhokoliv uživatele. Tento interval trvá 5 až 15 minut a liší se dle poskytovatele.

1.3.5 Bezstavová

Tato charakteristika navazuje na předchozí, a to tím, že kvůli neustálému vypínání a zapínání funkce a využívání kontejnerů nemůže kód uchovat stav mezi jednotlivými spuštěními.

Při designování těchto funkcí, jakákoliv data, u kterých může nastat změna, musí být uchována externě, tedy být převedena do databází, souborů atd. (Chowhan, 2018).

1.3.6 Vícejazykové

Jak Azure Functions, tak AWS Lambda podporují více programovacích jazyků, u každého se však může lišit doba spuštění kontejneru, ale programátor není omezen znalostí jazyků, a tudíž si může vybrat, jaký jazyk je právě pro jeho řešení tím nejlepším. Amazon spustil jejich službu s podporou Node.js a postupně přidal nativní podporu pro Javu, Go, PowerShell, C#, Python a Ruby. Také existuje možnost pomocí API (Application Programming Interface) vytvářet funkce v dalších jazycích. Toto umožňuje velké skupině uživatelů využívat tohoto řešení bez nutnosti se prvně naučit nový jazyk, ale také převést již existující aplikace do tohoto modelu bez nutnosti přepsání. Dále není nutné psát pouze

v jednom jazyce ovšem lze využít jazyk, který se hodí specificky pro daný problém (Bardsley et al. 2018).

Následuje příklad, jak by taková funkce mohla vypadat. Vývojář potřebuje pro svou aplikaci vytvářet z obrázků nahraných na jeho webovou galerii menší náhledový obrázek. Rozhodne se napsat tuto funkci v Node.js z důvodu znalosti jazyka a použít AWS Lambda díky cenové dostupnosti. Aplikace jako taková nemá v sobě uchovaná žádná data a používá pouze externě získané soubory. Programátor nemusí řešit, na jaký hardware použít nebo jak si pořadí se škálovatelností, protože to AWS Lambda řeší automaticky i při velkém náporu uživatelů.

1.3.7 Cenová dostupnost

Dalším velkým bodem v popularitě Serverless a FaaS jako takového je cenová dostupnost, a to díky cenovému modelu, na kterém celá služba běží. Na rozdíl od ostatních modelů uživatelé platí za skutečný čas užívání. Toto se může projevit především u menších aplikací, které nejsou příliš vytížené požadavky uživatelů. Tento čas je měřen ve stovkách milisekund a pro mnoho společností umožňuje značné snížení výdajů. Microsoft nabízí jejich službu Azure Functions v ceně 0.000014 eura za GB-sekundu (GB-sekunda je čas běhu funkce vynásobený počtem RAM, kterou funkce využívá) a 0.169 eura za milionů požadavků (Microsoft, 2021a). Oproti tomu jejich řešení virtuální strojů je ceněno na hodinu a nejlevnější řešení začíná na 0,007 eura za hodinu (Microsoft, 2021b). Pokud FaaS bude porovnáno s PaaS, lze vyvodit, že FaaS je vhodnější pro krátké a předpovídatelé služby.

Naopak PaaS je vhodný spíš pro časově nepředpověditelné procesy (Albuquerque Jr et al., 2017).

1.3.8 Vysoká dostupnost

Velká část společností poskytující FaaS mají svá datacentra ve velkém množství lokací po celém světě, je tedy velmi nepravděpodobné, že by se funkce nespustila. Například společnost Amazon má svá datová centra v 80 zónách ve 25 regionech po celé planetě (Amazon, 2021b). Toho je docíleno právě díky nevázanosti na určitou infrastrukturu, kód lze spustit ve virtuálním kontejneru, který není nijak omezen tím, kde ho lze vytvořit.