Aller au contenu principal

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 entre elles. L'architecture Service Based et Microservices sont deux architectures populaires qui sont faciles à mettre en opposition.

Ainsi cette section est primordiale pour pouvoir répondre au mieux aux besoins et comprendre les compromis à faire.

SB vs MS

Comparaison

Service BasedMicroservices
TailleServices gros grains, 3 à 12 servicesService "fin" grains, plusieurs centaines de services
CoutFaible, pas besoin de DevOps Docker, Kubernates optionnelElevé, besoin de DevOps
BDDUne seule ou plusieurs => cout faibleUne par microservice
Transaction en BDDFacile, partage d'une seule base de donnéesOn souhaite éviter au maximum les transactions inter-service. Il faudra utiliser des patterns comme SAGA
ElasticitéFaible, comme les services sont "larges" leur démarrage sera trop longElevé, 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ées à gérer
  • La gestion est donc simplifiée avec un déploiement unique tout en ayant une gestion par service

    • Si un service tombe (crash) alors les autres seront toujours opérationnels Alt text

Quand l'éviter

Néanmoins on n'utilisera pas l'architecture Space Based (on préfèrera du microservices) dans les cas suivants :

  • Il nous faut une forte élasticité. Ayant des services 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 communiquent pas entre eux mais seulement avec la base de données où ils peuvent partager des informations (transaction facile). Alt text

  • Nous avons trop de services

    • Il faudra soit les regrouper dans des services de taille plus grosse
    • Il faudra envisager plusieurs bases de données (pas forcément une par service)
X

Graph View