====== FaaS – Function as a Service (Funkce jako služba) ====== **Function as a Service (FaaS)** je kategorie služeb cloud computingu, která umožňuje zákazníkům vyvíjet, spouštět a spravovat aplikační funkce, aniž by museli budovat a udržovat infrastrukturu spojenou s vývojem a spuštěním aplikace. FaaS je klíčovou technologií realizující koncept **[[serverless|Serverless computingu]]**. ===== Hlavní charakteristiky ===== Na rozdíl od tradičních modelů (jako je [[iaas|IaaS]] nebo [[paas|PaaS]]) má FaaS několik unikátních vlastností: * **Abstrakce serveru:** Vývojář nevidí instanci operačního systému ani runtime. Nahrává pouze čistý kód (funkci). * **Event-driven (Řízeno událostmi):** Funkce neběží neustále. Jsou "mrtvé", dokud je neaktivuje specifický trigger (např. HTTP požadavek, zápis do DB). * **Krátká životnost (Ephemeral):** Funkce se spustí, vykoná úlohu a okamžitě zanikne. Stav (state) se mezi spuštěními neukládá (stateless). * **Mikro-účtování:** Zatímco u PaaS platíte za hodinu běhu serveru, u FaaS platíte za **milisekundy** skutečného času provádění kódu a počet volání. ===== Jak FaaS funguje (Pracovní postup) ===== Proces nasazení a běhu ve FaaS prostředí obvykle následuje tento cyklus: 1. **Napsání funkce:** Vývojář napíše úzký blok kódu (např. funkci pro zpracování platby nebo zmenšení obrázku). 2. **Definice triggeru:** Určí se, co funkci spustí (např. [[cloudevents|CloudEvent]] z fronty zpráv). 3. **Nasazení:** Kód je nahrán k poskytovateli (AWS, Azure, Google Cloud). 4. **Provedení:** Ve chvíli triggeru cloud provider okamžitě vytvoří kontejner, spustí v něm kód a po dokončení kontejner zničí. ===== Výhody a nevýhody ===== ^ Výhody ^ Nevýhody ^ | **Extrémní škálovatelnost:** Platforma zvládne 1 i 1 000 000 požadavků bez zásahu administrátora. | **Cold Start:** První spuštění funkce po delší době může trvat déle (latence). | | **Nízké náklady:** Platíte jen za efektivní práci kódu. | **Limity zdrojů:** Omezená paměť RAM a maximální čas běhu (timeout). | | **Rychlost vývoje:** Zaměření pouze na byznys logiku, nikoliv na konfiguraci prostředí. | **Komplexita monitoringu:** Sledování stovek malých funkcí je náročnější než sledování jednoho serveru. | ===== Populární FaaS platformy ===== * **AWS Lambda:** První masově rozšířená FaaS služba (představena 2014). * **Google Cloud Functions:** Optimalizováno pro JS (Node.js), Python a Go. * **Azure Functions:** Unikátní možností běhu v "Durable" módu (stavové funkce). * **OpenFaaS:** Open-source projekt umožňující provozovat FaaS na vlastním hardwaru pomocí Kubernetes. ===== Příklady použití (Use Cases) ===== * **Zpracování dat v reálném čase:** Automatické generování náhledů (thumbnails) po nahrání fotky uživatelem. * **IoT (Internet věcí):** Zpracování senzorových dat přicházejících z tisíců zařízení. * **Chatboti:** Funkce reagující na zprávy uživatelů. * **Backend pro mobilní aplikace:** API volání, která nepotřebují běžet 24/7. --- **Související termíny:** [[serverless|Serverless]], [[cloudevents|CloudEvents]], [[microservices|Mikroslužby]], [[iaas|IaaS]], [[paas|PaaS]].