¿Qué significa realmente modernizar aplicaciones?
Modernizar aplicaciones es el proceso de tomar aplicaciones heredadas (legacy) existentes y modernizar su infraestructura de plataforma, arquitectura interna y/o características. Gran parte de la discusión en torno a la modernización de aplicaciones hoy en día se centra en aplicaciones monolíticas y locales, normalmente actualizadas y mantenidas mediante procesos de desarrollo de tipo ¨cascadas¨ o tradicional , y cómo esas aplicaciones se pueden incorporar a la arquitectura en la nube y a los ciclos de liberación ágiles actuales utilizando una filosofía de tipo DevOps.
¿Por qué es tan importante la modernización y los beneficios?
Los beneficios de la modernización de aplicaciones normalmente se pueden resumir como mejorar la velocidad en la entrega de nuevas características, exponer la funcionalidad de las aplicaciones existentes que se consumirá a través de API por otros servicios y transformar a las plataformas de aplicaciones a un ambiente nube nativo, con el fin de escalar capacidades y performance rápidamente.
Los desafíos con la modernización de aplicaciones normalmente se reducen a costo y complejidad. Mover una aplicación local a nube debe ser evaluado desde varios puntos de vista: el costo de cambiar el código, el costo de cambiar la plataforma, y los costos asociados por no cambiar nada. El costo de no cambiar nada impacta en no beneficiarse de las características implícitas de la modernización como ser velocidad, escalabilidad y modularidad que una arquitectura de micro servicios puede llegar a aportar a la organización.
La clave del éxito en la modernización de aplicaciones, como la mayoría de las cosas, en última instancia se reduce a la estrategia y la selección de proyectos de modernización de aplicaciones donde los beneficios de la nube, la velocidad, el rendimiento, la escala, el desarrollo de nuevas características, etc. son los que ofrecen a la aplicación un camino claro hacia una mejor experiencia del cliente.
¿Cómo empezar a modernizar aplicaciones en la nube?
Las aplicaciones heredadas también suelen ser aplicaciones monolíticas. Las aplicaciones monolíticas tienen dos características que hacen deseable modernizarlas: son difíciles de actualizar, y son difíciles y costosas de escalar.
Las aplicaciones monolíticas son difíciles de actualizar por razones arquitectónicas. Dado que todos los componentes de una aplicación se envían juntos, es difícil y costoso agregar características dada la sobrecarga de los desafíos de complejidad e integración.
Al modernizar una aplicación a una arquitectura de microservicios, los componentes son más pequeños, acoplados libremente y se pueden implementar y escalar independientemente unos de otros. Al tiempo que trae su propio conjunto de desafíos, este enfoque es donde se puede encontrar gran parte del valor fundamental en la modernización.
La forma más importante de iniciar cualquier proyecto de modernización de aplicaciones es con una evaluación de sus aplicaciones. Hacer un inventario es casi siempre una de las maneras más obvias de comenzar es una transformación como esta.
Una vez que tenga una lista, se puede empezar a evaluar las mismas en su nivel de facilidad/dificultad. También podría pensarse en el valor «potencial» crítico en lo que se refiere la experiencia del cliente y para el futuro de su organización.
Las decisiones más difíciles se reducirán a las aplicaciones de alto valor que son difíciles de mover. Para estas, tampoco se necesita crear una estrategia de todo o nada. Hay enfoques para la modernización de aplicaciones, en estos casos, que pueden reducir el riesgo y el costo de modernizarlas.
Patrones de modernización de aplicaciones
Hay algunos enfoques conocidos para la modernización de aplicaciones que se centran en una combinación de la plataforma, la arquitectura de la aplicación y la exposición de la funcionalidad de una aplicación a través de APIs.
- Del monolito a los microservicios: El patrón más común de modernización de aplicaciones implica refactorizar y descomponer una aplicación monolítica en un conjunto de microservicios pequeños y ligeramente acoplados. En lugar de descomponer el monolito todo de una vez, el patrón consiste en desmontar la aplicación poco a poco, sacando primero las partes más fáciles y valiosas, y a medida que avanza este enfoque, finalmente no queda nada del monolito.
- Migración en la nube: Se utiliza a menudo como parte del recambio de la plataforma y hospedaje de la misma. Si bien es posible simplemente desplazar aplicaciones sin hacer gran parte de una reescritura sustancial, más a menudo, el valor se encuentra en la reestructuración de la aplicación para aprovechar mejor los modelos en la nube, por ejemplo aprovechando contenedores y Kubernetes.
- Exponer funcionalidad a través de API: Por último, otro enfoque de modernización puede implicar dejar una aplicación en su lugar, pero exponer de forma segura sus funciones o datos a través de APIs. Este enfoque, basado más en la integración que en la migración, permite que las nuevas aplicaciones nativas de la nube simplemente aprovechen las capacidades de los sistemas y datos existentes.
Tecnologías clave para la modernización de aplicaciones
Hay muchas tecnologías que pueden facilitar los procesos de modernización por los que están pasando la mayoría de las organizaciones.
- Privado
- Híbrido
- Multi Nube
Si bien la nube pública es un activo crítico de cualquier estrategia de modernización, las estrategias privadas, híbridas y multi nube también son de vital importancia por razones de seguridad, latencia y arquitectura.
Contenedores y Kubernetes
Contenedores y Kubernetes han surgido como un facilitador clave de las estrategias híbridas de modernización de aplicaciones y nube.
La contenedorización permite empaquetar una aplicación de forma coherente y ligera para que pueda ejecutarse de forma eficiente en entornos locales y en la nube pública. Este tipo de flexibilidad es un beneficio real para las organizaciones que plantean una estrategia de modernización.