SlideShare a Scribd company logo
1 of 30
Architettura a Microservizi &
Service Fabric
Massimo Bonanni
SR Consultant - ModernApps EMEA Domain - Microsoft
@massimobonanni
massimo.bonanni@microsoft.com
Agenda
Concetti di architettura a Microservizi
Approccio Microsoft ai Microservizi – Service Fabric
Modello di programmazione di Service Fabric
Conclusioni
Concetti di architettura a
Microservizi
Perchè un approccio Microservice?
Realizzare e gestire servizi scalabili
Applicazioni in continua evoluzione
Maggiore velocità di distribuzione delle nuove
funzionalità per rispondere ai requisiti del cliente
Miglior utilizzo delle risorse per abbattere
i costi di gestione
Definizione di Microservizi
Fanno una cosa sola in maniera efficiente ed efficace, sviluppati da un piccolo team di
progettazione.
Scritti in qualsiasi linguaggio di programmazione e con qualsiasi framework.
Costituiti da codice, configurazione e risorse, sottoposti al controllo delle versioni,
distribuiti e ridimensionati in maniera indipendente.
Interagiscono con altri microservizi tramite interfacce e protocolli ben definiti.
Hanno nomi univoci (URL) usati per risolvere la propria posizione.
Rimangono coerenti e disponibili in caso di errori.
Eliminazione di singoli punti di guasto: un bug in un microservizio rimane
isolato all’interno dello stesso;
Iterazioni più veloci: codice più semplice con modifiche che non impattano
tutta l’applicazione;
Scalabilità: on-demand, elastica, densità dei servizi;
Versionamento: versioning sul singolo servizio in maniera semplice;
Flessibilità del linguaggio di sviluppo: minimizza l’impegno a lungo termine
sullo stack tecnologico. Quando si sviluppa un nuovo servizio, si è liberi di
scegliere qualsiasi linguaggio di programmazione e framework (i servizi
sono disaccoppiati tra loro)
Benefici dell’architettura basata su Microservizi
Automazione spinta: mantenere più flussi di distribuzione corretti e coerenti per
tutto il ciclo di vita dell’applicazione;
Comunicazione tra i servizi: i servizi disaccoppiati hanno bisogno di un modo
efficace per comunicare senza rallentare l’intera applicazione;
Coerenza dei dati: garantire la coerenza dei dati è una sfida, sia per lo store dei
dati che per i dati in transito sulla rete;
Alta disponibilità: il tempo di attività di ogni servizio contribuisce alla disponibilità
complessiva dell’intera applicazione. Ogni servizio deve quindi avere un proprio
sistema di misure distribuite per garantire all’applicazione un ampia disponibilità;
Test: non è semplice implementare i test di integrazione. E’ necessario
automatizzare il più possibile.
Svantaggi dell’architettura basata su Microservizi
Approccio “Monolitico” Approccio Microservizi
Una applicazione a microservizi
separa le funzionalità in servizi distinti
Questo approccio consente di scalare
indipendentemente ogni servizio,
creando istanze di ognuno su
Server/VM/Container.
Una applicazione monolitica
raggruppa insieme funzionalità di un
dominio ed è normalmente separata in
layer, come web, business e data.
Viene scalata clonandola su più
Server/VM/Container.
App 1 App 2App 1
• Singolo database
• Livelli con tecnologie specifiche
I dati nelle architetture n-layer I dati nell’approccio Microservizi
• Grafo di Microservizi interconnessi
• Lo stato è all’interno del singolo Microservice
• Differenti tecnologie utilizzate
• Database per i dati «cold»
Stateful
services
Web presentation
services
Stateless
servicesSQL DB
or
No-SQL
Mobile
apps
Web Tier
Services Tier
Data Tier
Il database è condiviso
tra tutti i servizi
Stateless services with
separate stores
Ogni microservizio
possiede il proprio
modello dati!
SQL
[…]
La connessione al
database è un collo di
bottiglia
Cache Tier
L’utilizzo di una Cache
non è di aiuto
nell’ingestion di
massicce quantità di
dati (Events, IoT, etc.)
Approccio Microsoft ai
Microservizi – Service Fabric
Azure Service Fabric
Microservices
Azure
Windows
Server
Linux
Hosted Clouds
Windows
Server
Linux
Service Fabric
Private Clouds
Windows
Server
Linux
High Availability
Hyper-Scale
Hybrid Operations
High Density Rolling Upgrades
Stateful services
Low Latency
Fast startup &
shutdown
Container Orchestration
& lifecycle management
Replication &
Failover
Simple
programming
models
Load balancing
Self-healingData Partitioning
Automated Rollback
Health
Monitoring
Placement
Constraints
Il cluster
Un cluster è un insieme di macchine (virtuali o fisiche)
connesse in rete e in cui è presente il runtime di Service Fabric.
Il cluster è composto da nodi e configurabile tramite un
manifest.
Ogni nodo può avere caratteristiche
custom che permettono di
posizionare nel migliore dei modi
i servizi (constraint).
Pensato per limitare l’impatto
dei singoli guasti hardware.
Un cluster è suddiviso in
Upgrade Domain e Fault
Domain.
https://aka.ms/sfcluster
Fault Domain e Upgrade Domain
Fault Domain: è un insieme di machine che possono avere problemi
contemporaneamente. Ad esempio una singola macchina o tutte le machine
alimentate dalla stessa presa.
Upgrade Domain: un upgrade domain definisce l’insieme dei nodi che vengono
aggiornati contemporaneamente.
https://aka.ms/sfdomains
Application Model
Un Application Type è un insieme di
Service Type e definisce la struttura
dell’applicazione.
Un Application è un’istanza di un
Application Type
Il codice delle differenti application
viene eseguito in differenti processi
anche se le applicazioni girano nello
stesso nodo.
https://aka.ms/sfappmodel
I microservizi memorizzano lo stato in partizioni in modo da consentire la
scalabilità.
Una partizione contiene:
• Istanze di servizi senza stato (primarie e secondarie)
• Repliche di servizi con stato (primarie e secondarie)
Le repliche di un servizio garantiscono
l’alta disponibilità: se un’istanza o replica
di un servizio primaria non risponde,
Service Fabric promuove a primaria una
delle secondarie garantendo continuità
al servizio.
Le partizioni
https://aka.ms/sfpartitions
Development
Cluster
Modello di programmazione di
Service Fabric
Tipologie di servizi
Guest executables & guest containers
• Permette di implementare e pubblicare servizi scritti con qualsiasi framework (win32, Java, …).
Stateless Services
• Servizi il cui stato è persistito esternamente (ad esempio in Azure DB)
• Applicazioni web (ASP.NET) esistenti e worker role
Stateful Services
• Affidabilità dello stato gestita attraverso repliche e persistenza locale
• Bassa latenza
• Riducono la complessità rispetto al tradizionale approccio n-layer
Modelli di programmazione Built-In
Reliable Service : insieme di API per l’implementazione di servizi con e senza
stato.
Stateful Service : memorizzano lo stato utilizzando delle reliable
collection e sfruttando le repliche per garantire la consistenza dello
stesso.
Stateless Service : non memorizzano lo stato in repliche. Consentono di
hostare service WCF o Web
Reliable Actor : insieme di API per l’implementazione di oggetti basati sul
concetto di Actor Model.
https://aka.ms/sfprogmodel
Reliable Service
Simili ai Web Service ma forniscono alcune caratteristiche out of the box come alta
disponibilità, affidabilità, resilienza.
Basano la scalabilità sul concetto di partizione dei dati.
Possono essere Stateless o Stateful.
Lo stato è gestito da uno State Manager che fornisce API per rendere i dati affidabili e
replicati nel cluster.
I Reliable Service comunicano tra loro (e con gli Attori) tramite messaggi asincroni.
https://aka.ms/sfreliableservices
Reliable Actor
Basato su un pattern architetturale (Actor Model) pensato per realizzare un’architettura
costruita da processi indipendenti.
Ogni attore è individuato da un identificatore univoco attraverso il quale può essere
istanziato (ActorId).
Ogni attore fornisce azioni che possono essere invocate dall’esterno. Le azioni sono
processate nell’ordine in cui vengono invocate.
Generalmente Stateful (ma lo stato può essere persistente o volatile). L’affidabilità dello stato
è gestita, in maniera trasparente, dal framework.
https://aka.ms/sfreliableactors
Reliable Actor
Ha un pattern di esecuzione Single Thread: un singolo attore non è in grado di
elaborare altre richieste in arrivo finché la richiesta corrente non è terminata.
L’Actor Model è un modello matematico per il calcolo concorrente teorizzato nel
1973 da Carl Hewitt (http://aka.ms/HewittCH9Actor).
Gli Attori comunicano tra loro (e con i Reliable Service) tramite messaggi asincroni.
https://aka.ms/sfreliableactors
Reliable Actors & Services
https://github.com/massimobonanni/ServiceFabricSamples
Service Fabric nel cloud
Cosmos
DB
Service Fabric Takeaways
Service Fabric fornisce “chiavi in mano” tutte le funzionalità di
orchestrazione necessarie per i nostri servizi.
Utilizzato per molti dei servizi offerti da Azure.
Può essere eseguito sia nel Cloud che on Premise.
Può lavorare con processi, container o una combinazione dei due.
Gira su Linux e Windows.
Possibilità di utilizzo di più linguaggi/framework.
Riferimenti
Documentazione ufficiale
https://docs.microsoft.com/en-us/azure/service-fabric/
Blog ufficiale
https://blogs.msdn.microsoft.com/azureservicefabric/
Github
https://github.com/Azure/service-fabric
Build2017 - Azure Service Fabric, microservices, containers, and the road ahead
https://channel9.msdn.com/Events/Build/2017/B8106
Build2017 - Managing secure, scalable Azure Service Fabric clusters and applications
https://channel9.msdn.com/events/Build/2017/T6084
MVA - Service Fabric Patterns and Practices
https://mva.microsoft.com/en-US/training-courses/16925
MVA - Building Microservices Applications on Azure Service Fabric
https://mva.microsoft.com/en-US/training-courses/16747
Feedback Form
Aiutateci a migliorare la qualità dei nostri eventi
compilando il feedback form:
https://1drv.ms/xs/s!Au9T1EY0TwHfn6RdsXBllmc3qTesWA
Thanks to our Sponsor

More Related Content

Similar to Microservices architecture & Service Fabric

Microservices power by unikernels
Microservices power by unikernelsMicroservices power by unikernels
Microservices power by unikernelsGabriele Baldoni
 
.NET Microservices
.NET Microservices.NET Microservices
.NET MicroservicesLuca Congiu
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSopencityplatform
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...Marco Parenzan
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Marco Loregian
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP WayLuca Milan
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseAlberto Lagna
 
Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveEmanuele Della Valle
 
Aws (amazon web services) - Slide
Aws (amazon web services) - SlideAws (amazon web services) - Slide
Aws (amazon web services) - Slidealessioemireni
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del SoftwareYeser Rema
 
Le 7 sfide da affrontare nella migrazione da monolite a miniservizi
Le 7 sfide da affrontare nella migrazione da monolite a miniserviziLe 7 sfide da affrontare nella migrazione da monolite a miniservizi
Le 7 sfide da affrontare nella migrazione da monolite a miniserviziLuca Acquaviva
 
GreenVulcano ESB Technical Overview (ITA)
GreenVulcano ESB Technical Overview (ITA)GreenVulcano ESB Technical Overview (ITA)
GreenVulcano ESB Technical Overview (ITA)greenvulcano
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
Sinibaldi soa-28.02.2008
Sinibaldi soa-28.02.2008Sinibaldi soa-28.02.2008
Sinibaldi soa-28.02.2008sinibaldi
 

Similar to Microservices architecture & Service Fabric (20)

Microservices power by unikernels
Microservices power by unikernelsMicroservices power by unikernels
Microservices power by unikernels
 
.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Che cosa sono i microservizi?
Che cosa sono i microservizi?Che cosa sono i microservizi?
Che cosa sono i microservizi?
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
 
Corso di servlet jsp e pattern
Corso di servlet jsp e patternCorso di servlet jsp e pattern
Corso di servlet jsp e pattern
 
Un'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterpriseUn'architettura di riferimento per applicazioni enterprise
Un'architettura di riferimento per applicazioni enterprise
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
 
Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettive
 
Aws (amazon web services) - Slide
Aws (amazon web services) - SlideAws (amazon web services) - Slide
Aws (amazon web services) - Slide
 
Qualità del Software
Qualità del SoftwareQualità del Software
Qualità del Software
 
Virtual Agency
Virtual AgencyVirtual Agency
Virtual Agency
 
Le 7 sfide da affrontare nella migrazione da monolite a miniservizi
Le 7 sfide da affrontare nella migrazione da monolite a miniserviziLe 7 sfide da affrontare nella migrazione da monolite a miniservizi
Le 7 sfide da affrontare nella migrazione da monolite a miniservizi
 
GreenVulcano ESB Technical Overview (ITA)
GreenVulcano ESB Technical Overview (ITA)GreenVulcano ESB Technical Overview (ITA)
GreenVulcano ESB Technical Overview (ITA)
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
Parliamo di SOA
Parliamo di SOAParliamo di SOA
Parliamo di SOA
 
Sinibaldi soa-28.02.2008
Sinibaldi soa-28.02.2008Sinibaldi soa-28.02.2008
Sinibaldi soa-28.02.2008
 
Corso Java 3 - WEB
Corso Java 3 - WEBCorso Java 3 - WEB
Corso Java 3 - WEB
 

More from Massimo Bonanni

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Massimo Bonanni
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure FunctionsMassimo Bonanni
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsMassimo Bonanni
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Massimo Bonanni
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure FunctionsMassimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Massimo Bonanni
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsMassimo Bonanni
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Massimo Bonanni
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftMassimo Bonanni
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Massimo Bonanni
 

More from Massimo Bonanni (20)

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure Functions
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure Functions
 
IoT in salsa serverless
IoT in salsa serverlessIoT in salsa serverless
IoT in salsa serverless
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure Functions
 
IoT in salsa Serverless
IoT in salsa ServerlessIoT in salsa Serverless
IoT in salsa Serverless
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable Functions
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!
 

Microservices architecture & Service Fabric

  • 1.
  • 2. Architettura a Microservizi & Service Fabric Massimo Bonanni SR Consultant - ModernApps EMEA Domain - Microsoft @massimobonanni massimo.bonanni@microsoft.com
  • 3. Agenda Concetti di architettura a Microservizi Approccio Microsoft ai Microservizi – Service Fabric Modello di programmazione di Service Fabric Conclusioni
  • 4. Concetti di architettura a Microservizi
  • 5. Perchè un approccio Microservice? Realizzare e gestire servizi scalabili Applicazioni in continua evoluzione Maggiore velocità di distribuzione delle nuove funzionalità per rispondere ai requisiti del cliente Miglior utilizzo delle risorse per abbattere i costi di gestione
  • 6. Definizione di Microservizi Fanno una cosa sola in maniera efficiente ed efficace, sviluppati da un piccolo team di progettazione. Scritti in qualsiasi linguaggio di programmazione e con qualsiasi framework. Costituiti da codice, configurazione e risorse, sottoposti al controllo delle versioni, distribuiti e ridimensionati in maniera indipendente. Interagiscono con altri microservizi tramite interfacce e protocolli ben definiti. Hanno nomi univoci (URL) usati per risolvere la propria posizione. Rimangono coerenti e disponibili in caso di errori.
  • 7. Eliminazione di singoli punti di guasto: un bug in un microservizio rimane isolato all’interno dello stesso; Iterazioni più veloci: codice più semplice con modifiche che non impattano tutta l’applicazione; Scalabilità: on-demand, elastica, densità dei servizi; Versionamento: versioning sul singolo servizio in maniera semplice; Flessibilità del linguaggio di sviluppo: minimizza l’impegno a lungo termine sullo stack tecnologico. Quando si sviluppa un nuovo servizio, si è liberi di scegliere qualsiasi linguaggio di programmazione e framework (i servizi sono disaccoppiati tra loro) Benefici dell’architettura basata su Microservizi
  • 8. Automazione spinta: mantenere più flussi di distribuzione corretti e coerenti per tutto il ciclo di vita dell’applicazione; Comunicazione tra i servizi: i servizi disaccoppiati hanno bisogno di un modo efficace per comunicare senza rallentare l’intera applicazione; Coerenza dei dati: garantire la coerenza dei dati è una sfida, sia per lo store dei dati che per i dati in transito sulla rete; Alta disponibilità: il tempo di attività di ogni servizio contribuisce alla disponibilità complessiva dell’intera applicazione. Ogni servizio deve quindi avere un proprio sistema di misure distribuite per garantire all’applicazione un ampia disponibilità; Test: non è semplice implementare i test di integrazione. E’ necessario automatizzare il più possibile. Svantaggi dell’architettura basata su Microservizi
  • 9. Approccio “Monolitico” Approccio Microservizi Una applicazione a microservizi separa le funzionalità in servizi distinti Questo approccio consente di scalare indipendentemente ogni servizio, creando istanze di ognuno su Server/VM/Container. Una applicazione monolitica raggruppa insieme funzionalità di un dominio ed è normalmente separata in layer, come web, business e data. Viene scalata clonandola su più Server/VM/Container. App 1 App 2App 1
  • 10. • Singolo database • Livelli con tecnologie specifiche I dati nelle architetture n-layer I dati nell’approccio Microservizi • Grafo di Microservizi interconnessi • Lo stato è all’interno del singolo Microservice • Differenti tecnologie utilizzate • Database per i dati «cold» Stateful services Web presentation services Stateless servicesSQL DB or No-SQL Mobile apps Web Tier Services Tier Data Tier Il database è condiviso tra tutti i servizi Stateless services with separate stores Ogni microservizio possiede il proprio modello dati! SQL […] La connessione al database è un collo di bottiglia Cache Tier L’utilizzo di una Cache non è di aiuto nell’ingestion di massicce quantità di dati (Events, IoT, etc.)
  • 12. Azure Service Fabric Microservices Azure Windows Server Linux Hosted Clouds Windows Server Linux Service Fabric Private Clouds Windows Server Linux High Availability Hyper-Scale Hybrid Operations High Density Rolling Upgrades Stateful services Low Latency Fast startup & shutdown Container Orchestration & lifecycle management Replication & Failover Simple programming models Load balancing Self-healingData Partitioning Automated Rollback Health Monitoring Placement Constraints
  • 13. Il cluster Un cluster è un insieme di macchine (virtuali o fisiche) connesse in rete e in cui è presente il runtime di Service Fabric. Il cluster è composto da nodi e configurabile tramite un manifest. Ogni nodo può avere caratteristiche custom che permettono di posizionare nel migliore dei modi i servizi (constraint). Pensato per limitare l’impatto dei singoli guasti hardware. Un cluster è suddiviso in Upgrade Domain e Fault Domain. https://aka.ms/sfcluster
  • 14. Fault Domain e Upgrade Domain Fault Domain: è un insieme di machine che possono avere problemi contemporaneamente. Ad esempio una singola macchina o tutte le machine alimentate dalla stessa presa. Upgrade Domain: un upgrade domain definisce l’insieme dei nodi che vengono aggiornati contemporaneamente. https://aka.ms/sfdomains
  • 15. Application Model Un Application Type è un insieme di Service Type e definisce la struttura dell’applicazione. Un Application è un’istanza di un Application Type Il codice delle differenti application viene eseguito in differenti processi anche se le applicazioni girano nello stesso nodo. https://aka.ms/sfappmodel
  • 16. I microservizi memorizzano lo stato in partizioni in modo da consentire la scalabilità. Una partizione contiene: • Istanze di servizi senza stato (primarie e secondarie) • Repliche di servizi con stato (primarie e secondarie) Le repliche di un servizio garantiscono l’alta disponibilità: se un’istanza o replica di un servizio primaria non risponde, Service Fabric promuove a primaria una delle secondarie garantendo continuità al servizio. Le partizioni https://aka.ms/sfpartitions
  • 18. Modello di programmazione di Service Fabric
  • 19. Tipologie di servizi Guest executables & guest containers • Permette di implementare e pubblicare servizi scritti con qualsiasi framework (win32, Java, …). Stateless Services • Servizi il cui stato è persistito esternamente (ad esempio in Azure DB) • Applicazioni web (ASP.NET) esistenti e worker role Stateful Services • Affidabilità dello stato gestita attraverso repliche e persistenza locale • Bassa latenza • Riducono la complessità rispetto al tradizionale approccio n-layer
  • 20. Modelli di programmazione Built-In Reliable Service : insieme di API per l’implementazione di servizi con e senza stato. Stateful Service : memorizzano lo stato utilizzando delle reliable collection e sfruttando le repliche per garantire la consistenza dello stesso. Stateless Service : non memorizzano lo stato in repliche. Consentono di hostare service WCF o Web Reliable Actor : insieme di API per l’implementazione di oggetti basati sul concetto di Actor Model. https://aka.ms/sfprogmodel
  • 21. Reliable Service Simili ai Web Service ma forniscono alcune caratteristiche out of the box come alta disponibilità, affidabilità, resilienza. Basano la scalabilità sul concetto di partizione dei dati. Possono essere Stateless o Stateful. Lo stato è gestito da uno State Manager che fornisce API per rendere i dati affidabili e replicati nel cluster. I Reliable Service comunicano tra loro (e con gli Attori) tramite messaggi asincroni. https://aka.ms/sfreliableservices
  • 22. Reliable Actor Basato su un pattern architetturale (Actor Model) pensato per realizzare un’architettura costruita da processi indipendenti. Ogni attore è individuato da un identificatore univoco attraverso il quale può essere istanziato (ActorId). Ogni attore fornisce azioni che possono essere invocate dall’esterno. Le azioni sono processate nell’ordine in cui vengono invocate. Generalmente Stateful (ma lo stato può essere persistente o volatile). L’affidabilità dello stato è gestita, in maniera trasparente, dal framework. https://aka.ms/sfreliableactors
  • 23. Reliable Actor Ha un pattern di esecuzione Single Thread: un singolo attore non è in grado di elaborare altre richieste in arrivo finché la richiesta corrente non è terminata. L’Actor Model è un modello matematico per il calcolo concorrente teorizzato nel 1973 da Carl Hewitt (http://aka.ms/HewittCH9Actor). Gli Attori comunicano tra loro (e con i Reliable Service) tramite messaggi asincroni. https://aka.ms/sfreliableactors
  • 24. Reliable Actors & Services https://github.com/massimobonanni/ServiceFabricSamples
  • 25. Service Fabric nel cloud Cosmos DB
  • 26. Service Fabric Takeaways Service Fabric fornisce “chiavi in mano” tutte le funzionalità di orchestrazione necessarie per i nostri servizi. Utilizzato per molti dei servizi offerti da Azure. Può essere eseguito sia nel Cloud che on Premise. Può lavorare con processi, container o una combinazione dei due. Gira su Linux e Windows. Possibilità di utilizzo di più linguaggi/framework.
  • 27.
  • 28. Riferimenti Documentazione ufficiale https://docs.microsoft.com/en-us/azure/service-fabric/ Blog ufficiale https://blogs.msdn.microsoft.com/azureservicefabric/ Github https://github.com/Azure/service-fabric Build2017 - Azure Service Fabric, microservices, containers, and the road ahead https://channel9.msdn.com/Events/Build/2017/B8106 Build2017 - Managing secure, scalable Azure Service Fabric clusters and applications https://channel9.msdn.com/events/Build/2017/T6084 MVA - Service Fabric Patterns and Practices https://mva.microsoft.com/en-US/training-courses/16925 MVA - Building Microservices Applications on Azure Service Fabric https://mva.microsoft.com/en-US/training-courses/16747
  • 29. Feedback Form Aiutateci a migliorare la qualità dei nostri eventi compilando il feedback form: https://1drv.ms/xs/s!Au9T1EY0TwHfn6RdsXBllmc3qTesWA
  • 30. Thanks to our Sponsor

Editor's Notes

  1. Link: https://1drv.ms/xs/s!Au9T1EY0TwHfn6RdsXBllmc3qTesWA