Dans cet article


Offres d'emploi

Tags

API Gateway – Retours d’expérience

API Gateway – Retours d’expérience

API Gateway d’Amazon Web Service (AWS) est un service qu’on pourrait comparer à une sorte de super proxy pour vos APIs.

A quoi sert API Gateway ?

L’objectif d’API Gateway est de pouvoir proposer une API sur le WEB. Les fonctionnalités offertes par le service sont particulièrement intéressantes : 

  • Possibilité de pouvoir exposer plusieurs versions de l’API en même temps
  • Possibilité d’exporter la documentation de l’API en swagger
  • Possibilité d’importer son API au format SWAGGER
  • Sécurisation des endpoints avec, soit une clé d’API, soit un Amazon Cognito
  • Possibilité de définir des limites d’appels par client (politique d’usage de son API) (Plan d’utilisation)
  • La possibilité d’avoir des certificats clients

Fonctionnement général d’API Gateway

Pour commencer, il faut créer son API ! Pour cela, deux solutions :
– votre API possède un Swagger et vous pouvez l’importer directement
– vous êtes obligé de créer chaque méthode à la main ( ce qui, entre nous, n’est pas très pratique…)

Une fois que votre API est définie, il faut spécifier où sont les endpoints de votre API. Par exemple, pour votre appel GET /pets, il est nécessaire de définir où trouver la ressource.
Pour spécifier les localisations des endpoints, il faut aller dans l’interface et choisir l’URL ou le service AWS à appeler correspondant à cette méthode. De même,  pour chacun des appels, vous pouvez configurer les headers et les paramètres d’entrée de la méthode. Cette fonction est très pratique si vous avez plusieurs versions de l’API qui n’ont pas les mêmes paramètres d’entrée.

Une fois l’API documentée, il faut réaliser « un déploiement », ce qui correspond généralement à une version de l’API ou à un Environnement (dev, rec, prod). Cette notion s’appelle l’ETAPE.

Une fois sur l’ETAPE, l’API est prête à être directement appelée. L’URL d’accès se situe en haut de la page. A ce moment, il est possible d’appliquer des restrictions d’appels et d’utiliser le certificat client.

Qu’est-ce que le certificat client ?

Le certificat client est un certificat SSL qui permet de valider, côté API, que vos appels proviennent bien de l’API Gateway et non d’un autre appelant.

A l’heure actuelle, ce qui est dommage avec l’API Gateway , c’est qu’il n’est pas possible de mettre l’API Gateway publique et d’appeler une ressource privée dans un VPC de votre AMAZON.

Par exemple dans notre cas, il n’était pas possible d’appeler un Elastic Beanstalk dans un VPC. Il faut donc bien sécuriser d’une manière ou d’une autre… Pour cela, les certificats clients peuvent permettre cette validation, même si ce n’est pas l’idéal.

Clé d’API (Amazon Gateway)

Une clé d’API peut servir à autoriser un de vos clients (au sens utilisateur de votre API) à effectuer un certain usage pour une certaine durée. On peut donc configurer des restrictions par clé. Il est possible d’exporter l’usage par clé, ce qui peut permettre une facturation à vos clients.

Par contre, il n’est pas forcément évident d’obliger à saisir une clé pour chaque appel. Le besoin de clé se configure au niveau de l’appel dans la partie Ressource ce qui n’est pas évident au premier abord.

Sécurisation avec Amazon Cognito

Il est possible de coupler la sécurité avec un Amazon Cognito. Pour rappel, ce service d’AWS permet d’assurer une inscription et une gestion de vos utilisateurs avec des comptes tels que Facebook, ou Google, ou tout simplement avec un LDAP ou un AD d’entreprise. C’est assez simple à configurer directement pour toute l’API, ce qui, on va se l’avouer, est assez bien pratique 🙂 

Statistiques et usage de l’API

Ce qui est très bien fait dans Amazon Api Gateway, c’est la possibilité de visualiser simplement l’usage de l’API avec des statistiques très précises sur ce qui se passe : les temps de réponse, la latence…

Dernier point intéressant, il est possible de mettre du cache sur l’API directement depuis la console ce qui permet de très facilement utiliser API Gateway comme un proxy cache.

Points négatifs d’API Gateway

De manière générale, API Gateway est très facile à prendre en main et est très performant. Le principal point négatif à nos yeux est la faible capacité de sécuriser les ressources en aval de l’API Gateway avec, en particulier, la non possibilité d’utiliser les VPC. Mais on espère que cela évoluera dans un futur proche !

Quelques liens pour aller plus loin sur AWS :

Spring Boot et Elastic Beanstalk

[]2

L'équipe AXOPEN

Voir aussi les articles suivants

Spring Boot et Elastic Beanstalk

Spring Boot et Elastic Beanstalk

Le 17/08/2018 par Pierre Liseron

Amazon Web Services (AWS) propose une large gamme de services et parmi eux, un bon nombre de servies d’hébergement intéressants. Aujourd’hui, nous allons vous parler de l’un d’entre eux : le service d’hébergement Elastic Beanstalk. Elastic Beanstalk, c’est quoi ?  Elastic Beanstalk permet de réaliser très simplement un hébergement dans des « conteneurs ». Il permet de lancer directement votre JAR dans un conteneur et de le dupliquer à chaud, en fonction de votre politique de répartition de charges.
Lire l'article

Tester les performances de son API

Tester les performances de son API

Le 13/06/2018 par Pierre Liseron

Réaliser des tests de performances sur une application n’est jamais simple. Il est en effet assez complexe de simuler une montée en charge réaliste, ainsi qu’une activité utilisateur cohérente. Nous allons explorer quelques pistes pour y parvenir. Test de performances API – Qu’est-ce qu’on mesure ? Premièrement, lorsqu’on parle de performance, il faut s’entendre sur ce que l’on mesure. Ici, nous nous consacrerons uniquement à la mesure des performances brutes d’une application web (de son API) et/ou d’un service unitaire.
Lire l'article

L’utilisation des streams en mode parallèle est très simple d’utilisation. En revanche, il n’est pas forcément évident de savoir si un traitement particulier va bénéficier, ou non, d’une amélioration de performance lors du passage en parallèle. Pour savoir ce qui peut avoir un impact sur les performances, il est nécessaire de comprendre ce qui se passe lorsqu’on lance un traitement en parallèle avec les streams. C’est l’objet de cet article.
Lire l'article