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
- 767