Las aplicaciones modernas nativas de la nube son productos y servicios que son entregados a través de un canal digital habilitado con servicios en la nube que le permiten un desarrollo ágil, crecimiento dinámico de acuerdo a la demanda y rápido despliegue.
Las aplicaciones modernas te permiten una rápida innovación para diseñar, construir y administrar aplicaciones.
En este artículo te presentamos las características que las definen y cuáles son las opciones para construir aplicaciones modernas innovadoras que maximicen la experiencia digital del cliente y su inversión en los servicios de nube.
Desafíos de Aplicaciones Basadas en Cloud
Los desafíos de la nueva normalidad impulsan a las empresas a optimizar sus procesos para ser más eficientes, reducir sus costos y adoptar una transformación digital para continuar sus operaciones y estratégicamente habilitar negocios digitales para mantener su competitividad.
En el nuevo mundo de la tecnología de la información en varias industrias se ha creado una nueva forma de consumir estas tecnologías, para poder satisfacer nuevas necesidades como:
- Los empleados de las organizaciones trabajan remotamente y traen su propio dispositivo (BYOD), lo que implica un dispositivo siempre conectado a la organización, y que representa nuevos retos para compartir información, de seguridad, así como también de latencia.
- La necesidad de hacer cambios en los procesos de negocio para permitir la interacción remota de las personas.
- La transformación de servicios para poder ofrecerlos en línea, con personalización por usuario, a través de nuevas interfaces inteligentes e interfaces de voz
- El incremento significativo en el volumen de datos generados.
El momento actual ha impulsado a las empresas a buscar mejorar la experiencia digital del cliente favoreciendo que el cambio sea más rápido desde el interior de las empresas evolucionando su cultura, procesos y tecnología para desarrollo de aplicaciones.
Lo más importante, es entender que este cambio no solo le permitirá adaptarse al nuevo mundo, también le permitirá mantener una ventaja competitiva mediante la innovación continua.
Gracias a la nube será posible experimentar más rápido, obtener retro-alimentación lo más rápido posible, experimentar nuevas ideas y validarlas más rápido, para mantenerse en un estado de innovación constante.
Amazon aplica internamente esta estrategia de innovación continua dentro de su organización para el desarrollo de sus productos y servicios.
"La invención requiere dos cosas: la capacidad de probar muchos experimentos, y no tener que vivir con el daño colateral de los experimentos fallidos.
No hay algoritmo de compresión para la experiencia. No puedes aprender ciertas lecciones sin pasar por la curva."Andy Jassy Tweet
A diferencia de un modelo tradicional que implica compra de hardware y un largo proceso de entrega, instalación y configuración para habilitar una solución, si la iniciativa no es exitosa, te quedas con una inversión ociosa en los activos.
Lo anterior limita las iniciativas que son puestas en marcha por temor a las consecuencias del fracaso. En un modelo de nube, puedes habilitar una solución rápidamente, si funciona tendrás la capacidad de poder escalar en minutos o si fallas regresas los recursos para que alguien más los utilice, con lo cual, sale de tus costos y entra en un estado de costo variable.
Evolución de Enfoques
La creación de aplicaciones modernas requiere cambiar el enfoque para diseñar, construir y administrar aplicaciones.
Personal -> Robots
Las actividades que típicamente son ejecutadas por personas se habilitan como actividades automatizadas para minimizar el factor de error humano.
Administradores de paquetes -> Imágenes inmutables
En lugar de aplicaciones que requieren actualización continua con altas interdependencias se crear imágenes inmutables que garantizan el mismo comportamiento cuando son desplegadas en diferentes ambientes.
Bases de datos de configuración -> Configuración como código
Las actividades tradicionales para habilitar y registrar la configuración de una aplicación son definidas con código, al igual que el código de la aplicación, facilitando la administración y mantenimiento.
Equipos / herramientas en silos -> Equipos / herramientas integradas
En lugar de construir una aplicación formada por una pila altamente acoplada se crean servicios que son integrados para habilitar una aplicación.
Centrarse en la productividad del desarrollador -> Velocidad holística
Se potencializa el desarrollo rápido de aplicaciones, la integración continua y desarrollo continuo.
Procesos manuales -> Automatización
Se habilita la ejecución de procesos de negocio y administración para ser ejecutados de forma automática y eficiente minimizando el factor de error humano.
Capacidades de una Aplicación Moderna
- Segura, cada parte del ciclo de desarrollo se asegura de habilitar un conjunto de componentes que bloquean o garantizan la seguridad.
- Resiliente, es diseñada para ser altamente disponible y soportar tolerancia a fallos.
- Elástica, crece y decrece dinámicamente en función a la cantidad de usuarios conectados y la funcionalidad entregada.
- Modular, se componen de módulos que permiten la reutilización y diagnóstico de fallas.
- Automática, habilita mecanismos programados para despliegue en producción e incluye codificación de infraestructura como código para habilitar la infraestructura y reducir el error humano.
- Interoperable, habilita la orquestación y coreografía en los servicios.
Mejores Prácticas de AWS Para Crear Aplicaciones Modernas
1.- Crear una cultura de innovación al organizarse en pequeños equipos DevOps
Define las operaciones de desarrollo con la combinación de filosofías culturales, prácticas y herramientas que incrementen la capacidad de su organización para proporcionar aplicaciones y servicios a gran velocidad.
Lo último, para permitir el desarrollo y mejora productos con mayor rapidez que las organizaciones que utilizan procesos tradicionales de desarrollo de software y administración de la infraestructura.
Los equipos que utilizan herramientas para desarrollo e integración continua crean código más rápido y con mayor confianza.
2.- Habilita la seguridad y el cumplimiento en todo el ciclo de vida de la aplicación
3.- Estructurar aplicaciones como colecciones de microservicios
Tener un enfoque organizacional y arquitectónico para el desarrollo de software para construir cada servicio como una unidad independiente enfocada a realizar una función específica, diseñando pequeños servicios que están listos para ser llamados reaccionando a un evento, donde cada uno de estos servicios será administrado por un pequeño equipo independiente responsable del mismo.
Cuando el impacto del cambio es pequeño permite liberar más rápido.
Propiedades de los microservicios:
Independiente: Cada servicio se puede implementar independientemente de otros servicios.
Escalado independiente: Permite organizar el esfuerzo de desarrollo entorno a varios equipos.
Poliglota: Cada servicio puede ser desarrollado en el lenguaje de programación más adecuado para la tarea o habilidad del equipo de desarrollo.
Modular: Implementar módulos redundantes, permite que ante la caída de uno de los módulos el tráfico se derive al servicio redundante y así no provocar la caída del servicio.
Descentralizado: Cada servicio puede ser desplegado o actualizado de forma independiente.
4.- Actualizar aplicaciones/infraestructura de forma rápida con ayuda de CI/CD
Los equipos que practican la CI/CD (integración continua/despliegue continuo) liberan más código y con mayor confianza.
Mientras que en una aplicación monolítica se coordinaban todos los equipos de desarrolladores para formar un ducto de entrega único considerando las etapas de construcción-prueba-liberación-monitoreo, en una aplicación orientada a microservicios cada uno de los equipos responsables de cada servicio ejecutara el proceso ducto de entrega de construcción-prueba-liberación-monitoreo especifico al servicio.
5.- Estandarizar y automatizar operaciones con infraestructura como Código
Tratar todo como software aumenta la velocidad y agilidad de las implementaciones de infraestructura. Los objetivos de tratar la infraestructura como código son:
- Hacer que los cambios en la infraestructura sean repetibles y predecibles
- Liberar cambios en la infraestructura usando las mismas herramientas para los cambios de código
- Replicar el entorno de producción en un entorno de ensayo para permitir pruebas continuas
Una de las opciones disponibles para modelas los ambientes de las funciones es AWS Serverless Aplication Model (SAM), que es un marco de trabajo de código abierto para crear aplicaciones sin servidor en AWS.
5.- Simplificar la administración de infraestructura utilizando tecnologías serverless
La utilización de tecnologías Serverless son el núcleo de la transformación, mediante automatización y la abstracción nos libera de las tareas de administración de las aplicaciones tradicionales y tiene los siguientes beneficios:
- No hay infraestructura que aprovisionar o administrar
- Escala automáticamente de acuerdo al consumo
- Se paga solo por los servicios consumidos
- Tiene alta disponibilidad y durabilidad
- Permite enfocarse en el desarrollo de la lógica de negocio
- Interoperable, habilita la orquestación y coreografía en los servicios.
Existen dos opciones generalmente para habilitar servicios de computo tipo Serverless en AWS.
AWS Lambda: Permite habilitar funciones sin servidor impulsadas por eventos, existe soporte para varios lenguajes para integrar el código fuente. No requiere la administración de servidores.
AWS Fargate: Permite habilitar contenedores Serverless, para cargas de trabajo de larga duración, abstrae la capa del sistema operativo, la orquestación es totalmente administrada y el crecimiento del cluster es completamente administrado.
6.- Mejorar el rendimiento de las aplicaciones al incrementar la observabilidad
En una aplicación construida con base en microservicios es muy importante habilitar un mecanismo de bitácora que permita identificar o diagnosticar adecuadamente los problemas.
Al dividir la aplicación en componentes independientes ya no es posible utilizar una herramienta de depuración de errores porque la aplicación vive en muchos servicios.
Mientras más rápido identifiquemos los problemas, más rápido podrán ser resueltos. Una estrategia para hacerlo es:
- Registrar las métricas, registros y bitácoras de las operaciones que ejecuta la aplicación
- Habilitar el monitoreo de recursos y notificación de alertas
- Tener visibilidad de los recursos de cada aplicación
- Habilitar tableros de control para contar con perspectivas en tiempo real
Específicamente para habilitar la observabilidad de microservicios con Amazon Lambda, podremos utilizar el servicio AWS X-Ray para registrar el detalle de las trazas de la ejecución e identificar problemas.
Conclusión
El desarrollo de aplicaciones modernas en la nube le permitirá alcanzar un nuevo punto de evolución en el camino a la nube y una ventaja competitiva.
Mediante la construcción de aplicaciones modernas innovadoras que maximizan la experiencia digital del cliente, adoptar una estrategia de innovación continua y tener un control de costos en función de los servicios consumidos.
En Andes Digital nos especializamos en el diseño, construcción y despliegue de arquitecturas basadas en Microservicios, tanto en AWS como en nubes privadas. Consúltanos hoy y descubre lo que podemos hacer por tu organización.