Microservices: quels sont les avantages et les inconvénients?
Quels sont les avantages et les inconvénients de l'utilisation de microservices en comparaison avec d'autres architectures?
Est-il une règle d'or quand microservices doit être utilisé?
Vous devez vous connecter pour publier un commentaire.
Pros
Sam Newman dans Bâtiment Microservices, énumère les principaux avantages de Microservices comme suit:
La Technologie De L'Hétérogénéité
Avec un système composé de plusieurs, la collaboration des services, nous pouvons être amenés à utiliser différents
les technologies à l'intérieur de chacun d'eux. Cela nous permet de choisir le bon outil pour chaque tâche, plutôt que de
d'avoir à sélectionner un plus standardisée, one-size-fits-all approche qui, souvent, finit par être
le plus petit dénominateur commun.
Résilience
Un concept clé dans l'ingénierie de la résilience est la cloison. Si l'un des composants d'un système
échoue, mais que l'échec n'est pas de cascade, vous pouvez isoler le problème et le reste de la
le système peut continuer à fonctionner. Limites de Service devenir votre meilleur cloisons. Dans un
monolithique, si le service ne parvient pas, tout s'arrête de fonctionner. Avec un monolithique
système, on peut s'exécuter sur plusieurs machines afin de réduire les chances d'échec, mais avec
microservices, nous pouvons construire des systèmes qui gèrent l'échec total de services et de dégrader
fonctionnalité en conséquence.
De mise à l'échelle
Avec un grand, monolithique de service, nous avons à l'échelle de tout regrouper. Une petite partie de
l'ensemble de notre système est soumis à des contraintes dans la performance, mais si ce comportement est enfermé dans une
géant application monolithique, nous avons à gérer de mise à l'échelle de tout un morceau. Avec
les petits services, il nous suffit de l'échelle de ces services qui ont besoin de mise à l'échelle, ce qui nous permet d'exécuter
d'autres parties du système sur de plus petits, moins puissants matériel.
De la facilité de Déploiement
Une modification d'une ligne pour un million de ligne long monolithique application nécessite l'ensemble de la
demande à être déployés en vue de la libération du changement. Cela pourrait être un grand impact,
risque élevé de déploiement. Dans la pratique, de grand impact, à haut risque, les déploiements de la fin de l'événement
rarement due à la crainte compréhensible.
Avec microservices, nous pouvons faire un changement à un seul service et de la déployer indépendamment
le reste du système. Cela nous permet d'obtenir notre code déployé plus rapide. Si un problème ne
se produisent, il peut être isolé rapidement à un service individuel, rapide restauration facile à
atteindre.
L'Harmonisation Organisationnelle
Microservices nous permettre de mieux aligner notre architecture de notre organisation, nous aidant à
réduire le nombre de personnes travaillant sur une base de code pour frapper le sweet spot de l'équipe
la taille et la productivité. Nous pouvons également modifier la propriété de services entre les équipes pour essayer de garder
les personnes travaillant sur un service de colocation.
Composabilité
L'une des principales promesses de systèmes distribués et architectures orientées services qui
nous ouvrir des possibilités de réutilisation de fonctionnalités. Avec microservices, nous permettons à nos
fonctionnalités pour être consommé de différentes façons pour différentes fins. Cela peut être
particulièrement important lorsque l'on pense à la façon dont nos clients utilisent notre logiciel.
De l'optimisation de Remplacement
Si vous travaillez dans un de taille moyenne ou plus grande organisation, les chances sont que vous êtes au courant de certains
grand, méchant système d'héritage assis dans le coin. Une personne ne veut y toucher. Celui qui
est essentiel à la façon dont votre entreprise fonctionne, mais ce qui arrive à être écrite dans une étrange Fortran
variante et ne fonctionne que sur du matériel qui a atteint la fin de la vie il y a 25 ans. Pourquoi n'est-ce pas
- ils été remplacés? Vous savez pourquoi: c'est trop gros et trop risqué un emploi.
Avec nos services sont de petite taille, le coût, pour les remplacer par un meilleur
la mise en œuvre, voire de les supprimer tout à fait, est beaucoup plus facile à gérer.
Contre
L'inconvénient le plus important de Microservices, c'est qu'ils ont tous les complexités de la
systèmes distribués, et même si nous avons beaucoup appris sur la façon de gérer distribués
les systèmes eh bien, il est encore difficile. Si vous êtes à venir
à partir d'un système monolithique point de vue, vous aurez à obtenir beaucoup mieux à la manipulation
déploiement, les tests et la surveillance pour déverrouiller les avantages. Vous aurez
également besoin de penser différemment la façon dont vous l'échelle de vos systèmes et de s'assurer qu'ils sont
résilient. Ne pas être surpris si des choses comme des transactions distribuées ou théorème CAP
commencer à vous donner des maux de tête, soit!
Remarques De Clôture
Juste citant Martin Fowler:
Le pro de micro-services, votre applications échelle très bien. Vous divisez votre demande dans les petits services. Il est difficile de décider qui délimitée services dont vous aurez besoin. Mais une fois que vous avez fait cela, vous pouvez facilement échelle des services spécifiques à plusieurs reprises (les services qui en fait obtenir plus de la charge) plutôt que de les obliger à l'échelle de l'ensemble de votre demande jusqu'.
Un autre avantage est qu'il est plus facile pour les nouveaux développeurs pour commencer à créer de nouvelles fonctionnalités pour votre application, puisque tout est divisé en ces séparées service --> Chaque service dispose de son propre (petite) base de code.
Le plus grand inconvénient de l'utilisation de microservices sont bien sûr qu'il y a un risque plus élevé d'échec lors de la communication entre les différents services.
L'utilisation de microservices ne commence généralement que de payer lorsque votre demande est trop grande pour maintenir une application monolithique.
Essayez de départ d'un moule, mais gardez votre délimitée contextes à l'esprit tout en développant (essayez de le garder aussi séparés que possible), vous pouvez migrer vers microservices si nécessaire plus tard.
Avantages
1.Décentralisée et Découplé de l'Architecture, à l'aide de la chorégraphie plutôt que de l'orchestration rend les services de publication-souscription base et comme un résultat entièrement décentralisé
2.Faire une chose et le faire bien (philosophie Unix), plus ciblée et singulier avec la très étroite de la fonctionnalité
3.Facile d'avoir le parallélisme et l'équilibrage de la charge, en raison d'être plus fine du processus d'affaires point de vue
4.L'apatridie, cependant, avoir une dynamique Microservice est valide, mais il n'est pas l'idéal
5.Individuels de stockage de données rend les services détendu pour garder le traçage des flux de données,
6.Facile et déploiement automatisé et de la découverte est due à l'utilisation de conteneur moteur basé sur des technologies telles que docker
7.Plus d'interopérabilité, ce qui rend les services en mesure d'avoir plus de souplesse dans l'acceptation/la suppression d'une nouvelle/courant de service ou protocole
8.Entièrement compatible avec REST (Representational state transfer) qui permet de créer des apatrides services
9.Adapté pour les systèmes discrets, par exemple pour un lot de processus d'automatisation
Inconvénients
1.Le Service de synchronisation, le maintien de services synchronisés dans un esprit de coopération
2.Difficile de trouver des problèmes systématiques, par exemple, de trouver un problème dans une chaîne d'activités lorsqu'il y a une erreur de logique dans le processus est plus difficile, et il nécessite de combiner plusieurs fichiers journaux dans une pièce
3.Déploiement automatisé et de découverte est un must quand le nombre de microservices est plus qu'un peu de
4.Difficile de trouver le bon service de granularité, ce qui peut entraîner l'ensemble du système dans l'instabilité due à accablé réseau de communication et d'erreur rations
5.Difficile lorsque le système d'entreprise n'est pas assez discret, comme continue des processus de contrôle
6.Développement d'un système automatisé de test est significatif difficile de systèmes monolithiques
Suivantes sont un ensemble d'articles publiés à propos de microservices dans le code-projet, vous pouvez lire et commenter vos questions si vous le souhaitez.
https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-I https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-II https://www.codeproject.com/Articles/1264113/Dive-into-Microservices-Architecture-Part-III