Quand et comment devrais-je utiliser une architecture de microservices

Contenu

Le architecture de microservices attire beaucoup d'attention ces derniers temps, et ce n'est pas un hasard. Il y a de grandes entreprises comme Netflix et Amazon qui ont expliqué comment elles utilisent une architecture de microservices pour pouvoir faire évoluer leurs services et s'assurer qu'elles peuvent les fournir de manière continue et sans interruption.

architecture20de20microservices-1136876

Une architecture de microservices a plus de sens par rapport à la conception d'applications monolithiques.

Dans la conception architecturale monolithique, nous créons une application énorme et lourde avec tous les modules étroitement couplés dans un seul exécutable qui est généralement déployé sur un serveur web ou d'applications. Malgré cela, este diseño arquitectónico tiene algunos inconvenientes que han permitido el uso del architecture de microservices hacerse popular:

  • No hay actualizaciones fáciles y frecuentes.
  • Problemas de distribución continua.
  • Difícil de administrar equipo y proyecto.
  • Rendimiento y escalabilidad costosos.
  • Falta de diversidad tecnológica.
  • No es fácil reemplazar los componentes.

¿Qué es una arquitectura de microservicios?

Un estilo de arquitectura de microservicios logra una configuración donde los componentes de la aplicación son aplicaciones independientes. Estos componentes independientes de la aplicación se comunican entre sí a través de RMI (Invocación de método remoto), Restful Web Services o Push Messaging.

Al diseñar sistemas en una arquitectura de microservicios, debemos identificar los componentes independientes. Estos componentes serán miniaplicaciones, que se desarrollarán de forma separada. Seguirán su propio ciclo de desarrollo y despliegue.

En una configuración general podemos tener escenarios en los que necesitamos datos de varios componentes para una sola solicitud. Idéalement, tendremos una puerta de link API o un controlador frontal que agregue los datos de estos componentes y los devuelva.

Además debemos tener comunicación entre componentes. Los componentes pueden comunicarse por medio de API REST o mensajería o RMI (invocación de método remoto).

Las características de una aplicación basada en arquitectura de microservicios son las siguientes:

  • Servicio habilitado, ejecución independiente de componentes.
  • Ejecución independiente de componentes en torno a algunas capacidades comerciales.
  • Mentalidad de producto en lugar de proyecto.
  • Componentes inteligentes que usan canales de comunicación simples como el protocolo RESTish simple o la cola de mensajes ligeros.
  • Estándares descentralizados. Cada componente independiente puede usar su propio estándar exclusivo para el desarrollo y la implementación.
  • Administración de datos descentralizada. Cada componente individual tiene su propio almacenamiento de datos.
  • Administración automatizada de la infraestructura. Para la implementación de componentes independientes, debemos confiar en la administración de infraestructura automatizada para reducir la complejidad.
  • Diseño de la aplicación teniendo en cuenta posibles fallos. Hay varias partes móviles independientes en las aplicaciones. En caso de que el receptor no obtenga respuesta, doit être géré correctement.
  • Conception évolutive pour obtenir le meilleur système de décomposition réalisable, qui peut être remplacé et mis à jour sans affecter son environnement.

Quand utiliser une architecture de microservices

Nous devrions utiliser une architecture de microservices pour tout produit ou projet avec ces deux approches:

  • Seulement monolithique ou avec une première approche monolithique. Régulièrement, lorsqu'une application monolithique réussit ou a besoin d'aide pour évoluer et améliorer ses performances, nous pouvons opter pour une architecture de microservices de deux manières:
    • Étendre les composants modulaires bien conçus de l'application monolithique.
    • Créer l'application de microservices de zéro et y transférer l'application monolithique existante.
  • Une première approche de microservices. Nous devrions opter pour la première approche de microservices lorsque:
    • La modularité et la décentralisation sont des aspects importants dès le début de tout projet.
    • Nous prévoyons que l'application aura un grand volume de transactions ou de trafic.
    • Nous privilégions les avantages à long terme par rapport à ceux à court terme.
    • Nous disposons de l'équipe adéquate pour concevoir, développer et mettre en œuvre des applications rapidement, en particulier pendant la phase initiale.
    • Nous sommes engagés dans l'utilisation d'outils et de technologies de pointe.

Comment utiliser une architecture de microservices

Malheureusement, La majeure partie des informations disponibles sur l'architecture de microservices explique pourquoi elles doivent être utilisées, mais pas comment.. Il est bon de savoir que les microservices pourraient révolutionner la conception, la mise en œuvre et le fonctionnement des applications. Mais, Comment construit-on exactement un microservice unique? Vous devez comprendre les composants fondamentaux d'un microservice si vous voulez que la sortie fonctionne correctement et ne finisse pas par ressembler à la même application monolithique avec une nouvelle couche de peinture.

Ceux-ci sont le Cinq éléments dont un microservice aura besoin avant de pouvoir être utilisé dans une architecture d'application distribuée:

  1. Fonctionnalité avec une portée appropriée. Le premier élément d'un microservice est de déterminer ce qu'il doit faire. Une façon de déterminer la portée appropriée est de diviser les services en fonction de la fonctionnalité logique. Une autre approche de la portée est de refléter la structure de l'organisation de développement. Une troisième approche est de limiter un service à la quantité de code que l'équipe pourrait réintégrer sur une période de deux semaines.
  2. Préparer une API. Une fois que nous avons divisé une application en plusieurs services coopératifs, comment ces services devraient-ils communiquer entre eux? Régulièrement, cela se fait avec des appels à l'API du service web REST, même si d'autres mécanismes de transport peuvent également être utilisés. Une bonne idée est d'éviter de passer directement au codage de l'API. En échange, il est préférable de travailler sur papier ou sur tableau pour déterminer ce qu'un service spécifique doit exposer pour fonctionner correctement.
  3. La gestion du trafic. Du point de vue du service d'appels, il faut toujours faire le suivi de vos appels et être prêt à mettre fin si la solution prend trop de temps. Du point de vue du service appelé, la conception de l'API doit inclure la capacité d'envoyer une réponse indiquant une surcharge. Les services doivent également être capables de générer et de supprimer de nouvelles instances de service selon les besoins pour s'adapter aux variations de charge du trafic.
  4. Téléchargement de données. Avoir besoin d'un fonctionnement continu est très différent de ce dont ont besoin les applications traditionnelles, qui échouent souvent si l'infrastructure sous-jacente tombe en panne. Pour garantir que les utilisateurs puissent continuer à travailler lorsqu'une instance tombe en panne, les données spécifiques de l'utilisateur peuvent être migrées en dehors des instances de service vers un système de stockage redondant partagé accessible depuis toutes les instances de service. Une autre approche pour alléger le stockage consiste à insérer un partage de cache en mémoire entre un service donné et le stockage associé à ce service.
  5. Surveillance. Le système de surveillance d'une application basée sur une architecture de microservices doit permettre le changement continu des ressources, pouvoir capturer les données de surveillance dans un emplacement central et afficher des informations reflétant la nature en constante évolution des applications de microservices.

(une fonction(ré, s, identifiant) {
var js, fjs = d.getElementsByTagName(s)[0];
si (d.getElementById(identifiant)) revenir;
js = d.createElement(s); js.id = identifiant;
js.src = « //connect.facebook.net/es_ES/all.js#xfbml=1&état=0 »;
fjs.parentNode.insertAvant(js, fjs);
}(document, ‘script’, ‘facebook-jssdk’));

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

Haut-parleur de données