Introducción
Uno de los temas más comentados actualmente en la informática es la modernización de aplicaciones heredadas. Con el auge del 5G, la edge computing y la arquitectura serverless, muchas empresas se preguntan si es necesario repensar las aplicaciones en el panorama digital actual y cómo podrían hacerlo. Para arrojar algo de luz sobre estas preocupaciones, te presentamos una serie de artículos que analizarán la modernización de aplicaciones, a partir de diversas perspectivas comerciales y técnicas, desde la óptica de uno de los aspectos de la modernización más ampliamente discutidos: el uso de microservicios.
Esta serie comenzará con un análisis básico sobre las diferencias entre las aplicaciones monolíticas y los microservicios, así como sus pros y sus contras. Además, veremos cómo los microservicios se adaptan a los constantes cambios, tanto en los hábitos de los consumidores como en la infraestructura.
Aplicaciones monolíticas
¿Qué son las aplicaciones monolíticas?
En general, algo que es monolítico tiende a ser de un gran tamaño, singular en su constitución y poco flexible. Las aplicaciones monolíticas, que se construyen y lanzan como una sola unidad, tienden a compartir estas características.
- Diseño “obstinado”
- Procesos estrechamente vinculados
- No tienen límites claros para dominios o módulos
- Se construyen e implementan como una sola unidad
En una aplicación monolítica, el front-end y el back-end están estrechamente vinculados y la aplicación se construye utilizando una sola pila de software. Toda la funcionalidad está vinculada a una sola unidad que consta de una base de datos, una interfaz de usuario del lado del cliente y una aplicación del lado del servidor. La aplicación del lado del servidor es un programa ejecutable único y lógico que lee y escribe información hacia y desde la base de datos, al tiempo que la suministra al navegador, donde el usuario la ve e interactúa con ella.
¿Cuáles son los desafíos de la arquitectura monolítica?
Debido a su uniformidad, las aplicaciones monolíticas son un punto de partida idóneo para las empresas más pequeñas que buscan simplificar el diseño, las pruebas y las operaciones. Sin embargo, a medida que las aplicaciones agregan funciones y escalan, esta elección arquitectónica puede ocasionar complejidades imprevistas.
Un error en una parte del sistema puede provocar la caída de toda la aplicación y cada nueva función o corrección de error requiere una construcción completamente nueva. Además, debido a que los monolitos son “obstinados”, las opciones disponibles para implementar cambios se limitan a un enfoque único para todos, lo que evita el uso de nuevas herramientas y plataformas que podrían ser más eficientes para el trabajo. Asimismo, las aplicaciones construidas como una sola unidad deben alojarse como tales; a medida que crece la base de usuarios, se deben aprovisionar nuevos recursos para toda la aplicación, en lugar de abordar obstáculos específicos.
- Escalado costoso
- Despliegue prolongado
- Dependencia de un proveedor, o vendor lock-in
- Inflexible
- Baja tolerancia a fallos
El término “monolítico” a menudo tiene connotaciones negativas en informática y a veces es descrito como una “gran bola de lodo” con una estructura desordenada o mal diseñada. Esta connotación negativa es evidente en algunas definiciones, como la de IBM, que describe una aplicación monolítica como “una aplicación que creció con el tiempo, se volvió inmanejable y difícil de entender, la cual tiene baja cohesión y buen acoplamiento”.
Microservicios
¿Qué son los microservicios?
El término “microservicios” se le atribuye ampliamente a Martin Fowler, quien describió con detalle las diversas características de las aplicaciones de microservicios en una publicación de blog de 2014:
- Módulos ligeramente acoplados
- Divididos por capacidad empresarial
- Gobernanza y bases de datos descentralizadas
- Infraestructura automatizada
- Tecnológicamente diversos
- Comunicación a través de un mecanismo ligero
A diferencia de la arquitectura monolítica, las aplicaciones de microservicios constan de muchos componentes independientes, cada uno construido para ejecutar una única tarea, por ejemplo, facturación o envío. En lugar del acoplamiento estrecho y la mensajería compleja que caracteriza a las aplicaciones monolíticas, los microservicios están ligeramente acoplados e interactúan entre sí por medio de API. Cada microservicio tiene su propio ciclo de vida, lo que permite que cada módulo individual se desarrolle, implemente, escale y administre de forma independiente. Como resultado, los microservicios pueden ser tecnológicamente diversos, cada uno con su propio lenguaje de programación o solución de base de datos.
Un video de 2019 de Google Cloud Next proporciona una descripción breve de los componentes de un microservicio:
- API, que brinda una forma de interactuar con el servicio.
- Recursos informáticos, que proporcionan medios para ejecutar la lógica empresarial.
- Almacenamiento, que consta de una base de datos, un sistema de archivos, caché en memoria u otro tipo de estado.
- Equipo asociado, que desarrolla y gestiona el ciclo de vida del servicio.
Este último punto habla de un principio de larga data conocido como Ley de Conway: la aplicación que una empresa produce será congruente con la estructura de la organización. Como tal, el desarrollo monolítico tiende a segmentarse en equipos de IU, del lado del servidor y de la base de datos. Por el contrario, los equipos de microservicios pueden segmentarse por capacidades comerciales, como el pago o el envío, lo que facilita la resolución de problemas con funciones individuales a medida que ocurren.
¿Qué desafíos presentan los microservicios?
Básicamente, la principal ventaja de los microservicios es su flexibilidad. Desde su capacidad para usar múltiples tecnologías hasta su capacidad para escalar e implementar de forma independiente, los microservicios pueden adaptarse rápidamente a los cambios en la tecnología, en los usuarios y en las necesidades comerciales. La desventaja de esta flexibilidad es que genera más complejidad en las aplicaciones activas al intentar responder a estas diferentes circunstancias.
Como resultado, los microservicios requieren más supervisión y más gestión operativa. Escalar monolitos es más caro, pero más simple, ya que escalarlos horizontalmente consiste esencialmente en crear nuevas instancias de la aplicación en múltiples servidores. Por el contrario, los microservicios escalados de forma independiente requieren una supervisión y una gestión cuidadosas de los recursos para garantizar que estén correctamente divididos y escalados.
Elegir el diseño correcto
Al existir diferentes desafíos y beneficios para ambos tipos de arquitectura de aplicaciones, ¿por qué las empresas digitales adoptan cada vez más los microservicios? La respuesta radica en los cambios en las expectativas del usuario y en la infraestructura de las aplicaciones, los cuales requieren un alto grado de flexibilidad en la forma en que se construyen y ejecutan las aplicaciones.
Adaptación a nuevos patrones de uso
Las aplicaciones monolíticas funcionan perfectamente en situaciones que requieren poca flexibilidad. Sin embargo, el uso de dispositivos, actualmente es muy diferente de lo que era antes de que se incorporaran los microservicios, lo cual requiere que las aplicaciones sean mucho más ágiles. En 2013, antes de que se publicara el artículo seminal de Fowler sobre microservicios, Forrester ya rechazaba el suministro único usado por las aplicaciones monolíticas de tres niveles, al considerarlo insuficiente para proporcionar la optimización, la personalización y el rendimiento que se necesitaba para adaptarse a un mayor uso de dispositivos móviles.
Desde entonces, el uso de dispositivos móviles solo ha crecido. El informe anual más reciente de Cisco indica que los dispositivos y las conexiones crecen a un ritmo 10 veces mayor que el de la población. Como esto comprende una amplia variedad de dispositivos y capacidades, los tamaños de pantalla se han hecho más diversos y los patrones de consumo, que pueden incluir desde revisar el correo electrónico hasta transmitir un video completo en alta definición, son cada vez más difíciles de predecir.
Más recientemente, el 2019 App Attention Index de AppDynamics de Cisco proporcionó información adicional sobre los usuarios actuales. Entre sus hallazgos encontró los tres problemas más frustrantes para los usuarios: un enorme deseo de contenido personalizado y problemas con funcionalidad limitada; poca disponibilidad, y respuesta lenta. Además, reveló que los usuarios son cada vez más intolerantes con el bajo rendimiento y más propensos que nunca a eliminar aplicaciones o a difundir sus malas experiencias, lo que hace que la capacidad de una empresa para evaluar y responder a las necesidades de los clientes sea crucial para el futuro de esta.
Para resumir, los usuarios de hoy:
- Gozan de una elevada movilidad
- Tienen diversos dispositivos
- Quieren experiencias personalizadas
- No toleran un rendimiento deficiente
- Esperan nuevas funciones y experiencias
Los microservicios brindan una forma de satisfacer el uso moderno con escalamiento flexible, suministro continuo de nuevas funciones y mayor tolerancia a fallas. También, pueden aprovechar la nueva infraestructura construida para atender las necesidades de los usuarios actuales.
Aprovechar una nueva infraestructura
Para atender los cambios en el comportamiento de los usuarios, ha surgido una nueva infraestructura para proporcionar más movilidad, personalización, rendimiento e innovación. La edge computing acerca la computación y el almacenamiento a los usuarios finales, lo que permite una menor latencia y capacidad de programación en el edge, lo que satisface la demanda de un mejor rendimiento y un contenido más personalizable.
Por otro lado, 5G, la última generación de redes móviles, permitirá un rendimiento móvil bastante mejorado. Un manual de Qualcomm señala varios de los aspectos más destacados, al citar una latencia de nivel de milisegundos y 100 veces la capacidad para manejar el tráfico. No es una cosa del futuro, las redes 5G ya se están construyendo para uso privado y de los consumidores; además, Cisco informó que el 10 % de los dispositivos móviles y las conexiones en todo el mundo serán 5G en 2023.
Sin embargo, a fin de aprovechar al máximo estas tecnologías, las aplicaciones deberán utilizar una arquitectura de microservicios. Para descentralizar las capacidades de almacenamiento y computación, la edge computing requiere procesos livianos y eficientes en recursos. Para ofrecer rendimiento, el 5G utiliza nuevos principios arquitectónicos como el control y la separación del plano del usuario, la división de redes y la arquitectura basada en servicios, que requieren que los servicios sean tan modulares, reutilizables e interoperables como sea posible.
Necesidades de la tecnología emergente:
- Procesos desvinculados
- Servicios reutilizables
- Uso eficiente de recursos
- Interoperabilidad
Los microservicios satisfacen las necesidades de estas dos tecnologías emergentes a través de procesos independientes y desvinculados que se pueden implementar y escalar de manera flexible.
Conclusión
En definitiva, los microservicios son lo más adecuado para abordar las necesidades de los usuarios actuales y las tecnologías emergentes. Sin embargo, dado que implican una complejidad adicional, las empresas deben asegurarse de utilizar herramientas que simplifiquen la construcción y ejecución de aplicaciones.
La Plataforma de Edge de Azion simplifica tanto la división de aplicaciones monolíticas como la construcción de nuevas funciones en el edge. Nuestro enfoque serverless significa que nos ocupamos de la administración de la infraestructura, que las aplicaciones escalan automáticamente hacia arriba y hacia abajo, según sea necesario, en lugar de requerir que las empresas monitoreen continuamente y se adapten al uso de los recursos.
Si bien un modelo serverless reduce significativamente los desafíos de dividir las aplicaciones monolíticas, la transición a los microservicios aún merece algunas reflexiones para garantizar que se ejecute de la manera más fácilmente posible. La próxima publicación de esta serie ayudará a las empresas a prepararse para la modernización de aplicaciones y a desarrollar un plan para abordar el proceso.