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