¿Qué son los microservicios? Los microservicios son un enfoque arquitectónico y organizativo en el que las aplicaciones se desarrollan a partir de servicios y componentes independientes poco conectados. Ver demostración
Índice
¿En qué se diferencian los microservicios, los monolitos y la SOA? ¿Cuáles son las características de los microservicios? ¿Cómo se optimizan los microservicios para DevOps y CI/CD? ¿Cómo se relacionan los microservicios con las pasarelas API? ¿Cuáles son los beneficios de los microservicios? ¿Cuáles son los desafíos de usar microservicios? ¿Cuáles son los obstáculos de los microservicios que se deben evitar? Microservicios y ServiceNow

En la naturaleza, no siempre es mejor ser más grande. Si bien un gran tiburón blanco puede ser el azote de los océanos, existen muchos casos en los que un banco de peces tiene más posibilidades de sobrevivir y prosperar como grupo que cualquier organismo individual. De hecho, el éxito colaborativo es un tema común en todo el reino animal; colonias de hormigas, colmenas de abejas, jaurías de lobos, etc.; todos se benefician del trabajo en un sistema con poco acoplamiento para distribuir el control y lograr objetivos comunes. Si un miembro de la colonia, colmena o jauría fallece, el resto del grupo puede seguir funcionando y compensar la pérdida.

Los microservicios funcionan de esta forma, aplicándolo al desarrollo de software y a la arquitectura del sistema. La idea es que, a menudo, es más rápido, sencillo, seguro y eficiente desarrollar una serie de funciones o servicios de componentes por separado, en lugar de instalar la misma funcionalidad en un sistema autónomo totalmente interconectado. A continuación, analizaremos en más detalle los microservicios, junto con sus atributos, beneficios y desafíos.

 

Expandir todo Contraer todo ¿En qué se diferencian los microservicios, los monolitos y la SOA?

Quizás la mejor forma de entender qué son los microservicios es identificar primero qué no son. Existen varias diferencias entre los microservicios y otros enfoques organizativos. Compararemos los microservicios con la arquitectura monolítica tradicional y la arquitectura orientada a servicios (SOA), de más reciente aparición.

Microservicios vs. monolitos

Tal como indica su nombre, los monolitos son aplicaciones grandes y unificadas en las que cada componente está interconectado en gran medida y depende de los otros. Son el enfoque tradicional para el desarrollo, con todas las funciones gestionadas y atendidas desde un único lugar; todo desarrollado sobre una base de código único. Cualquier cambio que los desarrollas puedan querer implementar en las estructuras monolíticas cambiará toda la pila. Las actividades como las pruebas se aplican igualmente a toda la pila y, por tanto, los cambios se agrupan en una gran versión que puede tardar bastante tiempo en finalizarse. Los microservicios difieren de los monolitos, ya que están compuestos por varios componentes más pequeños, autónomos y con poca conexión. Los cambios pueden implementarse en los componentes individuales sin afectar a otros servicios de la aplicación.

Microservicios vs. SOA

La distinción entre los microservicios y la SOA es más sutil; aunque ambos dependen de componentes reutilizables que pueden aplicarse modularmente a distintas aplicaciones, la SOA no es tan granular. Mientras que los microservicios se encuentran en contenedores hasta el punto en que cada servicio realiza solo una función, cada componente de la SOA puede ser un subsistema completo responsable de una amplia gama de funcionalidades empresariales. Además, la SOA optimiza el intercambio de componentes y las dependencias, mientras que los microservicios simplemente intentan minimizar estos aspectos al máximo.

Ofrece operaciones de servicio excelentes gracias a la IA y la automatización Descubre por qué utilizar la IA y la automatización eficazmente ayuda a ofrecer servicios y operaciones de TI más satisfactorios, rápidos, baratos y escalables. Descargar eBook
¿Cuáles son las características de los microservicios?

Por lo general, los microservicios tienen las siguientes características:

Capacidad de prueba

Como los microservicios están diseñados como una colección de servicios individuales e independientes, se pueden probar fácilmente como componentes independientes. Los problemas en los componentes se pueden aislar rápidamente, en lugar de tener que probar sistemas y aplicaciones completos para luego invertir mucho tiempo en tratar de aislar los fallos concretos.

Poca conexión

Para operar simultáneamente, los microservicios deben mantener la comunicación entre sí. Dicho esto, lo cierto es que entre ellos hay poca conexión, ya que los cambios que se implementan en un servicio no afectan directamente a los demás.

Descentralización

En lugar de compartir los almacenes de datos entre servicios, cada componente mantiene el suyo propio. Esto ayuda a evitar el acoplamiento accidental de distintos servicios y garantiza que los cambios no afecten involuntariamente a otros servicios independientes.

Implementación independiente

Los servicios individuales se cambian e implementan en el entorno de producción sin tener que emplear otros. Todas las implementaciones en el sistema se gestionan de esta forma, lo que hace que los microservicios puedan mejorarse muy rápidamente.

Enfoque empresarial

Los microservicios emplean equipos multifuncionales que se organizan en torno a un único propósito empresarial. Estos equipos suelen formarlos desarrolladores, ingenieros de bases de datos, evaluadores, ingenieros de infraestructura y otros, con el objetivo de desarrollar productos específicos basados en múltiples servicios independientes.

Redirección simple

En el caso de los microservicios, cada servicio independiente puede recibir, procesar y responder solicitudes. Esto supone una gran simplificación en comparación con muchos de los sistemas más tradicionales, donde las complejas capas de aplicación de redirección y reglas empresariales pueden ralentizar el proceso.

Resistencia a fallos

Para que un sistema de microservicios falle por completo, todos los servicios independientes deben fallar al mismo tiempo. Al depender de servicios interdependientes con poca conexión, un sistema puede seguir funcionando casi a la capacidad óptima incluso en caso de fallo en uno de sus servicios. Puesto que los servicios están descentralizados, la pérdida de uno tendrá poco o ningún impacto en los demás.

Adaptabilidad y escalabilidad

Como los microservicios son de naturaleza modular, es relativamente sencillo añadir nuevos servicios cuando es necesario. Esto posibilita que las organizaciones adapten los sistemas actuales a nuevos usos y escalen o disminuyan los sistemas para satisfacer la demanda cambiante.

Pila de tecnología intercambiable

Al desarrollar un nuevo servicio, las organizaciones tienen la libertad de escoger entre varias pilas de tecnología. A la vez, pueden emplear otras nuevas cuando realizan cambios en los servicios existentes.

¿Cómo se optimizan los microservicios para DevOps y CI/CD?

El enfoque modular basado en contenedores que se utiliza en el desarrollo de microservicios combina a la perfección con DevOps y con el proceso de integración continua y entrega continua (CI/CD). Como cada servicio se aborda como una unidad independiente, varios equipos pueden trabajar por separado para desarrollar la funcionalidad al mismo tiempo, aplicar los principios de DevOps y mover proyectos rápidamente a través del proceso de CI/CD.

¿Cómo se relacionan los microservicios con las pasarelas API?

Aunque es posible que los microservicios se comuniquen entre sí directamente, muchas empresas prefieren integrar puertas de enlace de API para que funcionen como capas intermedias y ayudar a redireccionar las solicitudes, proporcionar autenticación adicional y mejorar la seguridad. La comunicación API puede ser particularmente efectiva cuando los microservicios establecen el estado por primera vez.

¿Cuáles son los beneficios de los microservicios?

Los microservicios representan un cambio respecto de la arquitectura de desarrollo tradicional y proporcionan varias ventajas en comparación con los enfoques organizativos más convencionales. Entre estos beneficios, observamos los siguientes:

Agilidad

Los microservicios permiten que los equipos pequeños e independientes actúen en contextos claramente definidos. Esto les permite lograr más resultados en menos tiempo y responder con mayor agilidad a los cambios imprevistos.

Mayor accesibilidad

Los microservicios dividen las aplicaciones y los sistemas complejos en componentes más pequeños y sencillos. Los desarrolladores pueden ver más fácilmente distinciones entre los servicios y realizar las actualizaciones y mejoras necesarias.

Libertad del desarrollador

En lugar de limitarse a un solo lenguaje o una única pila de tecnología, los desarrolladores tienen la libertad de seleccionar las mejores soluciones, herramientas o recursos para cada función individual, sin tener que preocuparse por la comunicación entre los servicios afectados.

Implementación simplificada

Como las aplicaciones basadas en microservicios presentan una gran modularidad, pueden desarrollarse e implementarse con relativa facilidad. Los equipos pueden coordinarse juntos para trabajar simultáneamente en componentes individuales y pequeños, y cada componente puede implementarse de forma independiente.

Alta escalabilidad

En la arquitectura tradicional de aplicaciones, satisfacer la demanda cambiante a menudo implica escalar toda la aplicación. Los microservicios permiten a los desarrolladores redirigir los recursos para escalar solo los servicios y componentes aplicables, lo que mejora las velocidades de escalamiento y, al mismo tiempo, reduce los costes asociados.

Resiliencia sin parangón

En caso de que un microservicio falle, los demás no se verán afectados. Esto significa que las aplicaciones basadas en microservicios no tienden a fallar; si uno o más componentes no funcionan, la aplicación en sí seguirá funcionando con una funcionalidad reducida hasta que pueda repararse el servicio afectado.

Reutilización

Puesto que cada servicio es independiente y está diseñado para realizar una función específica, los desarrolladores pueden reutilizar y reciclar los servicios para su uso en varias aplicaciones distintas. Los componentes pueden funcionar como "bloques de construcción", lo que reduce significativamente la necesidad de crear un nuevo código desde cero para cada nuevo proyecto.

Reducción del tiempo de comercialización

La agilidad mejorada, la mayor capacidad de reutilización y la implementación simplificada promueven ciclos de desarrollo más cortos y un tiempo de comercialización más rápido. Esto tiene el potencial de mejorar el rendimiento empresarial y ofrecer una experiencia de usuario más satisfactoria.

¿Cuáles son los desafíos de usar microservicios?

Las ventajas que representan los microservicios también conllevan ciertas dificultades. A continuación, analizamos en mayor detalle algunos desafíos que las organizaciones pueden encontrar cuando implementan un enfoque de microservicios:

Desarrollo

El cambio a los microservicios implica identificar y catalogar todas y cada una de las dependencias entre los servicios. Debido a estas últimas, completar una sola compilación puede conducir directamente a tener que implementar otros desarrollos, lo que puede frustrar y consumir mucho tiempo.

Datos

Un factor clave de los microservicios es que cada componente tiene su propia base de datos aislada. No obstante, con cada nueva base de datos, aumente la complejidad de la gestión. Mientras más servicios y bases de datos se empleen, menos conveniente es gestionar los datos en sí.

Versiones

Al actualizar aplicaciones a nuevas versiones mediante microservicios, existe la posibilidad de que la compatibilidad con versiones anteriores se vea afectada. Las soluciones, que se construyen en lógica condicional o estableciendo varias versiones en vivo para diferentes clientes, pueden ser demasiado complejas en términos de mantenimiento y gestión.

Implementación

Los microservicios están diseñados para simplificar la implementación, pero la complejidad de trabajar con una gran cantidad de componentes independientes puede ser abrumadora. La automatización puede ayudar a resolver este problema.

Registro y supervisión

El registro puede resultar difícil cuando cada servicio utiliza su propia base de datos. Es posible que sea necesario establecer soluciones de registro centralizadas. Asimismo, es posible que la supervisión y gestión de cada servicio no sea factible sin una vista centralizada y una única fuente veraz.

Depuración

Con posiblemente cientos de microservicios incorporados en una sola aplicación, la depuración tradicional no es una opción.

Coordinación

Si bien la arquitectura de microservicios ofrece a los equipos bastante independencia, los problemas que abarcan más de un servicio dentro de una aplicación pueden exigir una comunicación y coordinación detalladas entre equipos para funcionar correctamente.

Duplicación

Como las aplicaciones de microservicios son sistemas distribuidos, no es raro que los equipos dupliquen tareas sin saberlo. Esto puede resultar en un esfuerzo desperdiciado y en aplicaciones ineficientes.

¿Cuáles son los obstáculos de los microservicios que se deben evitar?

Además de los desafíos mencionados anteriormente, existen ciertas dificultades que las organizaciones deben tener en cuenta al considerar la adopción de una arquitectura de microservicios:

Uso de microservicios como punto de partida

Aunque es un enfoque muy popular en la arquitectura de desarrollo, los microservicios generalmente son más adecuados para reparar y revisar las aplicaciones existentes que han sido demasiado complejas y difíciles de mantener. No son tan eficaces cuando se utilizan como punto de partida. Si el enfoque tradicional no ha alcanzado niveles incontrolables, entonces no es realmente un monolito que necesita reestructuración.

Microservicios demasiado granulares

Al igual que sucede con cualquier otra cosa, un servicio siempre se puede dividir en partes más pequeñas. Si bien los microservicios deben ser granulares, consistiendo en funciones limitadas diseñadas para dar soporte a un todo mayor, es posible excederse. Por otro lado, muchas empresas consideran que comenzar con servicios más grandes y dividirlos en microservicios cuando se vuelven lentos de implementar o demasiado complejos de gestionar ayuda a garantizar que la solución no lastre las ganancias potenciales.

Aproximación a los microservicios sin soporte adecuado

Un sistema grande y distribuido puede resultar demasiado complicado con facilidad. Para garantizar la eficacia de los microservicios, las organizaciones deben incorporar la implementación avanzada y la automatización de supervisión, junto con los servicios en la nube gestionados. Esto puede ayudar a aliviar gran parte de la carga de la transición a los microservicios.

Precios de ServiceNow ITSM Consulta aquí los precios de ServiceNow ITSM. Transforma los resultados, la velocidad y la prestación de servicios de TI en tu organización. Ver precios
Microservicios y ServiceNow

ServiceNow puede ayudar con los aspectos de gestión de los servicios desarrollados mediante el aprovechamiento de microservicios, así como a través de la conexión con las metodologías y herramientas utilizadas en las fases de desarrollo, como CI/CD y otras soluciones de DevOps.

Dado el potencial de gran cantidad de microservicios y su naturaleza transitoria, ServiceNow ofrece opciones para completar automáticamente la CMDB y Service Graph para ayudar a supervisar las relaciones y mantener la definición de los servicios. Esto es parte de nuestra oferta de IT Operations Management, que también proporciona capacidades de gestión en la nube más amplias.

Al igual que ocurre con cualquier código desarrollado con las prácticas de DevOps, la velocidad es un objetivo común al mantener microservicios; es decir, se trata de proporcionar la ruta más rápida posible entre un desarrollador y un sistema de producción. Sin embargo, las organizaciones más grandes o reguladas deben mantener fuertes controles de cambio, por lo que IT Service Management Professional incluye nuestra función de DevOps Change Velocity, que se conecta con el canal de CI/CD, recopila información durante el proceso de desarrollo y la utiliza junto con políticas definidas anteriormente para automatizar el proceso de gestión de cambios.

Por último, ServiceNow es una fuente rica de capacidades que pueden utilizar las aplicaciones internas y externas de una manera similar a un microservicio, además de admitir la integración con microservicios externos como parte de los flujos de trabajo de ServiceNow.

Capacidades que escalan con tu empresa

Now Platform incluye competencias centrales que te permiten digitalizar de forma rápida y eficiente los flujos de trabajo y ejecutarlos a escala.

Programar una demostración Contactar
Medios Artículos ¿Qué es ServiceNow? ¿Qué es ITSM? ¿Qué es el departamento de ayuda de TI? Informes de analistas IDC Agility Assessment: Compara tu empresa El valor empresarial de las operaciones de servicio de ServiceNow Guía de mercado de Gartner para aplicaciones de IA para la ITSM Fichas técnicas Análisis de rendimiento para la ITSM Gestión de demandas Gestión de recursos eBooks No dejes que el miedo a la migración sea un obstáculo Creación de valor para el cliente con ITIL 4 Evita los errores habituales en ITIL White papers ITSM: Empowered by Integrated Operations (ITSM: basada en operaciones integradas) Forrester Thought Leadership Paper: ITSM Advancements (Informe de Forrester sobre liderazgo de opinión: avances de la ITSM)