2. Chi sono?
Gabriele Baldoni
Dottore in Ingegneria Informatica
Laureando in Ingegneria delle Telecomunicazioni
Contract Engineer @ CNIT
Contatti: gabriele.baldoni(_at_)gmail.com - @Gakbri
3. Cosa è la Microservices Architecture?
Sviluppare il software scomponendolo in servizi che interagiscono tra di loro.
Ogni servizio gestisce funzionalità correlate.
Ogni servizio dovrebbe gestire solo un piccolo insieme di responsabilità
I servizi comunicano tra loro attraverso metodologie IPC.
4. Evoluzione della SOA
L’architettura a microservices può essere vista come una evoluzione a grana
fine dell’architettura orientata ai servizi (SOA).
5. Ottima per il cloud
Separando i servizi è possibile fare una scaling a grana fine sui servizi che lo
necessitano.
7. Vantaggi di un’architettura microservices
Eliminazione dei single point of failure
Orchestrazione più “snella”
Continuous delivery
Scalabilità
Versioning
Flessibilità nello sviluppo
8. Svantaggi di un architettura a microservices
Orchestrazione più complessa
Gestione della comunicazione tra servizi
Gestione della coerenza dei dati
Gestione del High availability
Test
9. Meccanismi di comunicazione
Può essere conveniente l’utilizzo di un API Gateway tra le richieste dei client e i
servizi che compongono il nostro applicativo.
10. Meccanismi di comunicazione
Spesso vengono utilizzare le code di messaggi per la comunicazione tra i
servizi che compongono l’applicazione.
13. Unikernels?
Unikernels are specialised, single-address-space machine images constructed
by using library operating systems.
Cioè?
Macchine virtuali leggerissime altamente specializzate
14. Perché sono l’ideale per i microservices
Consentono di preoccuparsi solo del codice che si scrive, rendono le istanze da
lanciare leggerissime, permettono un miglior utilizzo delle risorse.
Sono addirittura più leggeri dei container!
16. Svantaggi degli unikernels
Non possono essere usati per fare tutto.
Diversi “flavor”
Iniziale difficoltà di implementazione
Difficoltà di debug
17. Flavor?
Diversi tool sono disponibili per la creazione di unikernels:
ClickOs
Clive
Drawbridge
HaLVM
Rumprun
runtime.js
18. Rumprun
Consente la creazione di unikernels in diversi linguaggi di programmazione.
C/C++
Python3
Node.js
Ruby
ecc… (https://github.com/rumpkernel/rumprun-packages)