Microserivizi Flashcards

1
Q

Come posso decomporre un sistema in microservizi, quali proprietà dovranno rispettare?

A

Possono essere sviluppati in parallelo
Facilmente replicabili, runnabili in parallelo
Sono stateless
Dato un input viene prodotto output senza side effects
Possiamo modificarli e rideployarli senza fermare altri services

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

Come identificare microservizi in cui dividere un sistema

A

Funzioni macro divise in funzioni più specifiche
Analizza i dati utilizzati da ciascun microservizio
Diminuire amount dei dati replicati

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

Quando sviluppo microservizio devo tener conto di:

A

Self contained: nessuna dipendenza esterna
Utilizzo per la comunicazione di protocolli lightweight
Non dipendenti della tecnologie
Deployabili indipendentemente
Orientati a funzionalità business

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

Cos’é coupling

A

Indica relazione con altri services (conosciamo direttamente come questi sono formati)
Es. classe che chiama con interface oppure direttamente
minore é migliore

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

Cos’é coesione

A

indica numero di componenti interni che vengono riutilizzati
Alta é migliore

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

Quattro attributi dei services

A

Coupling, coesione, singola responsabilitá, gruppi di 8 - 10 persone

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

Quanti microservizi occorrono

A

Non troppi (low coesione -> comunicazione overhead)
Troppo pochi ( high accoppiamento -> più interdipendenza e facilità update)
Parti dai dati a cui hanno accesso services

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

Service comunicazione

A

Diretta
Indiretta
Da preferire, messaggi passano tramite message broker

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

Best practice con i dati tra microservizi

A

Ogni microservizio dovrebbe manage i propri dati
Se non possibile read only

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

Cap Theorem

A

Se abbiamo dati distribuiti non possiamo avere
Consistenza
Disponibilità
Network partition

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

Saga pattern

A

Per coordinare un saga utilizziamo saga
Sequenza di local transactions
Ogni transazione avvenuta ne scatena un’altra
Vengono effettuate operazioni in caso di errore
Retry later Forward model
Annulla modifiche effettuate Backward model

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

Pro

A

Short tempi di sviluppo
Scaling efficace

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

Cons

A

Complesso
Comunicazione tra servizi
Data duplication

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

REST principi

A

Interfacce POST PUT DELETE GET
Si accede tramite uri
Richieste in formato prestabilito
Interazioni stateless

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

Gestione errori

A

Failure tipologia
Internal service si rende conto internamente di errore e gestisce con messaggio di errore
External service aspetta un servizio esterno, perdita di performance, probabile riavvio
Circuit breaker si inserisce tra service e service esterno gestendone gli errori, es. timeout
Service performance failure, si risolve tramite monitor per trovare cosa scatena load eccessivo
Talvolta basta nascondere errore ad utente come fa spotify
Test bravely spegne microservizi volutamente

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

Per coordinare saga utilizziamo

A

Coreografia ogni transizione crea evento per triggerare prossima
Orchestratore dice a partecipanti quale local transaction eseguire

17
Q

Replicazione di netflix per assicurare consistenza

A

Netflix replica n/2 + 1 dati per consistenza