Web Service
et
Microservices
Qui je suis ?
- Benjamin Tourman
- Lead Developer à Bloc In Bloc
- CTO à Tatou.co
- Ancien EPSI
Me reconnaître
Présentation
Web Service
Un service web est un protocole d'interface informatique permettant la communication et l'échange de données entre applications et systèmes hétérogènes dans des environnements distribués.
Deux entités entres en action : le producteur et le consommateur
Web Service
Web Service
Services
Origines
Origines
-
Problématique de l'interopérabilité des systèmes d'information
- Producteur devait continuer d'utiliser son système de manière transparent
- L'organisation doit pouvoir obtenir une synthèse de l'information
Origines
-
Invention par Gio Wiederhold
de l'architecture de médiation
- Usagers finaux séparés par une couche de médiation
- Différents médiateurs (services) peuvent communiquer entre eux
- Différents médiateurs communiquent en utilisant un langage offrant une grande capacité d'expression sémantique et de transformation
- Utilisation de Knowledge Query and Manipulation Language ( KQML)
(tell : receiver A : sender B : ontology et-book : language PROLOG : content "price( ISBN 973-31-1096-5 )")
Utilisé un service
Synchrone VS Asynchrone
Orchestration VS Chorégraphie
JSON VS XML
Communication entre les services
Bus de communication
Enterprise service bus
Enterprise service bus
Advanced Message Queuing Protocol
Advanced Message Queuing Protocol
De nos jours
Différentes technologies de communications
- Les services web de type R epresentational state transfer (REST)
- Les Services Web WS-* reposant sur les standards SOAP et WSDL
De nos jours
Architecture Orientée Services
L' architecture orientée services est une forme d'architecture de médiation qui est un modèle d'interaction applicative qui met en œuvre des services
Architecture Orientée Services
Microservice
Les microservices sont des petits services autonomes travaillant ensemble.
Définition
Web Service et Microservices
Web Service et Microservices
- Web Service :
- Programme informatique permettant l'échange et la communication entre des applications et systèmes hétérogènes
- REST
- SOAP
Web Service et Microservices
- Microservices :
- Se servent de Web Service pour communiquer
- Style d'achitecture
Monolithe VS Microservice
Avantages
Avantages
- Petit et focalisé sur ce qu'il doit faire
- Autonome
- Hétérogénéité technologique
Avantages
- Scalabilité
- Optimisé pour la remplaçabilité
- Réutilisabe
- Facile à déployer
Inconvénients
Inconvénients
- Partage de librairies
- Reprise de l'architecture existante
- Besoin en automatisation
- Sécurité
- Coût de développement
Enjeux d'une migration
Positifs
Négatifs
- Évolutif
- Scalable
- Couplage faible
- Temps
- Argent
- Crédibilité
Quand ne pas utiliser les microservices ?
- Mauvaise compréhension des domaines
- Les petits problèmes augmenteront au fur et à mesure de la scalabilité
Principes
Model Around Business Domain
- Plus stable
- Intégration plus facile des changements
- Utiliser des contextes bornés pour définir les domaines
Culture of automation
- Automatisation des tests
- Automatisation des déploiement pour un déploiement continu
- Créer des images personnalisées pour un déploiement plus rapide
Hide internal implementation details
- Modéliser ses contextes bornés
- Cacher sa base de données
- Choisir une API de communication indépendante du langage
Decentralize all the things
- Rendre les équipes responsables de leur service
- Aligner les équipes avec l'organisation
- Préférer la chorégraphie plutôt que l'orchestration
Deploy independently
- Penser au versioning
- Utiliser le "one-service-per-host"
- Les utilisateurs doivent décider quand ils se mettent à jour
Isolate failure
- Attention aux timeout
- Comprendre les "circuit breakers"
- Comprendre les conséquences pour l'utilisateur
Highly observable
- Monitoring
- Agrégation de logs et de statistiques
Modélisation
Découplage
Cohésion
Contexte borné
Base de données
Granularité
Il peut être réécrit en 2 semaines
Jon Eaves de RealEstate.com
Routage
Load Balancing
Pattern API Gateway
Architecture
Fondations
Facteurs de qualité
Documentation
API
Tests
Fiabilisation des services
Sécurité
Authentification
Autorisation
Sécurité entre les services
- Tout permettre à l'intérieur du périmètre
- HTTP(S) Basic Authentication
- Certificat Client
- Clés d'API
- JWT (Json Web Token)
JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
- Header : Composé de 2 parties, puis encodé en base64Url
{
"alg": "HS256",
"typ": "JWT"
}
JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
-
Payload :
- Reserved claims : mots clés réservés (sub, exp, ...)
- Public claims : créés par le serveur d'authentification
- Private claims : partagés entre le client et le serveur
JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
- Signature
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
JWT
Monitoring
Logs
Métriques
Health Check
Processus de déploiements
Intégration Continue
Déploiement Continue
Web Service
By benjamin tourman
Web Service
- 649