SlideShare a Scribd company logo
La rivoluzione dei microservizi
Il 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
Affiancamento
Consulenza
Prodotti
Cliente
Il Sistema Informativo al centro
Processi Organizzativi Dati Organizzativi
Organizzazione
Contesto economico
Strategie di Business
Serve capacità di adattamento
Contesto economico
1)Riduzione della visibilità
a lungo termine.
2) Internet come piazza abilitante
al commercio
1) Aumento della pressione esterna
2) Richiesta di maggiore capacità
di adattamento in tempi brevi
Interveniamo qui
Com'è il sistema ora…
Sistema amministrativo
Web
Dati Specifici di
Applicazioni terze
Il sistema amministrativo è spesso il cuore dell'IT
I processi ed i dati organizzativi IT
si trovano sparsi in diverse
porzioni del sistema:
1) Dentro il sistema amministrativo
2) Nei processi di integrazione
3) Dentro applicativi di terze parti
I processi ed i dati organizzativi IT
si trovano sparsi in diverse
porzioni del sistema:
1) Dentro il sistema amministrativo
2) Nei processi di integrazione
3) Dentro applicativi di terze parti
La gestione dei processi
organizzativi così come la gestione
dei dati, richiede impegno in termini
di:
1) Tempo
2) Risorse umane
3) 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 C
Applicativo
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
01010100010100010010
01001001010001010000
10100100100101001010
10100101001001010010
01010100010100010010
01001001010001010000
10100100100101001010
10100101001001010010
01010100010100010010
01001001010001010000
10100100100101001010
10100101001001010010
01010100010100010010
01001001010001010000
10100100100101001010
10100101001001010010
01010100010100010010
01001001010001010000
MACCHINA
ORG 2050H
MOV DPTR,#CNT
MOV A,#INIT
MOVX @DPTR,A
MOV SP,#2FH
CLR RS0
CLR RS1
ACALL SERIAL
MOV
DPTR,#HEADING
ACALL STRING
ORG 2050H
MOV DPTR,#CNT
MOV A,#INIT
MOVX @DPTR,A
MOV 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 integersn",n);
for (c = 1; c <= n; c++)
{
scanf("%d",&value);
sum = sum + value;
}
printf("Sum of entered integers = %dn",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 aggiuntivinon 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 aun 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
Autosufficienza
Un 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 protocol
Si possono
sviluppare protocolli
custom specifici
L'interdipendenza tra linguaggi e
supporti
Memorie
meccaniche
0101010
1940
Assembler
1954Memorie
elettroniche
Memorie
TTL 1973
C
Multi
piattaforma
Cloud
2010
1991
Java
IoT
2030
Le due vie ai microservizi
Programmazione: 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 Sistemistico
vs
Paradigma Lingustico
Il 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 programma
seguendo un altro paradigma
(oggetti, funzionale, ecc)
Il programmatore sviluppa
direttamente a microservizi
Lo sviluppatore trasforma il suo
artefatto software in un microservizio
Utilizzando tool e framework
aggiuntivi
Lo sviluppatore esegue il
microservizio in un container
Lo sviluppatore può eseguire il
microservizio in un container
(non necessario)
I confini di un microservizio
Paradigma 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'architettura
Paradigma Sistemistico Paradigma linguistico
Un'architettura a microservizi è una rete di
containers
Un'architettura a microservizi è una
composizione di microservizi
L'architettura
Paradigma 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 dalla
Tecnologia
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

More Related Content

What's hot

Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
Amazon Web Services
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
QAware GmbH
 
Build tools introduction
Build tools introductionBuild tools introduction
Build tools introduction
vodQA
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
Morvana Bonin
 
CQRS in 4 steps
CQRS in 4 stepsCQRS in 4 steps
CQRS in 4 steps
Radosław Maziarka
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
Paul Mooney
 
AWS Elastic Container Registry
AWS Elastic Container RegistryAWS Elastic Container Registry
AWS Elastic Container Registry
Richard Boyd, II
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
MongoDB
 
Docker & kubernetes
Docker & kubernetesDocker & kubernetes
Docker & kubernetes
NexThoughts Technologies
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
Žilvinas Kuusas
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
Eueung Mulyana
 
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Sargis Sargsyan
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Martin Danielsson
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
Matheus Fidelis
 
Building a Kubernetes App with Amazon EKS
Building a Kubernetes App with Amazon EKSBuilding a Kubernetes App with Amazon EKS
Building a Kubernetes App with Amazon EKS
DevOps.com
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
André Justi
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker Compose
Ajeet Singh Raina
 
Protecting Apps from Hacks in Kubernetes with NGINX
Protecting Apps from Hacks in Kubernetes with NGINXProtecting Apps from Hacks in Kubernetes with NGINX
Protecting Apps from Hacks in Kubernetes with NGINX
NGINX, Inc.
 
Building a scalable microservice architecture with envoy, kubernetes and istio
Building a scalable microservice architecture with envoy, kubernetes and istioBuilding a scalable microservice architecture with envoy, kubernetes and istio
Building a scalable microservice architecture with envoy, kubernetes and istio
SAMIR BEHARA
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
Nguyen Tung
 

What's hot (20)

Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Build tools introduction
Build tools introductionBuild tools introduction
Build tools introduction
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
CQRS in 4 steps
CQRS in 4 stepsCQRS in 4 steps
CQRS in 4 steps
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
 
AWS Elastic Container Registry
AWS Elastic Container RegistryAWS Elastic Container Registry
AWS Elastic Container Registry
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
 
Docker & kubernetes
Docker & kubernetesDocker & kubernetes
Docker & kubernetes
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Building a Kubernetes App with Amazon EKS
Building a Kubernetes App with Amazon EKSBuilding a Kubernetes App with Amazon EKS
Building a Kubernetes App with Amazon EKS
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker Compose
 
Protecting Apps from Hacks in Kubernetes with NGINX
Protecting Apps from Hacks in Kubernetes with NGINXProtecting Apps from Hacks in Kubernetes with NGINX
Protecting Apps from Hacks in Kubernetes with NGINX
 
Building a scalable microservice architecture with envoy, kubernetes and istio
Building a scalable microservice architecture with envoy, kubernetes and istioBuilding a scalable microservice architecture with envoy, kubernetes and istio
Building a scalable microservice architecture with envoy, kubernetes and istio
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 

Viewers also liked

Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
italianaSoftware
 
Genesi di una tecnologia, dalla ricerca all'industria...
Genesi di una tecnologia, dalla ricerca all'industria...Genesi di una tecnologia, dalla ricerca all'industria...
Genesi di una tecnologia, dalla ricerca all'industria...
italianaSoftware
 
Industria 4.0 - Come verrà rivoluzionata l'industria italiana
Industria 4.0 - Come verrà rivoluzionata l'industria italianaIndustria 4.0 - Come verrà rivoluzionata l'industria italiana
Industria 4.0 - Come verrà rivoluzionata l'industria italiana
italianaSoftware
 
Microservizi, scenari del prossimo e del lontano futuro
Microservizi, scenari del prossimo e del lontano futuroMicroservizi, scenari del prossimo e del lontano futuro
Microservizi, scenari del prossimo e del lontano futuro
italianaSoftware
 
Devops, Cloud e Container
Devops, Cloud e ContainerDevops, Cloud e Container
Devops, Cloud e Container
italianaSoftware
 
A Framework for Rule-Based Dynamic Adaptation
A Framework for Rule-Based Dynamic AdaptationA Framework for Rule-Based Dynamic Adaptation
A Framework for Rule-Based Dynamic Adaptation
IMDS2014
 
Mastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesMastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to Microservices
C4Media
 
Che cosa sono i microservizi?
Che cosa sono i microservizi?Che cosa sono i microservizi?
Che cosa sono i microservizi?
Salvatore Cordiano
 
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURESVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
DotNetCampus
 
Communicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScriptCommunicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScript
Max Klymyshyn
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
mvetro
 
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonPiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
Max Klymyshyn
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
Roberto Messora
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai Microservices
Daniele Mondello
 
Embedding Java code in a Jolie Service
Embedding Java code in a Jolie ServiceEmbedding Java code in a Jolie Service
Embedding Java code in a Jolie Service
JolieLang
 
Running Javascript as a microservice inside of Jolie
Running Javascript as a microservice inside of JolieRunning Javascript as a microservice inside of Jolie
Running Javascript as a microservice inside of Jolie
JolieLang
 
Microservices at Netflix
Microservices at NetflixMicroservices at Netflix
Microservices at Netflix
Katharina Probst
 
IoT and Microservice
IoT and MicroserviceIoT and Microservice
IoT and Microservice
kgshukla
 
Vision of a microservice revolution
Vision of a microservice revolutionVision of a microservice revolution
Vision of a microservice revolution
JolieLang
 
Symfony in microservice architecture
Symfony in microservice architectureSymfony in microservice architecture
Symfony in microservice architecture
Daniele D'Angeli
 

Viewers also liked (20)

Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
Implementazione di una soluzione a microservizi: benifici organizzativi ed ec...
 
Genesi di una tecnologia, dalla ricerca all'industria...
Genesi di una tecnologia, dalla ricerca all'industria...Genesi di una tecnologia, dalla ricerca all'industria...
Genesi di una tecnologia, dalla ricerca all'industria...
 
Industria 4.0 - Come verrà rivoluzionata l'industria italiana
Industria 4.0 - Come verrà rivoluzionata l'industria italianaIndustria 4.0 - Come verrà rivoluzionata l'industria italiana
Industria 4.0 - Come verrà rivoluzionata l'industria italiana
 
Microservizi, scenari del prossimo e del lontano futuro
Microservizi, scenari del prossimo e del lontano futuroMicroservizi, scenari del prossimo e del lontano futuro
Microservizi, scenari del prossimo e del lontano futuro
 
Devops, Cloud e Container
Devops, Cloud e ContainerDevops, Cloud e Container
Devops, Cloud e Container
 
A Framework for Rule-Based Dynamic Adaptation
A Framework for Rule-Based Dynamic AdaptationA Framework for Rule-Based Dynamic Adaptation
A Framework for Rule-Based Dynamic Adaptation
 
Mastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesMastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to Microservices
 
Che cosa sono i microservizi?
Che cosa sono i microservizi?Che cosa sono i microservizi?
Che cosa sono i microservizi?
 
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURESVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
SVILUPPARE E GESTIRE ARCHITETTURE A MICROSERVIZI SU AZURE
 
Communicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScriptCommunicating Sequential Processes (CSP) in JavaScript
Communicating Sequential Processes (CSP) in JavaScript
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
 
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in PythonPiterPy 2016: Parallelization, Aggregation and Validation of API in Python
PiterPy 2016: Parallelization, Aggregation and Validation of API in Python
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai Microservices
 
Embedding Java code in a Jolie Service
Embedding Java code in a Jolie ServiceEmbedding Java code in a Jolie Service
Embedding Java code in a Jolie Service
 
Running Javascript as a microservice inside of Jolie
Running Javascript as a microservice inside of JolieRunning Javascript as a microservice inside of Jolie
Running Javascript as a microservice inside of Jolie
 
Microservices at Netflix
Microservices at NetflixMicroservices at Netflix
Microservices at Netflix
 
IoT and Microservice
IoT and MicroserviceIoT and Microservice
IoT and Microservice
 
Vision of a microservice revolution
Vision of a microservice revolutionVision of a microservice revolution
Vision of a microservice revolution
 
Symfony in microservice architecture
Symfony in microservice architectureSymfony in microservice architecture
Symfony in microservice architecture
 

Similar to La rivoluzione dei Microservizi

Open source un'opportunità di business
Open source un'opportunità di businessOpen source un'opportunità di business
Open source un'opportunità di business
Roberto Falla
 
La rivoluzione del web 2.0
La rivoluzione del web 2.0La rivoluzione del web 2.0
La rivoluzione del web 2.0
Luca Mascaro
 
Slide sull'Open Source
Slide sull'Open SourceSlide sull'Open Source
Slide sull'Open Source
openfrog
 
Applicazioni ICT
Applicazioni ICTApplicazioni ICT
Applicazioni ICT
Alessandro Trentin
 
Le app
Le appLe app
Il modello collaborativo dell'open source per lo sviluppo software
Il modello collaborativo dell'open source per lo sviluppo softwareIl modello collaborativo dell'open source per lo sviluppo software
Il modello collaborativo dell'open source per lo sviluppo software
Federico Gobbo
 
Nuovi metodi e linguaggi per la comunicazione degli adolescenti
Nuovi metodi e linguaggi per la comunicazione degli adolescentiNuovi metodi e linguaggi per la comunicazione degli adolescenti
Nuovi metodi e linguaggi per la comunicazione degli adolescenti
Dino Amenduni
 
Web service persino nei sistemi embedeed
Web service persino nei sistemi embedeedWeb service persino nei sistemi embedeed
Web service persino nei sistemi embedeedAntonio Cafiero
 
- Codemotion Rome 2015
- Codemotion Rome 2015- Codemotion Rome 2015
- Codemotion Rome 2015Codemotion
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Giovanni Buffa
 
Applicazioni e Social Network: un nuovo unico mondo
Applicazioni e Social Network: un nuovo unico mondoApplicazioni e Social Network: un nuovo unico mondo
Applicazioni e Social Network: un nuovo unico mondo
Sara Cassina
 
Workshop di co-progettazione: open data, wi-fi, inclusione digitale
Workshop di co-progettazione: open data, wi-fi, inclusione digitaleWorkshop di co-progettazione: open data, wi-fi, inclusione digitale
Workshop di co-progettazione: open data, wi-fi, inclusione digitale
Regione Emilia-Romagna
 
Aziende e il Web 2.0: cambiare il modo di pensare
Aziende e il Web 2.0: cambiare il modo di pensareAziende e il Web 2.0: cambiare il modo di pensare
Aziende e il Web 2.0: cambiare il modo di pensare
Antonio Pavolini
 
Micro Applicazioni Mobile
Micro Applicazioni MobileMicro Applicazioni Mobile
Micro Applicazioni Mobile
valentinavalentina
 
Digital workplace: parte 3°
Digital workplace: parte 3°Digital workplace: parte 3°
Digital workplace: parte 3°
Alvaro Busetti
 
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...guestfe59a4
 
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...guestfe59a4
 
Software development industriale
Software development industrialeSoftware development industriale
Software development industrialeguestfe59a4
 
Cefriel Della Valle Web 2.0 And Soa Bif
Cefriel Della Valle Web 2.0 And Soa BifCefriel Della Valle Web 2.0 And Soa Bif
Cefriel Della Valle Web 2.0 And Soa BifEmanuele Della Valle
 

Similar to La rivoluzione dei Microservizi (20)

Open source un'opportunità di business
Open source un'opportunità di businessOpen source un'opportunità di business
Open source un'opportunità di business
 
La rivoluzione del web 2.0
La rivoluzione del web 2.0La rivoluzione del web 2.0
La rivoluzione del web 2.0
 
Slide sull'Open Source
Slide sull'Open SourceSlide sull'Open Source
Slide sull'Open Source
 
Applicazioni ICT
Applicazioni ICTApplicazioni ICT
Applicazioni ICT
 
Le app
Le appLe app
Le app
 
Il modello collaborativo dell'open source per lo sviluppo software
Il modello collaborativo dell'open source per lo sviluppo softwareIl modello collaborativo dell'open source per lo sviluppo software
Il modello collaborativo dell'open source per lo sviluppo software
 
Nuovi metodi e linguaggi per la comunicazione degli adolescenti
Nuovi metodi e linguaggi per la comunicazione degli adolescentiNuovi metodi e linguaggi per la comunicazione degli adolescenti
Nuovi metodi e linguaggi per la comunicazione degli adolescenti
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 
Web service persino nei sistemi embedeed
Web service persino nei sistemi embedeedWeb service persino nei sistemi embedeed
Web service persino nei sistemi embedeed
 
- Codemotion Rome 2015
- Codemotion Rome 2015- Codemotion Rome 2015
- Codemotion Rome 2015
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
 
Applicazioni e Social Network: un nuovo unico mondo
Applicazioni e Social Network: un nuovo unico mondoApplicazioni e Social Network: un nuovo unico mondo
Applicazioni e Social Network: un nuovo unico mondo
 
Workshop di co-progettazione: open data, wi-fi, inclusione digitale
Workshop di co-progettazione: open data, wi-fi, inclusione digitaleWorkshop di co-progettazione: open data, wi-fi, inclusione digitale
Workshop di co-progettazione: open data, wi-fi, inclusione digitale
 
Aziende e il Web 2.0: cambiare il modo di pensare
Aziende e il Web 2.0: cambiare il modo di pensareAziende e il Web 2.0: cambiare il modo di pensare
Aziende e il Web 2.0: cambiare il modo di pensare
 
Micro Applicazioni Mobile
Micro Applicazioni MobileMicro Applicazioni Mobile
Micro Applicazioni Mobile
 
Digital workplace: parte 3°
Digital workplace: parte 3°Digital workplace: parte 3°
Digital workplace: parte 3°
 
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
 
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...C:\documents and settings\inzerillo\desktop\units\software development nel mo...
C:\documents and settings\inzerillo\desktop\units\software development nel mo...
 
Software development industriale
Software development industrialeSoftware development industriale
Software development industriale
 
Cefriel Della Valle Web 2.0 And Soa Bif
Cefriel Della Valle Web 2.0 And Soa BifCefriel Della Valle Web 2.0 And Soa Bif
Cefriel Della Valle Web 2.0 And Soa Bif
 

La rivoluzione dei Microservizi

  • 1. La rivoluzione dei microservizi Il nuovo paradigma di progettazione architetturale che cambierà i vostri sistemi IT rendendoli più flessibili e più dinamici Meeting On Microservices - Bologna, 20/12/2016
  • 3. Il Sistema Informativo al centro Processi Organizzativi Dati Organizzativi Organizzazione Contesto economico Strategie di Business
  • 4. Serve capacità di adattamento Contesto economico 1)Riduzione della visibilità a lungo termine. 2) Internet come piazza abilitante al commercio 1) Aumento della pressione esterna 2) Richiesta di maggiore capacità di adattamento in tempi brevi Interveniamo qui
  • 5. Com'è il sistema ora… Sistema amministrativo Web Dati Specifici di Applicazioni terze Il sistema amministrativo è spesso il cuore dell'IT I processi ed i dati organizzativi IT si trovano sparsi in diverse porzioni del sistema: 1) Dentro il sistema amministrativo 2) Nei processi di integrazione 3) Dentro applicativi di terze parti I processi ed i dati organizzativi IT si trovano sparsi in diverse porzioni del sistema: 1) Dentro il sistema amministrativo 2) Nei processi di integrazione 3) Dentro applicativi di terze parti La gestione dei processi organizzativi così come la gestione dei dati, richiede impegno in termini di: 1) Tempo 2) Risorse umane 3) Risorse economiche (Consulenze, prodotti,...)
  • 6. Come dovrebbe essere? Un sistema altamente adattivo e flessibile dovrebbe essere composto da tanti componenti interdipendenti ciascuno dei quali offre funzionalità ben delineate
  • 7. Architettura logica a strati Sorgenti di dati Processi base Processi di business API Applicativi
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. Microservices - Scalabilità μS A μS B μS C μS Main Applicativo monolitico Lib A Lib B Lib C Applicativo monolitico Lib A Lib B Lib CApplicativo monolitico Lib A Lib B Lib C μS B μS C μS Main μS B μS B
  • 12. Microservices - Deployment μS A μS B μS C μS Main Applicativo monolitico Lib A Lib B Lib C
  • 13. Microservices Resistenza agli errori Applicativo monolitico Lib A Lib B Lib C μS A μS B μS C μS Main μS C'
  • 14. Microservices - Monitoring Applicativo monolitico Lib A Lib B Lib C μS A μS B μS C μS Main LOG Logger
  • 15. I microservizi come soluzione Sorgenti di dati MICROSERVIZI MICROSERVIZI API Applicativi
  • 16. 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
  • 17. Perché un linguaggio? ANNO 2016 Ho comprato uno smartphone nuovo con sistema operativo Android e connessione ad internet
  • 18. Perché un linguaggio? ANNO 1800? Ho comprato uno smartphone nuovo con sistema operativo Android e connessione ad internet
  • 19. 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
  • 20. 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
  • 21. Il linguaggi di programmazione 01010100010100010010 01001001010001010000 10100100100101001010 10100101001001010010 01010100010100010010 01001001010001010000 10100100100101001010 10100101001001010010 01010100010100010010 01001001010001010000 10100100100101001010 10100101001001010010 01010100010100010010 01001001010001010000 10100100100101001010 10100101001001010010 01010100010100010010 01001001010001010000 MACCHINA ORG 2050H MOV DPTR,#CNT MOV A,#INIT MOVX @DPTR,A MOV SP,#2FH CLR RS0 CLR RS1 ACALL SERIAL MOV DPTR,#HEADING ACALL STRING ORG 2050H MOV DPTR,#CNT MOV A,#INIT MOVX @DPTR,A MOV 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 integersn",n); for (c = 1; c <= n; c++) { scanf("%d",&value); sum = sum + value; } printf("Sum of entered integers = %dn",sum); return 0; }
  • 22. 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
  • 23. 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 aggiuntivinon 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 aun microservizio jolie non è legato a nessun protocollo di comunicazione in particolarenessun protocollo di comunicazione in particolare
  • 24. 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
  • 28. Autosufficienza Un 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
  • 29. Importazione di codice Legacy Legacy Code
  • 31. L'interdipendenza tra linguaggi e supporti Memorie meccaniche 0101010 1940 Assembler 1954Memorie elettroniche Memorie TTL 1973 C Multi piattaforma Cloud 2010 1991 Java IoT 2030
  • 32. Le due vie ai microservizi Programmazione: 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.
  • 33. Paradigma Sistemistico vs Paradigma Lingustico Il 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.
  • 34. Catena produttiva del software DESIGN Paradigma sistemistico Paradigma linguistico DEVELOPMENT PACKAGING DEPLOYMENT Il progettista pensa a microservizi Il progettista pensa a microservizi Lo sviluppatore programma seguendo un altro paradigma (oggetti, funzionale, ecc) Il programmatore sviluppa direttamente a microservizi Lo sviluppatore trasforma il suo artefatto software in un microservizio Utilizzando tool e framework aggiuntivi Lo sviluppatore esegue il microservizio in un container Lo sviluppatore può eseguire il microservizio in un container (non necessario)
  • 35. I confini di un microservizio Paradigma 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
  • 36. L'architettura Paradigma Sistemistico Paradigma linguistico Un'architettura a microservizi è una rete di containers Un'architettura a microservizi è una composizione di microservizi
  • 37. L'architettura Paradigma 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
  • 38. Containers Paradigma Sistemistico Paradigma Linguistico Il container è solamente uno strumento che per l'esecuzione Il Container è l'elemento chiave dell'archtettura
  • 39. Vantaggi Paradigma Sistemistico Linguistic paradigm Indipendenza dalla Tecnologia 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
  • 40. La rivoluzione dei microservizi Paradigma Linguistico La rivoluzione si trova nell'intersezione tra questi due mondi Paradigma sistemistico
  • 41. Un sistema software complesso non è mai un'entità statica ma è soggetto a continue modifiche per potersi adattare agli stimoli esterni... come il pensiero umano