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

  1. Plus stable

  2. Intégration plus facile des changements

  3. Utiliser des contextes bornés pour définir les domaines

Culture of automation

  1. Automatisation des tests

  2. Automatisation des déploiement pour un déploiement continu

  3. Créer des images personnalisées pour un déploiement plus rapide

Hide internal implementation details

  1. Modéliser ses contextes bornés

  2. Cacher sa base de données

  3. Choisir une API de communication indépendante du langage

Decentralize all the things

  1. Rendre les équipes responsables de leur service

  2. Aligner les équipes avec l'organisation

  3. Préférer la chorégraphie plutôt que l'orchestration

Deploy independently

  1. Penser au versioning

  2. Utiliser le "one-service-per-host"

  3. Les utilisateurs doivent décider quand ils se mettent à jour

Isolate failure

  1. Attention aux timeout

  2. Comprendre les "circuit breakers"

  3. Comprendre les conséquences pour l'utilisateur

Highly observable

  1. Monitoring

  2. 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