Service Fabric: la potenza dei micro servizi

Post on 09-Jan-2017

91 views 0 download

transcript

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

massimo.bonanni@microsoft.com@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