Pitch presents Simplifying Microservice Pattern Dapr Scifoni Ivano

  • Slides: 38
Download presentation
#Pitch presents: Simplifying Microservice Pattern

#Pitch presents: Simplifying Microservice Pattern

Dapr Scifoni Ivano Fabio Mannis Francesco Del Re Distributed Application Runt Matteo Riccardi Valerio

Dapr Scifoni Ivano Fabio Mannis Francesco Del Re Distributed Application Runt Matteo Riccardi Valerio Benedetti

Dapr Distributed Application Runt https: //www. linkedin. com/in/francesco-delre https: //github. com/engineering 87 https: //www.

Dapr Distributed Application Runt https: //www. linkedin. com/in/francesco-delre https: //github. com/engineering 87 https: //www. nuget. org/profiles/engineering 87 Francesco Del Re Engineer in Computer Science Solutions Architect MCP, MPP, Azure Engineer Expert. NET Foundation

Dapr Agenda Introduzione e motivazioni Cos’è Dapr? Architettura Pattern utilizzati Building Blocks (service invocation,

Dapr Agenda Introduzione e motivazioni Cos’è Dapr? Architettura Pattern utilizzati Building Blocks (service invocation, state, event…) Esempi Distributed Application Runt

Dapr Distributed Application Runt Si stima che nel 2022 il 90% delle nuove applicazioni

Dapr Distributed Application Runt Si stima che nel 2022 il 90% delle nuove applicazioni seguirà il modello a microservizi Il 35% di tutte le applicazioni saranno cloud-native

Dapr Distributed Application Runt Sviluppo della singola funzionalità semplificata a fronte di un’architettura più

Dapr Distributed Application Runt Sviluppo della singola funzionalità semplificata a fronte di un’architettura più complessa (API Gateway, Orchestrator…)

Dapr Distributed Application Runt CAP Theorem Consistency E’ la garanzia che ogni nodo in

Dapr Distributed Application Runt CAP Theorem Consistency E’ la garanzia che ogni nodo in un cluster distribuito restituisca lo stesso dato più recente Availability Ogni richiesta deve ricevere una risposta. Partition tolerance Il sistema continua a funzionare, nonostante il numero di messaggi in ritardo tra i nodi

Dapr Cos’è Dapr? Dapr è un runtime open-source portatile basato su eventi con il

Dapr Cos’è Dapr? Dapr è un runtime open-source portatile basato su eventi con il quale i programmatori hanno la possibilità di creare microservizi stateless e applicazioni stateful resilienti che possono essere eseguite sul cloud. Dapr può automatizzare un gran numero di operazioni, cosi da rendere più veloce il processo di sviluppo, rimanendo totalmente indipendente dai linguaggi di programmazione e framework utilizzati. Fornisce infatti i suoi servizi attraverso chiamate HTTP o g. RPC APIs. Distributed Application Runt

Dapr Architettura Distributed Application Runt

Dapr Architettura Distributed Application Runt

Dapr Distributed Application Runt Building Blocks Ø Ø Ø Ø Service invocation State Management

Dapr Distributed Application Runt Building Blocks Ø Ø Ø Ø Service invocation State Management Publish and subscribe messaging Resource binding & triggers Event driven resource bindings Distributed tracing, metrics Actors Extensible Dapr implementa le best practices per costruire sistemi a microservizi resilienti Insieme di blocchi logici indipendenti che espongono funzionalità tramite HTTP o g. RPC

Dapr Sidecar pattern Distributed Application Runt

Dapr Sidecar pattern Distributed Application Runt

Dapr Ambassador pattern Distributed Application Runt

Dapr Ambassador pattern Distributed Application Runt

Dapr Distributed Application Runt Sidecar Pattern CONTRO PRO • • Riduzione della complessità del

Dapr Distributed Application Runt Sidecar Pattern CONTRO PRO • • Riduzione della complessità del singolo servizio astraendo le funzionalità relative all’architettura Poiché indipendente, possibilità di implementazione con qualsiasi linguaggio Possibilità di estendere le funzionalità di un singolo servizio Un sidecar accede alle stesse risorse del servizio • • Aggiunta di un overhead nella comunicazione Aumento del numero di messaggi Attenzione al deploy (container) Valutare attentamente quali funzioni spostare all’interno di un sidecar

Dapr Sidecar Distributed Application Runt

Dapr Sidecar Distributed Application Runt

Dapr Sidecar su Kubernetes Distributed Application Runt

Dapr Sidecar su Kubernetes Distributed Application Runt

Dapr Standalone Mode Distributed Application Runt

Dapr Standalone Mode Distributed Application Runt

Dapr Kubernetes Mode Distributed Application Runt

Dapr Kubernetes Mode Distributed Application Runt

Dapr Distributed Application Runt Service-to-Service Invocation 1. Service A makes a http/g. RPC call

Dapr Distributed Application Runt Service-to-Service Invocation 1. Service A makes a http/g. RPC call meant for Service B. 2. The call goes to the local Dapr sidecar. 3. Dapr discovers Service B's location and forwards the message to Service B's Dapr sidecar 4. Service B's Dapr sidecar forwards the request to Service B. 5. Dapr forwards the response to Service A's Dapr sidecar. 6. Service A receives the response.

Dapr Distributed Application Runt Distributed Tracing Utilizzo di Open. Telemetry per il tracing distribuito

Dapr Distributed Application Runt Distributed Tracing Utilizzo di Open. Telemetry per il tracing distribuito HTTP Dapr inietta la proprietà X-Correlation-ID nell’header delle richieste. g. RPC Api Dapr aggiunge X-Correlation-ID come campo nell’header. Se non presente viene creato un nuovo codice di correlazione, altrimenti viene passato a tutte le richieste della catena

Dapr Distributed Application Runt Middleware Dapr permette di creare delle pipeline per il processamento

Dapr Distributed Application Runt Middleware Dapr permette di creare delle pipeline per il processamento custom delle requestresponse

Dapr Implementazione Middleware Distributed Application Runt

Dapr Implementazione Middleware Distributed Application Runt

Dapr State Management Distributed Application Runt

Dapr State Management Distributed Application Runt

Dapr Distributed Application Runt State Management Dapr utilizza il controllo di concorrenza OCC (Optimistic

Dapr Distributed Application Runt State Management Dapr utilizza il controllo di concorrenza OCC (Optimistic Concurrency Control) tramite ETags. OCC poiché nei microservizi il dominio è partizionato, i conflitti sono limitati

Dapr Distributed Application Runt PublishSubscribe Dapr garantisce la delivery dei messaggi in modalità At-Least-Once

Dapr Distributed Application Runt PublishSubscribe Dapr garantisce la delivery dei messaggi in modalità At-Least-Once Message Broker

Dapr PublishSubscribe Kubernetes Distributed Application Runt

Dapr PublishSubscribe Kubernetes Distributed Application Runt

Dapr Bindings Distributed Application Runt

Dapr Bindings Distributed Application Runt

Dapr Bindings Input/Output Distributed Application Runt

Dapr Bindings Input/Output Distributed Application Runt

Dapr Distributed Application Runt Actor pattern Unità di elaborazione indipendente single-thread che riceve un

Dapr Distributed Application Runt Actor pattern Unità di elaborazione indipendente single-thread che riceve un messaggio e genera una risposta • • • Può comunicare con altri actors Può creare nuovi actors Elabora un messaggio alla volta

Dapr Actor pattern Distributed Application Runt

Dapr Actor pattern Distributed Application Runt

Dapr Actors Distributed Application Runt

Dapr Actors Distributed Application Runt

Dapr Actors invocation Distributed Application Runt

Dapr Actors invocation Distributed Application Runt

Dapr Actors concurrency Distributed Application Runt

Dapr Actors concurrency Distributed Application Runt

Questions & Answers

Questions & Answers

Dapr Riferimenti Ø https: //github. com/dapr/docs/blob/master/concepts/README. md Ø https: //github. com/grpc Ø https: //opentelemetry.

Dapr Riferimenti Ø https: //github. com/dapr/docs/blob/master/concepts/README. md Ø https: //github. com/grpc Ø https: //opentelemetry. io Ø https: //devblogs. microsoft. com/aspnet/grpc-vs-http-apis Ø https: //docs. microsoft. com/en-us/azure/architecture/patterns/sidecar Ø https: //docs. microsoft. com/en-us/azure/architecture/patterns/ambassador Distributed Application Runt

Dapr Next Events Distributed Application Runt

Dapr Next Events Distributed Application Runt

Dapr Next Events Distributed Application Runt

Dapr Next Events Distributed Application Runt

Dapr Prima dei saluti… tinyurl. com/binariof-event Distributed Application Runt

Dapr Prima dei saluti… tinyurl. com/binariof-event Distributed Application Runt

Thank Our Socials

Thank Our Socials