Please enable JavaScript.
Coggle requires JavaScript to display documents.
Microservices: Una introducción a los microservicios - Coggle Diagram
Microservices: Una introducción a los microservicios
¿Qué son los microservicios?
Como el Protocolo de transferencia de hipertexto (HTTP), RESTful web servicios (basados en la arquitectura Representational State Transfer [REST]), colas de mensajes y similares
El concepto de microservicio hereda todos los mejores principios del desarrollo de software, incluido el acoplamiento flexible, la escala a demanda, orientado a servicios, por nombrar algunos.
Es una capacidad independiente diseñada como un ejecutable o un proceso que se comunica con otros microservicios a través de comunicación estándar liviana entre procesos.
Cada microservicio se puede actualizar de forma independiente o escalar a pedido
El concepto de microservicios no es nuevo, pero recientemente ha ganado popularidad debido a los desafíos que plantean las aplicaciones monolíticas
Arquitectura modular
Muchos establecieron nuevas prácticas y estándares de gestión de software que debían ser seguidos por las organizaciones de software (por ejemplo, IEEE Software Engineering Standards, Software Testing Standards).
El objetivo principal detrás de estos estándares era controlar la complejidad mediante el uso de mejores prácticas.
Esto ayudó de dos maneras: primero, al mejorar las posibilidades de finalización del proyecto; segundo, al aumentar la vida útil o edad de la aplicación.
Un paquete es construido y desplegado a producción por el equipo de operaciones, y es fácil proporcionar escalabilidad horizontal mediante la implementación de múltiples copias de la aplicación y poner un equilibrador de carga al frente de ellos
Con el tiempo, la aplicación se volverá más compleja, lo que dificultará su suporte, la clara propiedad del código y la funcionalidad para los desarrolladores de aplicaciones.
Se presentan los siguientes desafios
Ciclos más largos para pruebas de regresión
Ciclos más largos para actualizar y redistribuir, lo que lleva a la imposibilidad de implementar
pequeñas correcciones y mejoras
Escalabilidad
Tiempo de inactividad no programado
Problemas de desempeño
Posible tiempo de inactividad durante las actualizaciones.
Atrapado con la tecnología existente y el lenguaje de programación
No hay forma de escalar solo los componentes o la funcionalidad necesarios
Dependiendo de la arquitectura y el legado del software, puede requerir no solo agregar o actualizar el código sino también hacer la prueba de regresión en todo el código o funciones que tocan al componente del carrito de compras.
Un desarrollador siente que hubiera sido fácil y eficiente si esa funcionalidad particular fuera codificada en algún lenguaje nuevo como Scala
La tecnología ha cambiado, y continúa cambiando, cómo se comporta el mundo.
Hemos progresado de una era de módems de acceso telefónico de 56k a Ethernet de 100 Gbps en menos de dos décadas
Nuevos paradigmas como modelo-vista-controlador (MVC), patrones de integración empresarial (EIP) y servicios orientados arquitecturas (SOAs) fueron lanzados. La arquitectura basada en microservicios es ahora la plática del mundo tecnológico
Hemos evolucionado de mainframes a Servidores de alta velocidad para convertir los servidores en una mercancía para la virtualización y la nube
¿Qué significa la capacidad independiente?
Significa que cada microservicio realiza exactamente una función, que se comporta igual para todos los consumidores.
Proporciona enorme flexibilidad, ya que cada microservicio se puede administrar, mantener, escalar, extender, reutilizar y reemplazar independientemente de otros microservicios
Una aplicación basada en microservicios es simplemente un grupo de varios microservicios independientes y únicos, cada uno de los cuales ofrece funcionalidad específica y bien definida.
Ventajas de los microservicios
Escalabilidad
Para escalar una aplicación monolítica, necesitamos implementar aplicaciones con muchos recursos en múltiples servidores detrás de un balanceador de carga.
Simplicidad
Cada microservicio realiza solo una función distinta y bien definida, por lo que hay menos código que cuidar, menos cohesión y dependencia dentro del código, y una menor probabilidad de errores.
Más libertad y menos dependencia
Los microservicios están destinados a ser unicos e independientes.
Aislamiento de fallo
El aislamiento de fallas es un fenómeno en el cual una falla en una parte de un sistema no derriba todo el sistema.
Elecciones
A diferencia de una aplicación monolítica, donde todos los componentes de la aplicación tienen que usar una única base de datos, plataforma y el lenguaje de programación, las aplicaciones basadas en microservicios ofrecen la oportunidad de utilizar la mejor herramienta para cada trabajo específico
Entrega continua
Debido a la menor interdependencia dentro de las bases del código y a los ciclos de desarrollo más rápidos, el paradigma de microservicios permite y se presta a una cultura de entrega continua y DevOps.
Segregación de datos y descentralización
A diferencia de las aplicaciones monolíticas, donde todos los datos generalmente se almacenan y comparten en una base de datos central, los microservicios nos brindan la oportunidad de segregar estos datos.
Desventajas de los microservicios
Tiene que haber algún costo para lograr todos los beneficios que ofrecen los microservicios. Si nos movemos hacia microservicios, debemos ser conscientes de los desafíos que plantea dicha arquitectura.
Si un usuario final informa un problema, como un rendimiento lento o tiempos de espera,
¿por dónde empiezo mi solución de problemas?
En una aplicación monolítica, es más fácil rastrear una solicitud de extremo a extremo.
¿Está mi sistema saludable en cualquier caso?
Aumento de la latencia.
La comunicación interproceso (como el tipo utilizado en aplicaciones monolíticas) es mucho más rápida que el interproceso comunicación utilizada por microservicios.
Solución de problemas de complejidad
Los microservicios proporcionan las capacidades generales a través de la comunicación entre microservicios, que aumenta los puntos potenciales de falla.
Complejidad operaciona
Con varios cientos a miles de microservicios en una aplicación del mundo real, los equipos de operaciones tienen que lidiar con infraestructura compleja, implementación, monitoreo, disponibilidad, copias de seguridad y administración
Control de versiones
Debido a que una aplicación basada en microservicios puede tener
miles de microservicios, el control de versiones y la administración se vuelve poco complejo.