Service Fabric: la potenza dei micro servizi

27

Transcript of Service Fabric: la potenza dei micro servizi

Page 1: Service Fabric:  la potenza dei micro servizi
Page 2: Service Fabric:  la potenza dei micro servizi

Service Fabric - La potenza dei MicroServiziMassimo BonanniMicrosoft Senior Consultant – EMEA Modern App Domain

[email protected]@massimobonanni

Page 3: Service Fabric:  la potenza dei micro servizi

Agenda• Perchè l’approccio a Microservizi• Azure Service Fabric•Modello di programmazione di Service Fabric• Funzionalità di orchestrazione

Page 4: Service Fabric:  la potenza dei micro servizi

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

Page 5: Service Fabric:  la potenza dei micro servizi

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

Page 6: Service Fabric:  la potenza dei micro servizi

• 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

Page 7: Service Fabric:  la potenza dei micro servizi

• 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

Page 8: Service Fabric:  la potenza dei micro servizi

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

Page 9: Service Fabric:  la potenza dei micro servizi

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

Page 10: Service Fabric:  la potenza dei micro servizi

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.

Page 11: Service Fabric:  la potenza dei micro servizi

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.

Page 12: Service Fabric:  la potenza dei micro servizi

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

Page 13: Service Fabric:  la potenza dei micro servizi

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.

Page 14: Service Fabric:  la potenza dei micro servizi

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

Page 15: Service Fabric:  la potenza dei micro servizi

• 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

Page 16: Service Fabric:  la potenza dei micro servizi

DemoService Fabric - My First App

Page 17: Service Fabric:  la potenza dei micro servizi

App1 App2

Orchestrazione - Deployments

App Type Packages Service Fabric Cluster VMs

Page 18: Service Fabric:  la potenza dei micro servizi

App1 App2

Orchestrazione - Failures

App Type Packages Service Fabric Cluster VMs

#FAIL

Page 19: Service Fabric:  la potenza dei micro servizi

Purple NodesGreen Nodes

App1 App2

Orchestrazione - Constraints

App Type Packages Service Fabric Cluster VMs

Page 20: Service Fabric:  la potenza dei micro servizi

App1 App2

Orchestrazione - Capacity

App Type Packages Service Fabric Cluster VMs

Page 21: Service Fabric:  la potenza dei micro servizi

App1 App2

Orchestrazione – Scaleout Cluster

App Type PackagesService Fabric Cluster VMs

Page 22: Service Fabric:  la potenza dei micro servizi

UD3

UD2

UD1

App1 App2

Orchestrazione - Upgrade

App Type Packages Service Fabric Cluster VMs

App2.1

Page 23: Service Fabric:  la potenza dei micro servizi

DemoService Fabric - Actor Failure

Page 24: Service Fabric:  la potenza dei micro servizi

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

Page 25: Service Fabric:  la potenza dei micro servizi

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

Page 26: Service Fabric:  la potenza dei micro servizi

Question time

Page 27: Service Fabric:  la potenza dei micro servizi

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