Voxiva

Arquitectura Modular

Desde hace tiempo vengo escuchando sobre el concepto de desarrollo modular cuya finalidad es, en el ámbito tecnológico, una forma de manejar la complejidad de un problema en partes más pequeñas, es decir descomponer la solución en módulos. Haciendo una analogía: Para resolver un problema grande, cualquier que este sea, nos podemos dedicar a afrontar el gran problema directamente y abrumarnos por no saber donde empezar. La otra manera es tomar el camino de afrontarlo por diferentes aristas para lograr resolver pequeñas partes del mismo, logrando así avanzar paso a paso y tener la sensación de que avanzamos ordenadamente y hacia el objetivo mayor.

En los años de experiencia que he tenido desarrollando software, en diferentes roles, siempre los equipos se han enfocado en una arquitectura clásica monolítica, donde prima el desarrollo a medida y en el que mientras más crece mas complejo se hace el proceso de mantenimiento y mejora.

Surgió una oportunidad de cambio

Hace unas semanas, en Voxiva, empresa en la que laboro, como parte de un retreat estratégico, se me pidió realizar una pequeña presentación para todo el equipo sobre esta temática, lo que me dió pie a investigar más sobre qué es lo que tiene que decir la comunidad hoy en día y por qué el paradigma actual de arquitecturas monolíticas están tan pasadas de moda. Finalmente esta investigación fue muy nutritiva y me dio una mejor visión de lo que está sucediendo.

Una de las constantes interrogantes en la empresa y en muchas otras es cómo lograr desarrollar software que permita una mejor escalabilidad y réplica, una forma de optimizar nuestros recursos en soluciones que puedan ser llevadas de una manera óptima a otras empresas con similar problemática, o que su necesidad sea una parte de ésta. Así también esto nos ayude como equipo a perder menos tiempo intentando reinventar la rueda constantemente.

Allí es donde también entra un juego una de las ventajas de hacer arquitectura modular, hablamos de desarrollar partes pequeñas, que pueden ser independientes entre sí, lo que ayuda mucho tanto a nuestra optimización de recursos, asi como a nuestros clientes, mejorando de forma explícita nuestro proceso de atender alguna posible falla o mejora en la solución. Nuevamente es recurrente el concepto de que es mucho mejor atender el problema grande enfocándonos en las partes pequeñas.

¿Cómo lograr este concepto?

En este sentido, vamos al punto, en el contexto de enfocarnos en una arquitectura modular debemos guiarnos por patrones, guías y buenas prácticas. En este sentido empecé encontrar información sobre como aproximarnos a este paradigma y la cantidad de información puede ser abrumadora, pero nuevamente apliqué lo mismo con lo que empecé este artículo: la complejidad de un problema puede ser descompuesto en partes más pequeñas.

Finalidad

Entonces inicié aquí. ¿Por qué deberíamos enfocarnos en una arquitectura modular? ¿Por qué sería útil el cambio? Entonces llegué a tener un punto claro: necesitamos ver la arquitectura del sistema no solo a través de capas o servicios, sino ir a un nivel más profundo: construir pequeños módulos.

Estos módulos deberían ser administrables independientemente, reusables, escalables y que produzcan en el cliente una solución de una problemática de una forma concisa y transparente.

Consideremos por ejemplo una aplicación que hayamos creado hace algunos años y que con el tiempo sufrió cambios, parches y adiciones de funcionalidades; todo esto como resultado nos dejó un código en muchos lugares duplicado, frágil y complejo de entender y por lo tanto difícil de mantener. Que esto sea así, no quiere decir que el equipo que lo desarrolló no fuera lo suficientemente competente o que se eligieron mal las herramientas de desarrollo, sino que simplemente puede deberse a que el diseño de la aplicación en su origen no se hizo de la forma más eficientemente posible.

Aplicación

Entonces, ya tenemos el concepto y la finalidad, ahora vamos al siguiente problema que es cambiar el paradigma actual y que el cambio sea real y útil.

Hoy en día, las aplicaciones exitosas están apuntando a tener soluciones distribuidas, descentralizadas, en tiempo real y teniendo a la nube como principal ecosistema. Esto, naturalmente, conlleva a que el usuario tenga cada vez mayores expectativas en sus productos, incluso a nivel de aplicaciones corporativas.

Para lograr esto en la práctica hay varios conceptos y patrones sobre los cuales guiarnos y esto es el presente, en el futuro no sabemos que nuevos modelos tengamos que analizar para finalmente tomar la decisión de adoptarlos. Lo que es seguro es que tenemos mucho que investigar en este apartado, en posteriores entregas iré continuando con este tema, entrando ya en partes más específicas, desarmando el rompecabezas y sobre todo relatando como es nuestra experiencia como equipo frente a estos cambios.

 

¿Qué reto de negocios estás enfrentando?


¡Cuéntanos aquí!


Has un comentario

Newsletter

Ai en el corazón del conocimiento

Diseñamos algoritmos de inteligencia artificial para modelos correctivos, descriptivos, prescriptivos y predictivos. Nuestras soluciones le brindan conocimiento de alto valor que le permitirán obtener una importante ventaja competitiva en el mercado.

Artículos Recientes