Upload
italianasoftware
View
507
Download
0
Embed Size (px)
Citation preview
La rivoluzione dei microserviziIl nuovo paradigma di progettazione architetturale che cambierà i vostri sistemi IT
rendendoli più flessibili e più dinamici
Meeting On Microservices - Bologna, 20/12/2016
Ricerca Tecnologia
AffiancamentoConsulenza
Prodotti
Cliente
Il Sistema Informativo al centro
Processi Organizzativi Dati Organizzativi
Organizzazione
Contesto economico
Strategie di Business
Serve capacità di adattamentoContesto economico
1)Riduzione della visibilitàa lungo termine.
2) Internet come piazza abilitanteal commercio
1) Aumento della pressione esterna
2) Richiesta di maggiore capacità di adattamento in tempi brevi
Interveniamo qui
Com'è il sistema ora…
Sistema amministrativo
WebDati Specifici di
Applicazioni terze
Il sistema amministrativo è spesso il cuore dell'IT
I processi ed i dati organizzativi ITsi trovano sparsi in diverse porzioni del sistema:1) Dentro il sistema amministrativo2) Nei processi di integrazione3) Dentro applicativi di terze parti
I processi ed i dati organizzativi ITsi trovano sparsi in diverse porzioni del sistema:1) Dentro il sistema amministrativo2) Nei processi di integrazione3) Dentro applicativi di terze parti
La gestione dei processi organizzativi così come la gestione dei dati, richiede impegno in terminidi:
1) Tempo2) Risorse umane3) Risorse economiche
(Consulenze, prodotti,...)
Come dovrebbe essere?
Un sistema altamente adattivo e flessibile dovrebbe essere composto da tanti componenti interdipendenti ciascuno dei quali offre funzionalità ben delineate
Architettura logica a strati
Sorgenti di dati
Processi base
Processi di business
API
Applicativi
La scalabilità?
Un sistema flessibile dovrebbe essere in grado di scalare linearmente rispetto al carico a cui è sottoposto così da essere in grado di scalare linearmente anche i
suoi costi.
utilizzatori
costi
I Microservices
Applicativo monolitico
Lib A Lib B Lib C
μS A
μS B
μS C
μS MainApplicativo monolitico
Lib A Lib B Lib C
μS A
μS B
μS C
μS MainApplicativo monolitico
Lib A Lib B Lib C
μS A
μS B
μS C
μS Main
MONOLITICO vs DISTRIBUITO
Microservices - Riusabilità
Applicativo monolitico A
Lib A Lib B Lib C
Applicativo monolitico B
Lib A Lib B Lib C
Lib A Lib B Lib C Sorgenti μS A μS B μS C
μS Main A μS Main B
Microservices - Scalabilità
μS A
μS B
μS C
μS Main
Applicativo monolitico
Lib A Lib B Lib CApplicativo monolitico
Lib A Lib B Lib CApplicativo monolitico
Lib A Lib B Lib C
μS B
μS C
μS Main
μS B
μS B
Microservices - Deployment
μS A
μS B
μS C
μS Main
Applicativo monolitico
Lib A Lib B Lib C
Microservices Resistenza agli errori
Applicativo monolitico
Lib A Lib B Lib C
μS A
μS B
μS C
μS Main
μS C'
Microservices - Monitoring
Applicativo monolitico
Lib A Lib B Lib C
μS A
μS B
μS C
μS Main
LOG
Logger
I microservizi come soluzione
Sorgenti di dati
MICROSERVIZI
MICROSERVIZI
API
Applicativi
Jolie
Java Orchestration Language Interpreter Engine, nasce come alternativa al linguaggi di orchestrazione per web service WS-BPEL
● Semplificandone la gestione ● Non richiede la presenza di motori di esecuzione dedicati ● La definizione non è definita mediante xml ma è scritta in linguaggio nativo
eseguito dall’interprete● Estendendone le funzionalità
● Possibilità di integrare logica applicativa Java● Possibilità di utilizzare il linguaggio per implementare microservizi● Orchestrazione di Web Service Soap, Rest, Jolie
Perché un linguaggio?
ANNO 2016
Ho comprato uno smartphone nuovo con sistema operativo Android e connessione
ad internet
Perché un linguaggio?
ANNO 1800?
Ho comprato uno smartphone nuovo con sistema operativo Android e connessione
ad internet
Perché un linguaggio?
ANNO 1800?
Ho acquistato un oggetto grande quanto un libro di piccole dimensioni la cui copertina straordinariamente lucida e variopinta è in grado di mostrare immagini così
ben definite da apparire quasi rappresentazioni della realtà, ma questo è nulla poiché è sufficiente sfiorare
tale oggetto con un dito per innescare un meccanismo quasi diabolico in grado di fare udire la mia voce ad una
persona all'altro capo del mondo in tempo reale così che io possa comunicare con lei una volta acquisito un numero che mi permette di riconoscerla tra tutti.
L'oggetto è nuovo con sistema operativo Android e connessione ad internet
Il linguaggio fa guadagnare TEMPO e SPAZIO
oggetto grande quanto un libro di piccole dimensioni la cui copertina
straordinariamente lucida e variopinta è in grado di mostrare
immagini così ben definite da apparire quasi rappresentazioni della
realtà, ma questo è nulla poiché è sufficiente sfiorare tale oggetto con un dito per innescare un meccanismo quasi diabolico in grado di fare udire la mia voce ad una persona all'altro capo del mondo in tempo reale così che io possa comunicare con lei una
volta acquisito un numero che mi permette di riconoscerla tra tutti.
smartphone
Il linguaggi di programmazione
010101000101000100100100100101000101000010100100100101001010101001010010010100100101010001010001001001001001010001010000101001001001010010101010010100100101001001010100010100010010010010010100010100001010010010010100101010100101001001010010010101000101000100100100100101000101000010100100100101001010101001010010010100100101010001010001001001001001010001010000
MACCHINA
ORG 2050H MOV DPTR,#CNTMOV A,#INITMOVX @DPTR,AMOV SP,#2FH CLR RS0CLR RS1 ACALL SERIALMOVDPTR,#HEADINGACALL STRINGORG 2050H MOV DPTR,#CNTMOV A,#INITMOVX @DPTR,AMOV SP,#2FH CLR RS0
ASSEMBLER C
MENO ERRORI UMANI
int main(){ int n, sum = 0, c, value; printf("Enter the number of integers "); scanf("%d", &n); printf("Enter %d integers\n",n); for (c = 1; c <= n; c++) { scanf("%d",&value); sum = sum + value; } printf("Sum of entered integers = %d\n",sum); return 0;}
Un vantaggio concreto
● Il primo compilatore completo fu creato dall'equippe di John. W. Backus presso i laboratori IBM nel 1957. Era un compilatore FORTRAN. Ci vollero ben
● 18 anni uomo per realizzarlo.● Al tempo non era stata ancora sviluppata la
teoria dei linguaggi. ● Oggi in molte università, viene data la creazione
di un compilatore come esercizio d'esame. John. W. Backus
I tre vantaggi competitivi di Jolie
1)1) ParadigmaticitàParadigmaticità: : il programmatore scrive e pensa direttamente a microservizi.
2)2) Autosufficienza:Autosufficienza: non sono necessari tool aggiuntivi non sono necessari tool aggiuntivi
per la messa in esecuzione di un microservizio Jolieper la messa in esecuzione di un microservizio Jolie
3)3) Indipendenza:Indipendenza: un microservizio jolie non è legato a un microservizio jolie non è legato a nessun protocollo di comunicazione in particolarenessun protocollo di comunicazione in particolare
Paradigmaticità
Il programmatore programma e progetta l'architettura a microservizi in unico passaggio poiché il linguaggio fornisce tutti gli strumenti base per la creazione e manipolazione dei
microservizi.Conseguenza importante: durante la programmazione il programmatore si
disinteressa di come dovranno essere eseguiti i microservizi
Dall'applicazione monolitica...
...esecuzione come singola applicazione
...verso...
...eseguiti in due macchine
...i microservices
AutosufficienzaUn servizio Jolie necessita solamente di
una Java Virtual Machine per funzionare
Non sono necessari framework aggiuntivi per il suo funzionamento
No application server, No web server
Importazione di codice Legacy
Legacy Code
Indipendenza
HTTP
SOAP
HTTPS
custom protocolSi possono sviluppare protocolli custom specifici
L'interdipendenza tra linguaggi e supporti
Memorie meccaniche
0101010
1940
Assembler
1954Memorie elettroniche
Memorie TTL 1973
C
Multipiattaforma
Cloud 2010
1991
Java
IoT2030
Le due vie ai microserviziProgrammazione: dal punto di vista della programmazione la sfida è quella di trovare nuovi linguaggi in grado di catturarne l'essenza.
Linguaggio è la parola chiave.
Diciamo che questa via segue il paradigma linguistico
Sistemi: dal punto di vista dei sistemi, i microservizi possono essere visti come applicazioni indipendenti in grado di servire più richieste. Sono eseguiti all'interno di artefatti chiamati containers.
Container é la parola chiave.
Diciamo che questa via segue il paradigma sistemistico.
Paradigma Sistemisticovs
Paradigma LingusticoIl paradigma linguistico si basa sull'idea che i principi fondazionali della programmazione a microservizi possano essere condensato in un unico linguaggio.
Non è importante come venga eseguito un microservizio, la cosa importante è che ogni singola unità programmabile sia un microservizio.
Il paradigma sistemistico, è basato sui contaner e parte dall'idea che:
Non è importante come un microservizio è realizzato, la cosa più importante è che il microservizio sia eseguito all'interno di un container che può essere spostato, rimpiazzato o scalato.
Catena produttiva del software
DESIGN
Paradigma sistemistico Paradigma linguistico
DEVELOPMENT
PACKAGING
DEPLOYMENT
Il progettista pensa a microservizi Il progettista pensa a microservizi
Lo sviluppatore programmaseguendo un altro paradigma(oggetti, funzionale, ecc)
Il programmatore sviluppadirettamente a microservizi
Lo sviluppatore trasforma il suo artefatto software in un microservizioUtilizzando tool e frameworkaggiuntivi
Lo sviluppatore esegue il microservizio in un container
Lo sviluppatore può eseguire il microservizio in un container
(non necessario)
I confini di un microservizioParadigma Sistemistico Paradigma Lingustico
Un microservizio può essere il risultato della composizione di
altri microservizi
Un microservizio è un artefatto software sviluppato con un dato insieme di tecnologie
ed impachettato all'interno di un container
I microservizi sono atomici All'interno di un microservizio possono esserci altri microservizi
L'architetturaParadigma Sistemistico Paradigma linguistico
Un'architettura a microservizi è una rete di containers
Un'architettura a microservizi è una composizione di microservizi
L'architetturaParadigma Sistemistico Paradigma Linguistico
A microservice can be easily moved from inside to outside of a container (and vice
versa)
In order to bring an internal component out of a microservice, a specific programming
task must be carried out
X
Containers
Paradigma Sistemistico Paradigma Linguistico
Il container è solamente uno strumento che per l'esecuzione
Il Container è l'elemento chiave dell'archtettura
Vantaggi
Paradigma Sistemistico Linguistic paradigm
Indipendenza dallaTecnologia
Le architetture possono cambiare in modo semplice ricomponendo i
microservizi
Esecuzione semplice e scalabile
La progettazione a microservizi si traduce immediatamente in
programmazione nativa
Compatibile con lo stack del Cloud Computing
Compatibile con il paradigma sistemistico
La rivoluzione dei microservizi
Paradigma Linguistico
La rivoluzione si trova nell'intersezione tra questi due mondi
Paradigma sistemistico
Un sistema software complesso non è mai un'entità statica ma è soggetto a continue modifiche per potersi adattare agli stimoli
esterni... come il pensiero umano