Les Nouveaux Standards et leur implémentation dans les navigateurs modernes
Talk gRPC et Dapr
1.
2. Christophe GIGAX
Technical Leader @
@ChristopheGigax
Quoi de neuf dans le monde des microservices ?
Philippe DIDIERGEORGES
Solution Architect @
@DePhiless
4. GRPC - Quésaco?
RPC – Remote Procedure Call
gRPC – Google 2015
"A high performance, open source and universal RPC Framework"
grpc.io
5. GRPC - Quésaco?
• Communication en binaire
• Basé sur des contrats
• HTTP/2
• Multi-environnement
• Sécurisé par défaut
• Streaming uni et bi-directionnel
7. GRPC – Est-ce la mort de REST et JSON?
NON.
GRPC est-il fait pour le web?
• Support des navigateurs pour le moment
• Difficile à parser pour du JavaScript
8. Le bon protocole pour le bon usage
• REST: web apps
• SignalR: Multicast et messagerie web
• GraphQL: Système de requête ouvert
• gRPC: Inter services, streaming, mobile, embarqué...
9. Les Contrats
Définition d'interface avec le language Protobuf
• Génération de code pour le client et le serveur
• Implémentation pour les principaux languages
• C++
• Java
• .Net
• Python
• Ruby
• Go
• NodeJS
• Obj-C
13. Ce que l’on vient de voir
Migrer des services REST vers gRPC:
1. Créer le contrat avec protobuf
2. Les modèles sont générés automatiquement
3. Création du service
4. Consommation du service
14. Avantages
• Définition centralisée des contrats
• Agnostique des languages
• Intégration native à ASP.Net Core 3+
• Echanges sécurisés
• Performances optimales
16. Les architectures microservices
Pourquoi les microservices ?
• Focus sur un aspect métier de l’application
• Autonomie
• Flexibilité
• Scalabilité
• Développement indépendant
• Déploiement indépendant
• Plus petit, mais plus performant
Les difficultés
• Le debug
• Testabilité
• Complexité accrue de l’architecture
• Interdépendance des services
• Maîtrise des flux dans l’application
17. Les architectures microservices
Difficulté de migration d’un
bloc monolithique vers une
architecture microservice
Runtime non adapté et
support des langages
limités non-orienté pour le
microservice
Application spécifique à
une infrastructure /
plateforme avec portage
limité vers le Cloud ou
l’Edge
20. Les bases de Dapr
Service-
to- service
invocation
State
management
Publish
and
subscribe
Resource
bindings
and triggers
Actors Distributed
tracing
Secrets
HTTP API gRPC API
Extensible
Application code
Any code or framework…
Microservices written in
API standard accessible via HTTP ou gRPC depuis le code du microservice
http://localhost:3500/v1.0/state/inventory/orderkey
http://localhost:3500/v1.0/invoke/myapp/method/neworder
Fonctionnant en local sous forme d’un composant “sidecar” chargé au runtime pour chaque service
21. Exemple en local
State stores
Publish & subscribe
Resource bindings
Scanning
for events
Dapr APIDapr API
Messaging
Load and
save state
Service
code B
Service
code A
Input/output
Application
Sidecar Sidecar
Secure communication with mTLS
Tracing, logs
and metrics
Tracing, logs
and metrics
24. Exemple sur Kubernetes
1
Pod
Update component changesUpdates actor partition placement
Injects Dapr runtime
Components
Component
management
Deploys and manages Dapr
Any cloud or edge infrastructure
Publish & subscribe
State stores
Resource bindings
Input/outputPod
C O N T A I N E R
Actor Placement
Pod
C O N T A I N E R
Sidecar Injector
Pod
C O N T A I N E R
Operator
Dapr API
HTTP or gRPC
Uses components
C O N T A I N E R
Sidecar
C O N T A I N E R
Application code
Pod
C O N T A I N E R
Sentry
Certificate Authority
Distributed Tracing
Prometheus AppInsightts Jaeger
26. La collecte d’insights via un tronc commun
App InsightsDatadogInstanaJaegerSignalFXPrometheus+ many more
App Insights
Azure Monitor
+ many more
Datadog
Instana
Jaeger
SignalFX
Prometheus
App
“frontend”
App
“backend”
OpenCensus