Avantages et inconvénients des microservices dans le développement d'applications

Les applications qui utilisent des microservices peuvent être d'une grande utilité pour les entreprises, surtout celles qui ont recours au Cloud. Mais elles n'ont pas que des avantages.

Les applications modulaires, constituées de petits composants ou "services", autrement appelés "microservices", sont en passe de remplacer les applications monolithiques traditionnelles. Si les microservices sont globalement un excellent choix pour le Cloud, il est indispensable pour les entreprises d'en peser le pour et le contre.

Avantages

L'un des principaux avantages des applications reposant sur les microservices est qu'elles utilisent souvent les ressources de traitement plus efficacement que les applications traditionnelles. Elles modulent les composants de façon à gérer les goulets d'étranglement fonctionnels. Les développeurs doivent donc déployer des ressources de traitement uniquement pour les composants supplémentaires au lieu de déployer de nouvelles itérations d'une application entière. Au final, il reste davantage de ressources pour d'autres tâches.

Autre avantage de ces applications : elles sont plus rapides et plus faciles à mettre à jour. Lorsque les développeurs changent une application monolithique traditionnelle, ils doivent effectuer un test détaillé pour vérifier que le changement n'affecte pas d'autres fonctions ou comportements. Avec les microservices, les développeurs peuvent mettre à jour des composants de l'application sans que cela n'ait d'incidence sur d'autres parties.

L'application reposant sur les microservices doit malgré tout être testée, mais il est plus facile d'identifier et d'isoler les problèmes. Ce qui accélère le développement et permet de mieux prendre en charge l'approche DevOps et le développement continu.

Citons un troisième avantage : les architectures de microservices complètent les services Cloud émergents, comme l'informatique basée sur les événements. Les fonctionnalités telles que AWS Lambda permettent aux développeurs d'écrire du code qui reste en sommeil jusqu'à ce qu'un événement le déclenche. Les ressources de traitement ne sont utilisées que lorsqu'un événement est traité et les entreprises sont facturées à l'événement plutôt que pour des instances de traitement constantes.

Inconvénients liés à l'utilisation des microservices

Malgré leurs avantages, les architectures de microservices font l'objet de critiques.

Ces architectures ont beau fractionner une application en composants que les développeurs peuvent plus facilement gérer et faire évoluer, elles ne rendent pas l'application plus facile à créer pour autant. Les applications à base de microservices doivent en effet proposer les mêmes caractéristiques et exécuter les mêmes fonctions que leurs équivalents monolithiques.

Qui plus est, chaque microservice utilise une API pour échanger des données. Or, les changements apportés à l'API peuvent être source d'erreurs, comme des différences de format de message entre les versions d'API. De plus, le risque de congestion du réseau augmente avec le nombre de composants qui tentent d'échanger des informations.

Enfin, le test et le déploiement d'applications à base de microservices peuvent se révéler plus compliqués. Pour lancer une application à base de microservices, il ne suffit pas d'exécuter un fichier .exe. Ce type de déploiement exige souvent un script détaillé qui approvisionne, charge, connecte logiquement et démarre les composants nécessaires dans leurs instances virtualisées. Il s'agit d'un processus complexe et la migration d'un tel déploiement est encore plus risquée.

Enfin, de nombreuses applications à base de microservices utilisent des services complémentaires, comme l'équilibrage de charge, le dimensionnement automatique et l'informatique basée sur les événements, de sorte que les développeurs dépendent de la disponibilité et de la performance des fournisseurs de Cloud. Cette interdépendance à des services et API externes peut également générer des problèmes de fiabilité et de version.

Conclusion

Les microservices constituent un nouveau modèle pour les développeurs de logiciels : ils leur permettent de développer des applications d'entreprise complexes sous la forme d'une suite de compartiments fonctionnels connexes. Ces compartiments sont parfaitement adaptés aux déploiements dans le Cloud, ce qui ne doit pas empêcher les développeurs d'évaluer soigneusement les avantages et les inconvénients des microservices avant le déploiement.

Pour approfondir sur Applications et services