Service intégré
Un Service Intégré (Embedded Service) fait référence à un composant logiciel ou à une fonctionnalité qui est intégré directement dans une application ou un système plus vaste, au lieu d'être accessible en tant que microservice externe séparé via un appel réseau. Au lieu d'effectuer une requête API distante, la logique du service ou un enveloppeur léger est déployé à côté ou directement dans l'environnement d'exécution de l'application hôte.
L'intégration de services modifie considérablement le profil opérationnel d'une application. En co-localisant les fonctionnalités, les développeurs peuvent réduire la latence réseau, minimiser la surcharge de communication inter-processus et simplifier la complexité de déploiement pour certaines fonctionnalités étroitement couplées. Cette approche est souvent choisie lorsque les gains de performance dus à l'élimination des sauts réseau l'emportent sur les avantages d'un découplage complet des services.
La mise en œuvre varie en fonction de la pile technologique. Dans certains cas, la logique du service est compilée directement dans le binaire principal de l'application. Dans d'autres, elle peut fonctionner comme un processus "sidecar" au sein du même conteneur ou espace de processus, communiquant via des mécanismes en mémoire (comme la mémoire partagée ou les appels de fonction directs) plutôt que via HTTP/RPC sur un réseau.
Les services intégrés sont fréquemment utilisés pour des opérations à haute fréquence et à faible latence. Les exemples incluent la validation de données en temps réel, les vérifications d'authentification légères effectuées immédiatement après la saisie de l'utilisateur, ou une logique de transformation de données spécialisée qui doit s'exécuter dans le pipeline de requête principal.
Les principaux avantages comprennent la réduction de la latence, le débogage local simplifié et potentiellement des coûts opérationnels inférieurs associés à la gestion de nombreux points d'extrémité réseau indépendants. Pour les opérations critiques, l'intégration garantit des performances prévisibles.
Le principal inconvénient est la réduction de la modularité. Le couplage étroit des services rend le redimensionnement et la mise à jour indépendants plus complexes. Une défaillance du service intégré peut potentiellement faire tomber l'application hôte entière, augmentant le rayon d'impact.
Ce concept contraste avec l'architecture traditionnelle des Microservices, où les services sont intentionnellement découplés. Il présente des similitudes avec les Modèles Sidecar, bien que le niveau d'intégration (dans le processus vs. co-localisé) diffère considérablement.