Serverless paradigm Flashcards

1
Q

Che cos’è il serverless computing?

Quali sono le differenze con IaaS?

Quali sono i vantaggi?

A

E’ un approccio per le applicazioni cloud che opera al livello PaaS, il provisioning e deployment e lasciato al provider (tutto lo stack necessario è managed) permettendo a coloro che sviluppano di dedicarsi solamente a quello e fornire una definizione del software (Container o anche meno).
_____

Le architetture IaaS dove abbiamo controllo completo dell’infrastruttura, siamo noi a carico della scalabilità, monitoring, sicurezza, e i costi si basano sulla capacità allocata. Mentre serverless la scalability è automatizzata, monitoring e sicurezza sono gestiti dal provider e i costi si basano sulla capacità “consumata” (fattura salata).

Da DevOps passiamo a NoOps perchè il deployment non è più una nostra preoccupazione.
___

  • Non dobbiamo preoccuparci della gestione e governance dell’infrastruttura
  • Costi: test, controllo degli accessi etc… gestiti dal provider
  • Scalability e availability: ridimensionamento automatico ed elastico (il provider gestisce guasti etc..)
  • Complessità ridotta del software dato che per il paradigma serverless dobbiamo programmare delle funzioni semplici
  • Minima latenza: tipicamante le funzioni sono replicate su iù server e quindi veniammo indirizzati a quello più vicino
  • Maggiore produttività del software separando sviluppo dall’amministrazione dell’infrastruttura
    ____
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quali sono le categorie di Serverless?

A

Backend as a service
es. Google firestore
Tipicamente fornisce un servizio ad altre applicazioni sotto forma di API apposta per gli sviluppatori come DB cloud, servizi di autenticazione, notifiche push…

Function as a service
es. Google functions

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

In cosa consiste il FaaS?

Quali sono le caratteristiche delle functions?

In quali scenari brillano di più?

Quali sono gli svantaggi del FaaS?

Fai un esempio di uso del Faas

A

Se possiamo dividere il software in funzioni più piccole dei microservizi, le possiamo deployare su server esterni in modo da separare lo stato del server e affrancarsi dal bisogno di gestirsi l’infrastruttura.

In questo modo abbiamo una gestione più fine in cui varie funzioni compongono un microservizio, e a loro volta i microservizi compongono il monolite.
____
Le function sono stateles (esecuzioni parallele senza stato), effimere (dismesse quando non usate, non c’è persistenza) ed event-driven.
Inoltre sono totalmente gestire dal provider, il costo è per utilizzo (o risorse usate, a volte ci sono freetier) e promuove una business logic che punta sulla funzionalità e non l’infrastruttura.
____

Lo scenario prinicipale è quello in cui lo scaling automatico può fare la differenza. Comodo per workflow variabile, dove ci sono lunghi periodi di idle oppure c’è una grande differenza tra picchi e minimi.

___
Gli svantaggi del FaaS sono:
- vendor lock in: non c’è standardizzazione tra providers
- Sicurezza: problema della monocoltura, se violo l’infrastruttura del provider intacca tutti i clienti
- Risorse limitate: ci possono essere dei limiti imposti dal provider per quanto riguarda le risorse disponibili, quindi non ideale per high performance computing, inoltre non tutte funzioni sono disponibili nei providers
- Minor controllo: non gestiamo l’infrastruttura

  • Performance: se una macchia si spegne perchè dealloco la funzione dal mancato traffico, riavviarlo porta latenza

es. Flask, con FaaS mi occupo solo della view, quale versione di Flask viene usata è compito del provider

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quali sono alcune tecnologie FaaS?

A

Open Wisk, Amazon Lambda, Google Function, Azure Functions….

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Che cos’è OpenWisk?

Quali possono essere le fonti?

Quali sono le caratteristiche di una azione?

Come sono fatte le azioni?

Quali sono le possibili semantiche di una azione?

A

OpenWisk è una tecnologia FaaS che mira ad evitare il vendor lock-in, segue un modello di programmazione basato su trigger definito da noi associato a una regola che attiva un’azione.

event source -> feed -> trigger -> rule -> action -> json

Supporta Java, Go, PHP, Python etc…
___
Le fonti possono essere qualsiasi cosa che generi un evento. Quindi datastores, oppure MQTT….
___
Le azioni sono
idempotenti T(TX))=T(X)
parallelizzabili
possono essere eseguite più volte rispetto allo stesso evento (l’ordine di esecuzione non è lo stesso)
Ogni operazione deve indipendente dall’azione (niente stato interno)
Le azioni non sono atomiche
note: code snippet
___
Le azioni hanno un input e un output, hanno una struttura a dizionario chiave stringa e il valore json, ogni azione è definita da:
- namespace (nome della funzione)
- package name
- Action name

Example: /whisk.system/samples/greeting
__
Richiesta/risposta: bloccante che ritorna i dati generati dalla richiesta

Fire and forget: azione una volta terminata, genera un evento per comunicarlo (come un callback). Nel fire and forget ogni azione viene memorizzato in un log, detto anche activation record, esso contiene activation id, name space, time stamp inizio e fine, logs e valore di risposta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

In cosa consistono le Web Actions di OpenWisk?

Gestione delle risorse?

Cosa sono i trigger?

Quali sono i model process disponibili?

A

Sono azioni per generare applicazioni Web, possono operare ricevendo richieste HTTP, settando headers status code e cookies. Ritornano un body HTML, la risposta è sempre un JSON.

_____
Open Wisk supporta limiti di utilizzo delle risorse nelle funzioni. Possiamo imporre limiti relativi a:
- tempo di esecuzione
- utilizzo di memoria
- output size
- numero esecuzioni ricorrenti
- activation rate

____
I trigger sono un canale nominativo di una classe di eventi che operano su una sorgente di dati, le regole definiscono un vincolo tra i trigger e le azioni che verranno eseguite.
____
OpenWisk ha un flow processing model con:
- NGINX per la gestione di richieste in arrivo
- Kafka per la coda di messaggi di eventi da instradare al container
- Docker per l’esecuzione delle funzioni
- CouchDB per log, storage di metadati

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

In cosa consiste OpenFaas

FaaSD

A

Framework FaaS simile a OpenWisk, basato su tecnologie container, Ha uno stack che alla base c’è il container management (Docker, Kubernetes e Container Registry), ha un application layer dove c’è NATS per le code di messaggi e prometheus per il monitoring. In cima c’è il layer Infrastructure as a code.
Usato negli scenari di produzione.

FaasD versione di openFaas che usa containerd che può essere runnato su sistemi raspberry,interessante per l’edge.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

In cosa consiste AWS lambda?

Come sono i costi?

Come funziona?

Come viene fatto il deployment?

A

E’ una piattaforma di computing serverless, dell’ecosistema amazon che può interagire con tutti i servizi AWS (DynamoDB, S3, AWS step).

AWS step

___
Il costo si basa per 1M di richieste, 1GB di RAM al second, c’è un freetier per 1M di richieste e 400GBxsec al mese.
___
Abbiamo una funzione definita da un qualifier che serve per il versioning che permette di chiamare varie versioni della funzione e anche un enviroment.
__
Usiamo dei deployment package per installare la funzione, che può essere un zip che contiene codice e librerie. Possiamo mettere anche delle immagini di container.

____
Gli eventi in AWS sono dei JSON passati in input come in Openwisk, possono essere custom oppure service event in base a quello che sta succedendo nella piattaforma Amazon in json.

Il runtime decide quanti containers mandare in esecuzione in base alle richieste, anche qui le funzioni
sono regolate da trigger

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

In cosa consiste Google Functions?

A

E’ un approccio simile alle altre, con eventi, funzioni e trigger.

Funzioni HTTP, Cloud Storage, Pub/Sub, Cloud Firestore. Supporta Python, Javascript, Java e e Go.

Ha un meccanismo analogo ad AWS per invocazione.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly