Cloud paradigms Flashcards
Che cos’è l’elasticità?
Quali paradigmi non possono essere usati nel contesto cloud?
Quali sono le qualità qualificanti per le applicazioni cloud based?
Oltre ad astrarre il sw dall’hw cosa dobbiamo fare?
Quindi su cosa fa leva il paradigma cloud?
Dobbiamo essere capaci di fare scale up/down velocemente (tante VM a 1 VM o viceversa).
____
Non possiamo applicare sincronizzazione su larga scala, avere dati consistenti, avere comunicazioni sincrone e comunicazioni all-to-all.
____
Scalabilità, elasticità e disponibilità. Inoltre devono adattarsi a workload fluttuante e gestione graziosa delle failure.
___
Dobbiamo astrarre i servizi di business dal software, diventando agnostici rispetto all’hardware, piattaforma e software ma non rispetto i processi di business.
____
Il paradigma cloud fa leva su parallelismo large scale a livello di processi, comunica in modo asincrono, e mantiene una consistenza lazy dei dati, li distribuisce in modo geografico e fa uso di caching.
Quali sono le problematiche del cloud computing?
Una delle problematiche è la rapida crescita ed evoluzione dell’internet, dei dati ed i requisiti di scalabilità, rendendo certe soluzioni obsolete. Inoltre bisogna fare attenzione ai reclami dei clienti che può comportare una perdita di fiducia. Ora non si mira più alla tecnologia ma allo sviluppo di un servizio.
In cosa consiste il Grid Computing?
Quali sono le caratteristiche?
Che cos’è il globus toolkit?
Il grid computing consiste nell’unione per determinate unità di tempo di unità informatiche(gridlet) geograficamente distribuiti che comunicano e agiscono insoeme per compiere lo stesso scopo agendo come un’unica unità di calcolo.
Il grid computing può essere sia omogenea che eterogenea in termini di nodi, indipendenti fra loro, con una loro autonomia della rete e condividendo solo una porzione delle risorse.
L’idea è quella di creare un supercomputer distribuito.
Globus toolkit è un meccanismo per i sistemi grid, con scheduling basato su batch jobs e interratività limitata. Manca un modello economico chiaro.
Quali sono le possibili architetture?
In cosa consistono i modelli pre-SOA?
Che cos’è lo stub? Come funziona?
- Monolitici
- SOA
- Microservizi
- Serverless
Tipicamente in ambiente aziende usano soluzioni ibride.
___
I modelli pre-SOA erano:
- RPC: Chiamata di procedura remota, creiamo un codice per asstrarre un’invocazione remota, viene usato il linguaggio IDL. In pratica è come una chiamata di funzione locale ma con lo stub nascondiamo la complessità.
- OO-RPC: usiamo Java in modo analogo del IDL
- Middleware orientato ai messaggi: Approccio client server con messaggi sincroni o asincroni con code di messaggi, tipico per fire-and-forget come le notifiche.
NB: IDL (Interface Definition Language) è un linguaggio utilizzato per la definizione delle interfacce tra client e server in modo indipendente dal linguaggio di programmazione utilizzato per l’implementazione.
___
Il codice stub è una porzione di codice che semplifica la comunicazione tra client e server in un sistema RPC (Remote Procedure Call), nascondendo i dettagli della comunicazione remota. Ecco il processo in modo chiaro e conciso:
- Chiamata Locale: Il client chiama lo stub client come se fosse una funzione locale, passando i parametri.
- Marshaling: Lo stub client impacchetta (marshaling) i parametri in un messaggio e lo invia tramite una chiamata di sistema al sistema operativo.
- Trasmissione: Il SO del client invia il messaggio alla macchina server.
- Unmarshaling: Il SO del server riceve il messaggio e lo passa allo stub server, che spacchetta (unmarshaling) i parametri.
- Esecuzione Remota: Lo stub server chiama la funzione reale sul server e ottiene il risultato.
- Ritorno della Risposta: Il risultato segue lo stesso percorso al contrario, ritornando al client tramite gli stub e i SO.
In sintesi: Client → Stub Client → SO Client → Rete → SO Server → Stub Server → Funzione Remota → Risposta indietro seguendo lo stesso percorso.
Cosa sono i modelli SOA?
In quali scenari possiamo usarli?
__
Quali sono le caratteristiche delle SOA?
__
In cosa consista la SOAP? Come sono strutturati i messaggi? quali sono i limiti del SOAP?
__
In cosa consiste l’enterprise service bus?
Service Orient Architecture hanno un approccio rivolto al business, basata su componenti software creati per evitare software monolitici. In modo da essere riutilizzati e integrati con altri sistemi.
__
Ci sono 3 scenari:
- SOA intra-aziendali
- SOA inter-aziendali con rapporti B2B
- SOA inter-aziendali con servizi offerti liberamente
___
Gli elementi che caratterizzano le SOA sono:
- Servizio: composto da moduli, hanno una descrizione e un interfaccia d’accesso
- Tecnologie abilitanti
- Governance e politiche SOA
- Metriche SOA
- Modello organizzativo e comportamentale
__
Il protocollo Service-Oriented Architecture (SOA) è una tecnologia di messaggistica basata su HTTP/HTTPS, con dati scritti in XML. Un servizio web viene identificato tramite un URI, mentre le sue interfacce e i relativi collegamenti sono descritti in XML. Utilizza ESB per far comunicare i servizi.
Soap incapsulato in http:
Abbiamo
{HTTP header}
{SOAP ENVELOPE
[SOAP HEADER]
[Soap BODY
Payload
SOAP fault]
}
I limiti del SOAP sono la lentezza del XML, è meglio il JSON.
___
L’entertprise service bus è una soluzione middleware per rendere la comunicazione tra i componenti dell’applicazione residenti su diverse macchine più facile da mantenere(quindi interconnette diversi servizi).
Le sue funzioni sono:
- Instradamento dei messaggi verso la destinazione
- Gestione di diversi modelli di comunicazioni (event based, async queue)
- agisce anche come broker
- connettore ponte per diversi protocolli
- supporta policy e QoS
- Monitor, logging, sicurezza
In cosa consistono i microservizi?
Quali sono i vantaggi? svantaggi?
Qual’è la differenza con i SOA?
Il paradigma dei microservizi consiste nel separare un servizio in servizi più piccoli che comunicano tra di loro e sono specializzati ad eseguire un task specifico.
Il paradigma a microservizi ha il vantaggio di avere deployment, testing e tempi di sviluppo agevolati. Purtroppo non tutte le applicazioni sono a microservizi, non è diffuso negli scenari tradizionale, dobbiamo coordinare la comunicazione e c’è del overhead.
SOA e microservizi modellano un applicaizione in unità più piccole, microservizi comunicano con API e non richiedono ESB.
In cosa consiste l’architettura REST? Come comunicano i client e server?
Quali sono i vincoli del REST? Quali sono le azioni tipiche?
Quali sono i metodi utilizzati?
Possiamo fare caching?
REST (Representation State Transfer) è un’architettura stateless che sfrutta i verbi HTTP (GET, POST, PUT, DELETE) per mappare le azioni sulle risorse. Ogni risorsa è identificata da un URI e rappresentata, di solito, in formato JSON.
Client e server comunicano tramite i rispettivi URI, senza bisogno di servizi ausiliari per il funzionamento.
______
I vincoli dell’architettura REST sono:
- Modello client-server: Separazione tra client e server per migliorare scalabilità e flessibilità.
- Stateless: Ogni richiesta deve contenere tutte le informazioni necessarie.
- Cacheable: Le risposte possono essere memorizzate per ottimizzare le prestazioni.
- Struttura a strati: I client non vedono i livelli intermedi tra loro e il server.
- Interfacciamento tra servizi: Un servizio REST può comunicare con altri servizi.
- Interfaccia uniforme: Gli URI identificano le risorse e i messaggi sono autodescrittivi.
_____
Le azioni tipiche sono le CRUD.
Abbiamo POST(crea risorsa), GET(prende), PUT(modifica), DELETE, HEAD(controlla se esiste o cambiata), OPTIONS(quali sono i metodi supportati)
_______
Possiamo fare caching della richiesta e definire un TTL, possiamo usare anche un etag che tramite md5 digest della rappresentazione della risorsa.
In cosa consistono openAPI? A cosa serve?
In cosa consiste un documento OpenAPI? Cosa ci permette di fare?
In cosa consiste il concetto di controllo dei media nelle RESTful API?
Quali sono i requisiti per le Rest APIs?
OpenAPI Lo standard è una specifica per file di interfaccia leggibili dalle macchine per descrivere, produrre, consumare e visualizzare servizi web RESTful. Dato che REST non ha un description language nativo, e OpenAPI copre questa lacuna (SOAP ha Web Service Description Language che definisce i servizi in XML).
__________
Un documento OpenAPI fornisce una descrizione formale di un’API, permettendo di generare automaticamente codice, documentazione e test case. Questo garantisce una sincronizzazione tra documentazione, client e codice sorgente.
___
Il controllo dei media definisce il tipo di contenuto che il client può richiedere e il server fornire. La rappresentazione di un oggetto deve indicare al client le azioni disponibili su di esso.
Questo principio, noto come Hypermedia as the Engine of Application State (HATEOAS), prevede che il client non abbia informazioni a priori, ma le ottenga dinamicamente tramite hypermedia.
es. L’api dice al client cosa può fare, come i link alle routes
___
- devono essere stateless e semplici
- bullet proof: gestione errori e controllo degli input
- progettate dall’esterno verso l’interno in modo che i lenti cambiamenti interni non vengano rilevati
- Auto descrittive: Devono usare documentazione standard per le API, come swagger
- Riutilizzabili: configurabili non codificate
Qual’è la differenza tra orchestrazione e coreografia?
Quando abbiamo servizi collegati tra di loro come garantiamo la resilienza?
Cosa sono i circuit breakers?
Orchestrazione: Un’autorità centrale controlla l’esecuzione dei servizi noti.
Coreografia: Ogni componente conosce il proprio set di azioni prestabilite che deve compiere in relazione agli altri elementi con cui deve agire. Abbiamo un event stream come ESB, dove gli elementi pubblicano e ricevono.
___
Nei servizi web, dobbiamo garantire la robustezza quindi per evitare problemi come crash cascade dobbiamo essere stateless, in modo da non perder informazioni, altrimenti la migrazione diventa complicata, inoltre dobbiamo scrivere chiamate REST robuste e capaci di gestire errori e ritardi.
_________
Un altro modo è l’uso di circuit breakers, che funge da intermediario per le operazioni che possono fallire, monitorano le failure e decidono di consentire il proseguimento all’operazione oppure dare un’eccezzione e segnare il servizio come bad.
Cosa sono le EDA?
Quali sonole sue caratteristiche?
Quali esempi di prodotti ci sono?
In cosa consiste Apache Kafka?
Event Driven Architecture sono un’alternativa al REST, è un’architettura flessibile e reattiva ai cambiamenti in tempo reale.
- Gli elementi che generano notifiche non devono necessariamente conoscere i componenti software del ricevente
- le notifiche indicano un cambiamento nello stato del sistema
- le notifiche possono essere innescate da fonti esterne come input utente, condizioni ambientale o da notifiche interne come invio dati pipeline workchain
- Async comunication: con code salvate nel buffer, i consumer processano i messaggi come meglio possono, rallentando ma mai in down.
- Accoppiamento libero: I pubblisher non sanno nulla dei subs
- Eventual consistency: utilizziamo cache per memorizzare i dati aggiornati per ridurre il carico del sistema, mantenendo i dati in buono stato per i nodi.
___
AMQP (Advanced Message Queuing Protocol)
MQTT (Message Queue Telemetry Transport): I messaggi sono in formato chiave-valore inoltrati a un intermediario(broker) che li manda ai client destinatari (es. sensore -> broker –> sub)
Apache Kafka: E’ una piattaforma per la gestione distribuita di stream di eventi, focalizzandosi sulla scalabilità, tolleranza a failures (pagata in termini di costi) memorizzazione degli eventi e distribuzione su scala geografica.
- Struttura dati di Kafka: Kafka lavora con delle strutture dati che consistono in logs che corrispondono a un certo topic, essi possono essere replicati, filtrati, partizionati.
- Gestione degli eventi: Kafka salva gli eventi come dati “grezzi” per poi essere smistati da un worker.