Service-Based vs Microservices
Service-based architecture is a hybrid of the microservices architecture style and is considered one of the most pragmatic architecture styles.
Après avoir compris comment chaque architecture se structure, l’essentiel est d’identifier les avantages et inconvénients puis de comparer les architectures entres-elles. L’architecture Service Based et Microservices sont deux architectures populaire qui sont facile à mettre en opposition.
Ainsi cette section est primoridiale pour pouvoir répondre au mieux aux besoins et comprendre les compromis à faire.
Comparaison
Service Based | Microservices | |
---|---|---|
Taille | Services gros grains, 3 à 12 services | Service “fin” grains, plusieurs centaines de services |
Cout | Faible, pas besoin de DevOps Docker, Kubernates optionnel | Elevé, besoin de DevOps |
BDD | Une seule ou plusieurs => cout faible | Une par microservice |
Transaction en BDD | Facile, partage d’une seule base de données | On souhaite éviter au maximum les transaction inter-service. Il faudra utiliser des patterns comme SAGA |
Elasticité | Faible, comme les services sont “larges” leur démarrage sera trop long | Elevé, démarrage rapide d’un service en cas de pic |
Quand l’utiliser
L’architecture Service Based offre de nombreux avantages :
Son coût est très faible par rapport à une architecture microservices
- Pas besoin de DevOps ni d’une insfrastructure CI/CD
- Une seule base de donnée à gérer
La gestion est donc simplifié avec un déploiement unique tout en ayant une gestion par service
Quand l’éviter
Néanmoins on n’utilisera par l’architecture Space Based (on préfèrera du microservices) dans les cas suivants :
Il nous faut une forte élasticité. Ayant des service de taille conséquente leur allumage sera trop long
Nous avons beaucoup de communication entre services. L’architecture Service Based est vraiment sympa lorsque nos services ne communique pas entre eux mais seulement avec la base de données où ils peuvent partager des informations (transaction facile).
Nous avons trop de services
- Il faudra soit les regrouper dans des services de taille plus grosse
- Il faudra envisager plusieurs base de données (pas forcément une par service)