Sergey Nivens - stock.adobe.com
Volverse un nativo de la nube: Cómo desarrollar mejores apps en la nube
Las aplicaciones en la nube no siempre funcionan como se desea, y existen múltiples factores que contribuyen a ello, desde falta de recursos hasta puntos ciegos y una mala planificación.
Muchas aplicaciones en la nube son lentas, torpes, sobrecargadas o no cumplen con las expectativas de los usuarios; sin embargo, ya existen respuestas sobre cómo abordar esto, si los equipos reciben los recursos para seguir adelante desde los primeros principios.
Owen Rogers, director de investigación de la nube en Uptime Intelligence, dice que las aplicaciones en la nube deben diseñarse para que sean escalables en términos de rendimiento y eficiencia. Desafortunadamente, muchas empresas trasladan sus aplicaciones a la nube tal cual están en su centro de datos. "La mayoría de las aplicaciones necesitan ser rediseñadas para escalar, lo que tiene implicaciones de costo y tiempo", explica Rogers.
Jon Lucas, cofundador y director de Hyve Managed Hosting, añade que una planificación adecuada y pruebas exhaustivas son cruciales. "Siéntese y determine las especificaciones y sus requisitos, y luego constrúyalos en un entorno de desarrollo", dice Lucas.
Los problemas a menudo surgen cuando el desarrollo ocurre principalmente en la cabeza del equipo, y luego surgen más problemas cuando los usuarios realmente han estado usando las herramientas. Es mejor retrasar una implementación en vivo si es necesario, hasta que se complete la fase de prueba con todos los cambios completamente administrados, en lugar de simplemente seguir su nariz.
Asegúrese de que las aplicaciones cumplan con los requisitos de las partes interesadas desde el principio y más adelante, cuando quieran o necesiten algo más, y apruebe todo, dice Lucas.
El cofundador y director de Hyve, Jake Madders, ha visto las consecuencias de no hacer esto, incluidos los clientes cuyas aplicaciones en línea necesitan parches con cantidades cada vez mayores de hardware, procesos y memoria para respaldar los diseños. Un ejemplo podría ser un código difícil de indexar en una base de datos. "Intentamos ayudarlos a superarlo, pero en realidad hay un problema de código fundamental que debería haberse resuelto, ahorrándoles mucho dinero en su alojamiento", dice Madders.
Divida y conquistará
Minimice el movimiento de datos y divida el procesamiento para que se realice a nivel del navegador del usuario, en lugar de en el servidor. También escale automáticamente las aplicaciones web, ampliando la potencia de procesamiento para escalar automáticamente en múltiples servidores solo cuando sea necesario. Los detalles específicos de la implementación del kit y los requisitos de servicio de contenido, almacenamiento en caché, ubicaciones o múltiples puntos de presencia cuando se crea el código pueden causar incompatibilidades.
“En general, parece que algunos clientes simplemente no han pensado en el tamaño que alcanzará o en el número de usuarios simultáneos que habrá. Los clientes a los que les va bien lo han planificado claramente, más allá de lo que funcionará bien durante uno o dos años”, afirma Madders.
Ahí es cuando los desarrolladores experimentados pueden mostrar su calidad. Los novatos pueden ser excelentes programadores, pero normalmente no piensan en cosas que afecten a toda la pila o a las conexiones simultáneas, afirma Madders.
Grant Caley, jefe de tecnología para el Reino Unido e Irlanda de la empresa de almacenamiento de datos NetApp, dice que es posible que los desarrolladores no puedan crear y desarrollar de manera óptima aplicaciones que maximicen la forma en que el software utiliza los recursos subyacentes.
"No tienen muchas opciones al respecto, porque se les proporciona una herramienta para usar –la plataforma de desarrollo– que puede causar problemas relacionados con el rendimiento", dice Caley.
Los CIO deben comprender que los desarrolladores no son necesariamente capaces de crear aplicaciones rápidas, especialmente sin conocer la pila completa. Se necesitan más tiempo y recursos, especialmente para las pruebas, coincide. "No es que la gente sea descuidada", añade Caley. "Todos intentamos desarrollar aplicaciones lo más rápido posible debido al tiempo de comercialización, el momento comercial que debemos capturar".
Las herramientas de desarrollo de aplicaciones, bibliotecas, computación, almacenamiento, redes y capas de administración de datos se encuentran en todo el proceso de desarrollo. El ejecutivo sugiere intentar acelerar el proceso de CI/CD y liberar más tiempo de prueba en un conjunto de datos tan grande como sea posible, especialmente con el aumento de la inteligencia artificial (IA).
Y si puede utilizar la capa de infraestructura subyacente para controlar instantáneamente esos conjuntos de datos y revertirlos instantáneamente, puede tener más conjuntos de datos y más pruebas ejecutándose en paralelo, lo que acelerará el desarrollo.
Con el aumento de plataformas con poco o ningún código, equipos menos capacitados pueden crear aplicaciones, lo que potencialmente puede causar problemas, agrega Caley.
Cíñase a sus principios
Pero Hans de Visser, director de producto de Mendix, proveedor de plataformas de desarrollo de aplicaciones de bajo código, dice que esto a menudo puede solucionarse mediante una mayor adhesión a los principios de lo nativo de la nube.
"Aplique principios de objetos con estado y conexiones sin estado para asegurarse de que esto funcione a hiperescala", dice de Visser. "Puede dividir su aplicación en múltiples microservicios o componentes independientes, liberables y escalables de forma independiente".
Los componentes resistentes y siempre activos se pueden escalar de forma independiente; otros, como un servicio de gestión de datos maestros, pueden tener una carga más estable, afirma.
Algunos clientes combinan aplicaciones administrativas más tradicionales con recursos dedicados, por ejemplo ejecutando un algoritmo en un servicio sin servidor Lambda de Amazon Web Services (AWS). “Eso puede ayudarle a escalar para aquellas funciones que deben atender los picos de carga. Una vez hechos los cálculos, reducimos nuevamente el tamaño”, añade.
Un tercer elemento son las mejores prácticas impulsadas por la IA . "En nuestra plataforma, tenemos una serie de bots asistidos por modelos de aprendizaje automatizado, que detectan si el desarrollador básicamente se adhiere a los principios que garantizarían el rendimiento de las aplicaciones", dice de Visser. "Si hacen cosas que causan una degradación del rendimiento, les damos advertencias cuando se aplican ciertos patrones y recomendaciones para cambios".
Los kits de IA/ML (Mendix acaba de lanzar uno) pueden ayudar a los desarrolladores a crear mejores aplicaciones, además de brindarles barreras de seguridad e impulsar la productividad. Otras herramientas también pueden ayudar, monitoreando el rendimiento y el estado de las aplicaciones y, en el futuro, la componibilidad de las aplicaciones ayudará a impulsar aún más flexibilidad.
"El truco con el bajo código es abstraerlo y automatizarlo al máximo para que las personas menos técnicas y sin idea sobre arquitectura y cómo construirlo aún puedan crear aplicaciones bastante sofisticadas", dice De Visser.
Markus Nispel, CTO para Europa, Medio Oriente y África (EMEA) de Extreme Networks, resume el requisito como un enfoque en el desarrollo para una distribución "infinita" de usuarios, dispositivos y aplicaciones; o, al menos, esa es la forma en que Extreme ve las cosas actualmente. "Es necesario tener en cuenta la ubicación de una aplicación en la nube en relación con aquellos que desean utilizar esas aplicaciones", coincide.
Nispel subraya la necesidad de optimizar el rendimiento de las aplicaciones en las redes, gestionadas a través de un paradigma basado en la nube que abarca toda la TI: las aplicaciones en la nube son solo piezas del rompecabezas. Más allá de eso, se trata de centrarse en incorporar calidad, automatización y seguridad desde el primer día.
"El problema es que las aplicaciones no siempre se diseñan, desarrollan e implementan utilizando esos paradigmas; a menudo hay aplicaciones heredadas que simplemente se trasladan a la nube y no se modernizan por completo", afirma.