Service Fabric: la potenza dei micro servizi
-
Upload
massimo-bonanni -
Category
Technology
-
view
92 -
download
0
Transcript of Service Fabric: la potenza dei micro servizi
Service Fabric - La potenza dei MicroServiziMassimo BonanniMicrosoft Senior Consultant – EMEA Modern App Domain
[email protected]@massimobonanni
Agenda• Perchè l’approccio a Microservizi• Azure Service Fabric•Modello di programmazione di Service Fabric• Funzionalità di orchestrazione
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
Un microservice…• Fa una cosa sola in maniera ottimale• Può essere sviluppato da un piccolo team• Può essere implementato con differenti linguaggi o framework• Comunica attraverso interfacce e protocolli ben definiti• Ha un nome logico univoco (URI)• Ha codice e configurazione (ed eventualmente stato) indipendenti• Può scalare in modo indipendente• Può essere aggiornato in modo indipendente
• Garantisce consistenza e disponibilità anche in presenza di guasti o malfunzionamenti
• Viene scalata clonandola su più Server/VM/Container.
Approccio “Monolitico” Approccio Microservice• 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.
App 1 App 2App 1
Architettura
• Singolo database• Livelli con tecnologie
specifiche
Approccio “Monolitico” Approccio a Microservizi• Grafo di Microservizi
interconnessi• Lo stato è all’interno del singolo
Microservice• Differenti tecnologie utilizzate
stateless services
stateless services with separate stores
stateful services
stateless presentation services
Stato
Principali caratteristiche dei Microservice
Unità singola di elaborazione. Debolmente accoppiato. Fa bene una cosa.
Piccolo
Può essere implementato con qualsiasi linguaggio di programmazione e con qualsiasi framework.
Cross-plattform
Rimane consistente e disponibile anche in caso di guasti o malfunzionamenti.
Resiliente
Il modello di comunicazione si basa sui messaggi ben definiti.
Orientato ai messaggi
Si compone di codice e stato che hanno versione, distribuzione e scalabilità indipendenti.
Gestibile
Ha un nome logico univoco (URI) che può essere risolto.
Raggiungibile
Principali funzionalità infrastrutturali
Unità di deploy che può essere versionata, distribuita e scalata in maniera indipendente.
Packaging
Garantisce continuità dei servizi erogati.
High Availability
Gestisce il ciclo di vita di ogni servizio della piattaforma.
Orchestration & lifecycle management
Consente di eseguire update continui dei servizi erogati.
Aggiornamenti continui
Alto numero di servizi all’interno di una stessa unità di calcolo.
High Density
Gestisce automaticamente i problemi o i guasti dei servizi erogati.
Self-healing
Concetti chiave di Microsoft Azure Service Fabric• Architettura Distribuita• Service Fabric abilita la progettazione, l’implementazione e la
manutenzione di applicazioni distribuite e scalabili• Astrazione Infrastrutturale• Service Fabric permette di definire un cluster che non ha dipendenze
dirette con l’infrastruttura fisica sottostante sia in termini di risorse che in termini di disponibilità.• I servizi di una applicazione sono distribuiti e scalati all’interno del cluster
in base al numero dei nodi fisici/virtuali di cui l’infrastrutura è costituita.• Più applicazioni possono condividere lo stesso cluster di Service Fabric.
Concetti chiave di Microsoft Azure Service Fabric• Application model• Un’applicazione è composta da servizi.• Ogni servizio è costituito da tre componenti:
• Codice: tipi (.NET, Java, ecc.)• Configurazione: modifica il comportamento del
servizio• Dati: gestiti dallo stesso servizio
• Ogni componente può essere gestito e versionato in modo indipendente.
Azure Service FabricMicroservices
CommunicationManagement Reliability HostingSubsystem
Testability
Federation
Transport
Application Programming Models
Azure
WindowsServer Linux
Hosted Clouds
WindowsServer Linux
Service Fabric
Private Clouds
WindowsServer Linux
High Availability
Hyper-Scale
Hybrid Operations
High Density
Rolling Upgrades Stateful
services
Low Latency Fast startup & shutdown
Container Orchestration & lifecycle management Replication &
FailoverSimple
programming models
Load balancing
Self-healingData Partitioning
Automated Rollback
Health Monitoring
Placement Constraints
Modello di programmazioneReliable Service• Sono simili ai Web Service ma forniscono alcune caratteristiche out of the
box: 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.• I Reliable Service comunicano tra loro (e con gli attori) tramite messaggi
asincroni.
Modello di programmazioneReliable Actor• E’ basato su un pattern architetturale pensato per realizzare un’architettura costruita
da processi indipendenti.• Ogni attore è individuato da un identificatore univoco attraverso il quale può essere
istanziato.• Ogni attore fornisce azioni che possono essere invocate dall’esterno. Le azioni sono
processate nell’ordine in cui vengono invocate. • Sono generalmente Stateful• L’affidabilità dello stato è gestita, in maniera trasparente, dal framework• Ha un pattern di esecuzione Single Thread• 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
• Le Reliable Collections permettono di gestire in maniera semplice lo stato di un microservizio.• Sono una evoluzione delle collezioni .NET pensate per il cloud.• ReliableDictionary<T1,T2> e ReliableQueue<T>
Reliable Collections
Collections• Single machine• Single threaded
Concurrent Collections• Single machine• Multi threaded
Reliable Collections• Multi machine• Replicated (HA)• Persistence (durable)• Asynchronous• Transactional
DemoService Fabric - My First App
App1 App2
Orchestrazione - Deployments
App Type Packages Service Fabric Cluster VMs
App1 App2
Orchestrazione - Failures
App Type Packages Service Fabric Cluster VMs
#FAIL
Purple NodesGreen Nodes
App1 App2
Orchestrazione - Constraints
App Type Packages Service Fabric Cluster VMs
App1 App2
Orchestrazione - Capacity
App Type Packages Service Fabric Cluster VMs
App1 App2
Orchestrazione – Scaleout Cluster
App Type PackagesService Fabric Cluster VMs
UD3
UD2
UD1
App1 App2
Orchestrazione - Upgrade
App Type Packages Service Fabric Cluster VMs
App2.1
DemoService Fabric - Actor Failure
Servizi basati su Service Fabric
Azure Core Infrastruct
ure
thousands of machines
Power BI
Intune
800k devices
Azure SQL
Database
1.4 million databases
Bing Cortana
500m evals/sec
Azure Documen
t DB
billions transactions/wee
k
Skype for
Business
Hybrid Ops
Event Hubs20bn
events/day
IoT Suit
e
Service Fabric Takeaways• Service Fabric fornisce “chiavi-in-mano” tutte le funzionalità di
orchestrazione necessarie per i nostril 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
Question time
Reference• Azure Service Fabric Documentation
https://azure.microsoft.com/en-us/documentation/services/service-fabric/
• Azure Service Fabric Sampleshttps://azure.microsoft.com/en-us/documentation/samples/?service=service-fabric
• Azure Service Fabric Team Bloghttps://blogs.msdn.microsoft.com/azureservicefabric/
• Prepare your development environment (SDK, Tools ……)https://azure.microsoft.com/en-us/documentation/articles/service-fabric-get-started/
• Ignite - Design modern microservice applications on Microsoft Azure Service Fabrichttps://myignite.microsoft.com/sessions/3168
• Ignite - Explore Microservices solutions and Microsoft Azure Service Fabrichttps://myignite.microsoft.com/sessions/39492
• Ignite - Build applications with Microsoft Azure Service Fabric on Windows and Linuxhttps://myignite.microsoft.com/sessions/3164