En el post anterior analizábamos las distintas soluciones de plataformas empresariales y sus características. Hoy intentaremos profundizar en las tendencias que están forzando la evolución de la arquitectura de aplicaciones, como la explotación de arquitecturas MVC frontend y microservicios, y que se basan en la modularización de sus componentes.
Estas propuestas de diseño vuelven más flexibles, escalables y reutilizables los procesos de desarrollo en los que se implementan
La forma en que se plantea la factorización de una aplicación en sus distintos componentes no es nueva en absoluto. Es el paradigma central de la orientación a objetos, las abstracciones de software y la componentización.
En la actualidad, esta factorización suele adoptar la forma de clases e interfaces entre bibliotecas compartidas y niveles de tecnología. Lo que ha cambiado en los últimos años es que los desarrolladores ahora crean aplicaciones distribuidas para la nube a petición de las empresas.
Arquitectura MVC y marco Frontend
La arquitectura MVC separa los datos y la lógica de negocio de una aplicación. Esto ofrece elasticidad, portabilidad e interoperabilidad entre componentes (lo que sirve para gestionar contenidos en servicios cloud). Este patrón de arquitectura de software se basa en las ideas de reutilización de código y la separación de conceptos, características que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.
La aparición y gran éxito de la arquitectura MVC en el desarrollo frontend es un ejemplo de implementación en desarrollos y pone de manifiesto el mantenimiento del stack.
En los últimos años hemos vivido un auge de nuevos frameworks mvc dirigidos (en su mayoría) al desarrollo sobre frontend. Este boom es la respuesta a la implementación de una lógica y organización de diseño que antes solo se daba en el backend, es decir:
1. Descargamos parte de la lógica que antes solo se daba en el servidor sobre el cliente y favorecemos la integración de otras aplicaciones que consumen estos servicios.
2. La implementación se plantea en torno a la modularización por componentes. Esto permite que las soluciones sean escalables y mejora notablemente su mantenimiento y reutilización.
Dos de las empresas con mayor capitalización en el índice tecnológico NASDAQ (Google y Facebook) compiten actualmente en base a sus propuestas de metodologías MVC para el frontend : Angular.js y React. Esto nos da una idea del peso que tienen a día de hoy estas implementaciones en los servicios web.
Arquitectura de Microservicios y marco Backend
El enfoque arquitectónico de los microservicios consiste en construir sistemas para servicios de escala reducida, cada uno en su propio proceso, que se comunican a través de protocolos ligeros.
Por lo general, existe un número mínimo de servicios que gestionan cosas comunes para los demás (como el acceso a base de datos). Cada microservicio se corresponde con un área de negocio de la aplicación. Además, cada uno es independiente y su código debe poder desplegarse sin afectar a los demás. Es más, cada microservicio puede escribirse en un lenguaje de programación diferente.
Como beneficios con respecto a los enfoques monolíticos, cada microservicio se puede desplegar de forma independiente. Por lo tanto, un cambio en el módulo de inventario no afectará a los demás porque la lógica de negocio está bien separada, es sencilla y facilita su escalabilidad. Los microservicios facilitan la gestión de equipos multifuncionales y autónomos. Además, podemos formar equipos multifuncionales que gestionen varios microservicios, escalando el proceso de desarrollo de forma más sencilla.
Esta arquitectura plantea una serie de retos (como su despliegue automático) ya que introduce factores más complejos que es necesario gestionar en sistemas distribuidos: fallos, consistencia de datos, estrategia de pruebas, etc.
Actualmente en Teldat trabajamos para desarrollar nuestra plataforma de gestión y administración cloud bajo el modelo MVC dentro del marco front, y estamos planificando la implementación de microservicios.