Architecture systèmeDéveloppeur Backend

Qu'est-ce que l'architecture microservices et quels en sont les avantages et les inconvénients ?

Réussissez les entretiens avec l'assistant IA Hintsage

Réponse.

L'architecture microservices est une approche de la construction de systèmes logiciels où l'application se compose de petits services isolés, chacun étant responsable d'une tâche commerciale spécifique, développé et déployé indépendamment des autres.

Avantages :

  • Scalabilité : chaque service peut être mis à l'échelle séparément.
  • Indépendance du développement : différentes équipes peuvent rapidement développer des services distincts.
  • Résilience aux pannes : une défaillance dans un service ne fait pas tomber l'ensemble du système.

Inconvénients :

  • Complexité de gestion : il est nécessaire de configurer les interactions, la surveillance et l'équilibrage.
  • Complexité du déploiement : coordonner de nombreux services peut être difficile.
  • Augmentation des coûts de communication : les services communiquent via le réseau, ce qui augmente les latences et nécessite une intégration fiable.

Exemple de maquette REST d'un microservice en Python (Flask) :

from flask import Flask, jsonify app = Flask(__name__) @app.route('/user/<int:user_id>') def get_user(user_id): return jsonify({"user_id": user_id, "name": "Ivan"}) if __name__ == "__main__": app.run(port=5001)

Caractéristiques clés :

  • Chaque service est une application autonome.
  • Il est facile d'intégrer de nouvelles technologies ou langages pour différents services.
  • Il faut prendre en compte les erreurs d'interactions réseau et assurer la cohérence des données.

Questions pièges.

Les microservices peuvent-ils fonctionner sur une seule base de données ?

C'est acceptable lors de la migration depuis un monolithe, mais cela contredit l'idéologie, car chaque service doit stocker ses propres données séparément pour minimiser les dépendances et assurer l'indépendance de l'évolution.

Est-il obligatoire d'utiliser Docker pour l'architecture microservices ?

Non, Docker facilite le déploiement et l'isolation, mais les microservices peuvent être réalisés sans conteneurisation, en utilisant par exemple des machines virtuelles ou même des serveurs physiques distincts.

Que se passe-t-il si le contrat API entre les services est cassé, mais que tout est vert dans le pipeline CI/CD ?

Une défaillance dans le contrat API entraînera des erreurs d'interaction entre les services, qui ne peuvent être détectées que par des tests d'intégration. Un build vert dans CI/CD ne garantit pas que les différentes versions des services sont compatibles entre elles.