SlideShare une entreprise Scribd logo
1  sur  19
LE DESIGN D'API
AVEC MULESOFT
04 Nov 2020
POURQUOI CONCEVOIR UNE
API ?
« Voici la philosophie d'Unix :
Écrivez des programmes qui effectuent une seule chose et qui le font
bien.
Écrivez des programmes qui collaborent.
Écrivez des programmes pour gérer des flux de texte, car c'est une
interface universelle. »
(Douglas McIlroy, ~1970)
Les APIs permettent de décomposer de gros
problèmes en petits problèmes
Avec une API, un programme délègue une
tâche à un autre programme :
Au sein de la même application
Dans un processus ou système tiers
Intérêts
Simplification des programmes
Gain de temps
Ouverture aux autres développeurs
Documentation
Sécurisation possible
POURQUOI
02
COMMENT SONT CONÇUES LES APIS
1990 : Network-based Vs Distributed
Calcul sur des dispositifs physiques distincts : Unix DCE/RPC
(Distributed Computing Environment / Remote Procedure Call)
Sur un seul périphérique (Windows OS) : Microsoft COM/OLE
(Common Object Model/Object Linking and Embedding)
Normalisation des protocoles
Neutralité vis-à-vis de la plateforme et du langage
De bibliothèques logicielles qui masquent les détails de la
couche transport
Un document IDL (Interface Definition Language) qui fait office
de contrat de service.
Exemples :
CORBA (Common Object Request Broker Architecture)
Java RMI (Remote Method Invocation)
DCOM (Distributed COM) de Microsoft
Fin des années 90 : XML-RPC
Deux caractéristiques-clés pour la neutralité et la fiabilité :
Les payloads sont au format texte
Le transport utilise HTTP plutôt qu'un système propriétaire
Standardisation avec WS-*
Architecture SOA
LA RECHERCHE DU GRAAL
WORSE IS BETTER
2000 : First web APIs
Salesforce
2000 : the REST Architecture Principles defined by Roy Fielding
https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
Ebay
EURÊKA
ROA – « Ressource Oriented Architecture » :
Qualifie l’architecture d’un système
informatique respectant les contraintes du
style architectural REST.
Le World Wide Web en est un parfait exemple :
les pages, images, fichiers que les sites
exposent en sont les ressources ; le navigateur
est le client.
ROA est SOA
Format d'échange texte
Protocole ouvert et résilient
REST ARCHITECTURE
ROA SOA
REST – « Representational State Transfert » :
Style d’architecture, c’est-à-dire un ensemble
de contraintes appliquées lors de la conception
(ex. client-serveur, sans état…) d’un système
permettant de lui assurer certaines qualités (ex
: scalabilité, réutilisabilité, fiabilité…) au
détriment de certains aspects (ex : latence…)
N’est pas la solution universelle
REST ARCHITECTURE
Un service REST expose des ressources =
noms. Leurs URI permettent à des
applications tierces de les utiliser
D’un point de vue sémantique, une ressource
porte une partie du modèle métier du
service, un de ses concepts. Par exemple une
ressource « produitDisponible » peut à
un moment correspondre à « produit1 »
puis plus tard à « produit2 »
Les ressources sont accédées de manière
uniforme via un jeu d’opérations limité de
type CRUD = verbes (HTTP : POST, GET,
UPDATE, DELETE…)
Lors d’un échange client-serveur, c’est une
des représentations de la ressource qui est
transférée.
REST EN PRATIQUE
Pile protocolaire légère, souvent un client
HTTP et une librairie JSON ou XML suffisent
Lisibilité du format JSON par un développeur
et support natif par les navigateurs, tablettes
et smartphones
Hormis les fonctions de recherche et certains
paramètres de requêtes spécifiques, toutes les
API REST partagent des caractéristiques
communes qui les rendent facilement
compréhensible par un développeur. Les
ressources offertes lui sont le plus souvent
nouvelles, mais il sait déjà comment les
manipuler (CRUD)
Les pré-requis en terme d’outillage et de
connaissance de standard sont faibles
SUCCÈS DES WEBSERVICES REST
Simplifie les problématiques
d’interopérabilité
Simplicité apparente, en général
le développeur doit connaître la
représentation des ressources
pour savoir comment interagir
avec le service. D’un service à un
autre il n’y a pas de capitalisation.
Il n’est pas nécessaire de lire
d’indigestes spécifications et de
mettre en place des usines
logicielles
A force de qualifier de « REST » toute API
différente de SOAP, le sens premier a été
galvaudé.
Partant de ce constat Richardson propose
de les classer en 4 catégories, des plus
éloignées au plus proches du style
architectural présenté par Fielding :
Niveau 0 : RPC sur HTTP et utilisation de POX
(Plain Old XML). Toutes les requêtes sont
adressées à la même URL et l’utilisation des
codes retour HTTP est fantaisiste
Niveau 1 : Utilisation de plusieurs ressources
Niveau 2 : Utilisation des verbes et codes
retour HTTP permettant d’exposer une
sémantique CRUD
Niveau 3 : Hypermedia API
MODÈLE DE MATURITÉ DE RICHARDSON
Niveau 0
Niveau 1
Niveau 2
Niveau 3
Séparation des métiers
Mutualisation de la gestion des utilisateurs
Gestion centralisée de la liste des utilisateurs
Les APIs ne gèrent que des rôles
Standards d’authentification éprouvés
Throttling
SÉCURISATION
03
AVEC QUOI CONCEVOIR UNE
API ?
APPLICATIONS NETWORK
« Des programmes qui effectuent une seule chose […] et qui collaborent »
API-LED CONNECTIVITY
LIFECYCLE OF AN API DESIGN
MERCI
Démonstration
https://bit.ly/3BYWwr7
Straight to
the point
www.spikeelabs.fr

Contenu connexe

Similaire à Le design d'API avec Mulesoft

2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_servicesCamus LANMADOUCELO
 
Services web rest_support_cours_nfaoui_el_habib
Services web rest_support_cours_nfaoui_el_habibServices web rest_support_cours_nfaoui_el_habib
Services web rest_support_cours_nfaoui_el_habibEl Habib NFAOUI
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EEYassine Badri
 
Services web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiServices web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiEl Habib NFAOUI
 
Premiers pas dans l'univers .NET
Premiers pas dans l'univers .NETPremiers pas dans l'univers .NET
Premiers pas dans l'univers .NETBantu Hub
 
Une RESTful Architecture
Une RESTful ArchitectureUne RESTful Architecture
Une RESTful ArchitectureBrisebois
 
11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .netHamza SAID
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEMarouan OMEZZINE
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlinangeeLee
 
Portails Etat De L'art
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'artTugdual Grall
 
Asp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurAsp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurMicrosoft
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Nazih Heni
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeMicrosoft
 
DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?Ludovic Piot
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)Klee Group
 

Similaire à Le design d'API avec Mulesoft (20)

2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services2 20 presentations_generales_des_web_services
2 20 presentations_generales_des_web_services
 
Services web rest_support_cours_nfaoui_el_habib
Services web rest_support_cours_nfaoui_el_habibServices web rest_support_cours_nfaoui_el_habib
Services web rest_support_cours_nfaoui_el_habib
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
Services web soap-el-habib-nfaoui
Services web soap-el-habib-nfaouiServices web soap-el-habib-nfaoui
Services web soap-el-habib-nfaoui
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Premiers pas dans l'univers .NET
Premiers pas dans l'univers .NETPremiers pas dans l'univers .NET
Premiers pas dans l'univers .NET
 
Une RESTful Architecture
Une RESTful ArchitectureUne RESTful Architecture
Une RESTful Architecture
 
11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
Base donnes my_sql
Base donnes my_sqlBase donnes my_sql
Base donnes my_sql
 
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINEIntroduction aux Technologies Web élaborée par Marouan OMEZZINE
Introduction aux Technologies Web élaborée par Marouan OMEZZINE
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 
Portails Etat De L'art
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'art
 
Asp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurAsp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futur
 
Web services
Web servicesWeb services
Web services
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicative
 
DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)
 

Plus de SpikeeLabs

VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023SpikeeLabs
 
Novu _ La cloche de l'intranet va enfin faire _Dring🔔
Novu _ La cloche de l'intranet va enfin faire _Dring🔔Novu _ La cloche de l'intranet va enfin faire _Dring🔔
Novu _ La cloche de l'intranet va enfin faire _Dring🔔SpikeeLabs
 
Power BI _ La data n'a plus de secret pour vous
Power BI _ La data n'a plus de secret pour vousPower BI _ La data n'a plus de secret pour vous
Power BI _ La data n'a plus de secret pour vousSpikeeLabs
 
Retour BreizhCamp 2023
Retour BreizhCamp 2023 Retour BreizhCamp 2023
Retour BreizhCamp 2023 SpikeeLabs
 
Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !SpikeeLabs
 
Domain_Driven_Design
Domain_Driven_DesignDomain_Driven_Design
Domain_Driven_DesignSpikeeLabs
 
Retour sur les conférences du DevFest de Nantes 2022
Retour sur les conférences du DevFest de Nantes 2022Retour sur les conférences du DevFest de Nantes 2022
Retour sur les conférences du DevFest de Nantes 2022SpikeeLabs
 
Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...
Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...
Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...SpikeeLabs
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022SpikeeLabs
 
Méthodologie de tests et qualité
Méthodologie de tests et qualitéMéthodologie de tests et qualité
Méthodologie de tests et qualitéSpikeeLabs
 
Salesforce : les pouvoirs d’un empire
Salesforce : les pouvoirs d’un empireSalesforce : les pouvoirs d’un empire
Salesforce : les pouvoirs d’un empireSpikeeLabs
 
Windows ou Linux : il faut choisir... ou pas !
Windows ou Linux : il faut choisir... ou pas !Windows ou Linux : il faut choisir... ou pas !
Windows ou Linux : il faut choisir... ou pas !SpikeeLabs
 
9 choses que vous ignorez sur Alice et Bob
9 choses que vous ignorez sur Alice et Bob9 choses que vous ignorez sur Alice et Bob
9 choses que vous ignorez sur Alice et BobSpikeeLabs
 
Kit de survie en Production
Kit de survie en ProductionKit de survie en Production
Kit de survie en ProductionSpikeeLabs
 
Déploiement Kubernetes
Déploiement KubernetesDéploiement Kubernetes
Déploiement KubernetesSpikeeLabs
 

Plus de SpikeeLabs (16)

VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023VDLT - Retour DevFest 2023
VDLT - Retour DevFest 2023
 
Novu _ La cloche de l'intranet va enfin faire _Dring🔔
Novu _ La cloche de l'intranet va enfin faire _Dring🔔Novu _ La cloche de l'intranet va enfin faire _Dring🔔
Novu _ La cloche de l'intranet va enfin faire _Dring🔔
 
Power BI _ La data n'a plus de secret pour vous
Power BI _ La data n'a plus de secret pour vousPower BI _ La data n'a plus de secret pour vous
Power BI _ La data n'a plus de secret pour vous
 
Retour BreizhCamp 2023
Retour BreizhCamp 2023 Retour BreizhCamp 2023
Retour BreizhCamp 2023
 
Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !Mots de passe : Protégez-les, gérez-les, oubliez-les !
Mots de passe : Protégez-les, gérez-les, oubliez-les !
 
DesignSystem
DesignSystemDesignSystem
DesignSystem
 
Domain_Driven_Design
Domain_Driven_DesignDomain_Driven_Design
Domain_Driven_Design
 
Retour sur les conférences du DevFest de Nantes 2022
Retour sur les conférences du DevFest de Nantes 2022Retour sur les conférences du DevFest de Nantes 2022
Retour sur les conférences du DevFest de Nantes 2022
 
Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...
Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...
Industrialisation du processus de livraison et pratiques DevOps avec Kubernet...
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022
 
Méthodologie de tests et qualité
Méthodologie de tests et qualitéMéthodologie de tests et qualité
Méthodologie de tests et qualité
 
Salesforce : les pouvoirs d’un empire
Salesforce : les pouvoirs d’un empireSalesforce : les pouvoirs d’un empire
Salesforce : les pouvoirs d’un empire
 
Windows ou Linux : il faut choisir... ou pas !
Windows ou Linux : il faut choisir... ou pas !Windows ou Linux : il faut choisir... ou pas !
Windows ou Linux : il faut choisir... ou pas !
 
9 choses que vous ignorez sur Alice et Bob
9 choses que vous ignorez sur Alice et Bob9 choses que vous ignorez sur Alice et Bob
9 choses que vous ignorez sur Alice et Bob
 
Kit de survie en Production
Kit de survie en ProductionKit de survie en Production
Kit de survie en Production
 
Déploiement Kubernetes
Déploiement KubernetesDéploiement Kubernetes
Déploiement Kubernetes
 

Le design d'API avec Mulesoft

  • 1. LE DESIGN D'API AVEC MULESOFT 04 Nov 2020
  • 3. « Voici la philosophie d'Unix : Écrivez des programmes qui effectuent une seule chose et qui le font bien. Écrivez des programmes qui collaborent. Écrivez des programmes pour gérer des flux de texte, car c'est une interface universelle. » (Douglas McIlroy, ~1970)
  • 4. Les APIs permettent de décomposer de gros problèmes en petits problèmes Avec une API, un programme délègue une tâche à un autre programme : Au sein de la même application Dans un processus ou système tiers Intérêts Simplification des programmes Gain de temps Ouverture aux autres développeurs Documentation Sécurisation possible POURQUOI
  • 6. 1990 : Network-based Vs Distributed Calcul sur des dispositifs physiques distincts : Unix DCE/RPC (Distributed Computing Environment / Remote Procedure Call) Sur un seul périphérique (Windows OS) : Microsoft COM/OLE (Common Object Model/Object Linking and Embedding) Normalisation des protocoles Neutralité vis-à-vis de la plateforme et du langage De bibliothèques logicielles qui masquent les détails de la couche transport Un document IDL (Interface Definition Language) qui fait office de contrat de service. Exemples : CORBA (Common Object Request Broker Architecture) Java RMI (Remote Method Invocation) DCOM (Distributed COM) de Microsoft Fin des années 90 : XML-RPC Deux caractéristiques-clés pour la neutralité et la fiabilité : Les payloads sont au format texte Le transport utilise HTTP plutôt qu'un système propriétaire Standardisation avec WS-* Architecture SOA LA RECHERCHE DU GRAAL
  • 7. WORSE IS BETTER 2000 : First web APIs Salesforce 2000 : the REST Architecture Principles defined by Roy Fielding https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm Ebay EURÊKA
  • 8. ROA – « Ressource Oriented Architecture » : Qualifie l’architecture d’un système informatique respectant les contraintes du style architectural REST. Le World Wide Web en est un parfait exemple : les pages, images, fichiers que les sites exposent en sont les ressources ; le navigateur est le client. ROA est SOA Format d'échange texte Protocole ouvert et résilient REST ARCHITECTURE ROA SOA
  • 9. REST – « Representational State Transfert » : Style d’architecture, c’est-à-dire un ensemble de contraintes appliquées lors de la conception (ex. client-serveur, sans état…) d’un système permettant de lui assurer certaines qualités (ex : scalabilité, réutilisabilité, fiabilité…) au détriment de certains aspects (ex : latence…) N’est pas la solution universelle REST ARCHITECTURE
  • 10. Un service REST expose des ressources = noms. Leurs URI permettent à des applications tierces de les utiliser D’un point de vue sémantique, une ressource porte une partie du modèle métier du service, un de ses concepts. Par exemple une ressource « produitDisponible » peut à un moment correspondre à « produit1 » puis plus tard à « produit2 » Les ressources sont accédées de manière uniforme via un jeu d’opérations limité de type CRUD = verbes (HTTP : POST, GET, UPDATE, DELETE…) Lors d’un échange client-serveur, c’est une des représentations de la ressource qui est transférée. REST EN PRATIQUE
  • 11. Pile protocolaire légère, souvent un client HTTP et une librairie JSON ou XML suffisent Lisibilité du format JSON par un développeur et support natif par les navigateurs, tablettes et smartphones Hormis les fonctions de recherche et certains paramètres de requêtes spécifiques, toutes les API REST partagent des caractéristiques communes qui les rendent facilement compréhensible par un développeur. Les ressources offertes lui sont le plus souvent nouvelles, mais il sait déjà comment les manipuler (CRUD) Les pré-requis en terme d’outillage et de connaissance de standard sont faibles SUCCÈS DES WEBSERVICES REST Simplifie les problématiques d’interopérabilité Simplicité apparente, en général le développeur doit connaître la représentation des ressources pour savoir comment interagir avec le service. D’un service à un autre il n’y a pas de capitalisation. Il n’est pas nécessaire de lire d’indigestes spécifications et de mettre en place des usines logicielles
  • 12. A force de qualifier de « REST » toute API différente de SOAP, le sens premier a été galvaudé. Partant de ce constat Richardson propose de les classer en 4 catégories, des plus éloignées au plus proches du style architectural présenté par Fielding : Niveau 0 : RPC sur HTTP et utilisation de POX (Plain Old XML). Toutes les requêtes sont adressées à la même URL et l’utilisation des codes retour HTTP est fantaisiste Niveau 1 : Utilisation de plusieurs ressources Niveau 2 : Utilisation des verbes et codes retour HTTP permettant d’exposer une sémantique CRUD Niveau 3 : Hypermedia API MODÈLE DE MATURITÉ DE RICHARDSON Niveau 0 Niveau 1 Niveau 2 Niveau 3
  • 13. Séparation des métiers Mutualisation de la gestion des utilisateurs Gestion centralisée de la liste des utilisateurs Les APIs ne gèrent que des rôles Standards d’authentification éprouvés Throttling SÉCURISATION
  • 15. APPLICATIONS NETWORK « Des programmes qui effectuent une seule chose […] et qui collaborent »
  • 17. LIFECYCLE OF AN API DESIGN