You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[6 More Microservices Interview Questions](https://blog.bytebytego.com/p/6-more-microservices-interview-questions)
8
+
{{% /notice %}}
9
+
10
+
Nous pouvons ajouter une couche "API Layer" qui va faire office de _reverse proxy_ ou de _gateway_ entre nos services et l'interface utilisateur.
7
11
8
12

9
13
10
-
## Pourquoi l'utiliser ?
14
+
## API Gateway
15
+
16
+
> In a microservices architecture, an API gateway acts as a single entry point for client requests. The API gateway is responsible for request routing, composition, and protocol translation. It also provides additional features like authentication, authorization, caching, and rate limiting.
L'avantage de cette pratique c'est qu'elle abstrait notre système derrière un "mur". Les systèmes externes communiquent avec nos services uniquement au travers de la couche API. Cette couche peut par exemple s'assurer que l'utilisateur ait le droit de consulter la ressource (authentification et autorisation).
11
23
12
-
L'avantage de cette pratique c'est qu'elle abstrait notre système derrière un "mur". Les systèmes externes communiquent avec nos services uniquement au travers de la couche API. Cette couche peut par exemple s'assurer que l'utilisateur ait le droit de consulter la ressource (authentification et autorisation).
13
24
1. L'utilisateur envoie une requête au service de Commande
14
-
2. La couche API Layer contacte le service d'Authentification
25
+
2. La couche API Layer contacte le service d'Authentification
15
26
3. Le service d'authentification retourne une réponse autorisant ou non l'accès (e.g. vérifier si l'utilisateur saisi est le bon)
16
27
4. Si l'authentification est réussite avec la couche API Layer transmet à requête au service Commande. Dans le cas contraire, l'API Layer ne contacte pas le service et retourne un code d'erreur au client (e.g. mot de passe incorrect)
17
28
29
+
> On retrouve un fonctionnement similaire avec la librairie [Spring Cloud Gateway](https://spring.io/blog/2019/08/16/securing-services-with-spring-cloud-gateway)
30
+
31
+
## Rate Limiter
32
+
33
+
Il est parfois souhaité de limiter le nombre de de connexion d'un adresse IP, d'un utilisateur sur le serveur. Pour ce faire on utilise un Rate Limiter. Cet outil peut être mis en place sur le serveur ou sur une couche intermédiaire (middleware) entre le client et le serveur
34
+
35
+

18
36
19
-
> On retrouve un fonctionnement similaire avec la librairie [Spring Cloud Gateway](https://spring.io/blog/2019/08/16/securing-services-with-spring-cloud-gateway)
37
+
Et si nous avons une architecture microservice possédant une API Gateway qui gère l'authentification, etc ... nous pouvons y rajouter le Rate Limiter
[When NOT to write an Abstraction Layer](https://youtu.be/tqqH_Ib_gDc)
7
+
[When NOT to write an Abstraction Layer](https://codeopinion.com/when-not-to-write-an-abstraction-layer/)
8
8
{{% /notice %}}
9
9
10
10
Comme l'a noté Edsger W. Dijkstra dans son article "The Humble Programmer ", le but de l'abstraction n'est pas d'être vague mais de créer un nouveau niveau sémantique dans lequel on peut être absolument précis.
High availability is the ability of a system to be continuously operational for a desirably long period of time. High availability is measured as a percentage, with 100% means a service that has 0 downtime. Most services fall between 99% and 100%.
0 commit comments