Este blog ha sido escrito por Barry Collins, redactor y editor de tecnología que ha trabajado para numerosas publicaciones y sitios web a lo largo de sus 20 años de carrera.
Con los elevados niveles de rendimiento disponibles en los servicios de nube pública, resulta fácil asumir que cualquier migración a la nube mejorará inevitablemente la experiencia del usuario. Sin embargo, ésta es una suposición peligrosa.
Es esencial comprender cómo los distintos componentes de la infraestructura de la nube pueden afectar al rendimiento de la aplicación para los usuarios. No hacerlo puede provocar una degradación grave del rendimiento, hasta el punto en el que los usuarios abandonan la aplicación en favor de otros servicios rivales.
El próximo informe sobre el rendimiento de la nube de ThousandEyes identificará los factores a los que deben prestar atención los desarrolladores de aplicaciones cuando diseñan sus aplicaciones para la nube. Mientras tanto, hemos pedido a Mike Hicks, principal solutions analystanalista de soluciones principal de ThousandEyes, que comparta su experiencia sobre cómo tomar mejores decisiones al llevar a cabo migraciones a la nube y cómo evitar los errores costosos.
Centrarse en el usuario
Los requisitos de los usuarios suelen estar muy abajo en la lista de prioridades a la hora de diseñar aplicaciones, según Mike Hicks. Los desarrolladores muchas veces diseñan las aplicaciones para que sean lo más robustas posibles dentro de un presupuesto determinado, sin evaluar siempre el nivel de rendimiento que puede tolerar la base de usuarios.
Frecuentemente, las decisiones sobre qué infraestructura en la nube usar se toman antes de evaluar el impacto en la experiencia del usuario y eso es como empezar la casa por el tejado, en opinión de Mike. “Las técnicas de diseño centradas en el usuario pueden ayudar a tomar decisiones mejor alineadas con las necesidades del usuario y reducir el exceso de ingeniería, lo que puede provocar un exceso de especificaciones de la infraestructura de la nube,” explica.
“Con un mejor conocimiento de los usuarios y del rendimiento esperado, las organizaciones pueden elegir infraestructuras óptimas y que estén en consonancia con las necesidades de los usuarios, incluso a medida que los ecosistemas evolucionan y van apareciendo nuevas opciones.”
Examinar toda la cadena
La complejidad de las aplicaciones modernas exige una planificación cuidadosa. Los días en los que el rendimiento de la aplicación en la nube venía determinado por una única ruta desde y hasta un servidor remoto han quedado atrás hace tiempo. En la actualidad, distintos componentes, como la autenticación del usuario o los sistemas de pago, pueden estar distribuidos en distintas nubes, centros de datos, regiones y zonas de disponibilidad.
De la misma forma que un planificador urbanístico no haría que los camiones de suministro pasaran de forma continua por un centro urbano totalmente congestionado, los desarrolladores de aplicaciones también deben ser conscientes de los posibles cuellos de botella que pueden surgir con sus elecciones de infraestructura en la nube. Y esto solo pueden lograrlo con una buena visibilidad de toda la cadena de prestación de servicios, que cuente con una vista completa para definir y establecer expectativas.
“Uno de los principales retos para los equipos responsables de diseñar aplicaciones en la nube es comprender el rendimiento de los distintos componentes de la infraestructura en la nube para tomar decisiones informadas”, explica Mike. “Es crucial saber cuáles son las nubes, regiones y zonas de disponibilidad que albergan a los distintos componentes y cómo se comportan en relación con la base de usuarios de la compañía.”
“Para diseñar aplicaciones que tengan un funcionamiento óptimo, es esencial comprender cómo afectan los distintos elementos de la infraestructura al diseño de la aplicación y al rendimiento del servicio en la nube. Ser consciente en todo momento de las características de rendimiento de la infraestructura en la nube subyacente facilita que las compañías tengan cierto grado de influencia y control sobre las experiencias de usuario digitalizadas y basadas en la nube.”
La decisión de dónde alojar una aplicación debe tomarse, siempre que sea posible, tras evaluar estos factores y no antes. “El diseño de la aplicación implica más que solo la infraestructura,” indica Mike. “Las características de una aplicación están determinadas mucho antes de que se produzca el debate acerca de dónde y cómo volverla a alojar. El papel de los usuarios en determinar dichas características se debe tener en cuenta en el proceso de desarrollo en la nube. Hacerlo puede dar como resultado un conjunto de requisitos de infraestructura muy distinto para cada aplicación.”
Los peligros de una planificación deficiente
Mike ha presenciado ejemplos en el mundo real de cómo no tener en cuenta la experiencia del usuario se ha vuelto en contra de los desarrolladores de aplicaciones. Cuenta una historia de una empresa que llevó a cabo un “cambio sencillo” de su propio centro de datos a una plataforma en la nube con una base de datos distribuida.
“El problema fue que nadie había tenido en cuenta la interacción y la ubicación de los usuarios”, cuenta Mike. Explicó que la aplicación en cuestión era sensible al factor tiempo y necesitaba una respuesta rápida. Se asumió que trasladarse a la nube mejoraría el rendimiento. Sin embargo, la construcción y distribución de los servicios específicos necesarios implicaba que los usuarios, aunque podían consultar rápidamente la interfaz, acaban frustrados al intentar operar con la aplicación. En esencia, la base de datos y los servicios backend estaban funcionando a cierta distancia de la interacción con la interfaz.
Este resultó ser un error costoso porque “la velocidad era un factor diferenciador para esta empresa y comenzaron a perder clientes en favor de los servicios de sus competidores, hasta que pudieron identificar y clasificar los requisitos de los usuarios.”
Enfadar a los consumidores no es la única forma en que las empresas pueden perder dinero si su migración a la nube se ha hecho con una planificación deficiente. Otras malas decisiones sobre la infraestructura también pueden acarrear costes informáticos innecesarios. “La mayoría de los proveedores de nube operan con una combinación de cargos por ingesta y recursos informáticos,” explica Mike. “El hecho de que los desarrolladores puedan transferir recursos informáticos, a veces implica que toman decisiones de diseño que están lejos de ser óptimas y que no siempre tienen en cuenta elementos como la ubicación de las funciones en relación con el usuario.”
“Esto puede provocar no solo un mayor gasto de recursos informáticos, sino también el envío innecesario de datos entre regiones. El exceso de ingeniería puede provocar un aprovisionamiento excesivo y que las especificaciones de la infraestructura en la nube que da soporte a la aplicación sean demasiado elevadas, lo que puede dar como resultado costes adicionales.”
Mejor comunicación entre silos
No es solo la falta de visibilidad sobre los proveedores en la nube externos la que puede obstaculizar el rendimiento de la aplicación; una falta de visibilidad sobre lo que los compañeros están haciendo también puede ser problemática.
En grandes compañías, distintos equipos pueden ser responsables de servicios que se reparten entre distintos productos o dominios y eso puede crear silos en los que nadie tiene una visión completa de toda la cadena de prestación de servicios.
“Por ejemplo, un caso reciente implicaba la migración del clúster de una base de datos y coincidía en el tiempo con un trabajo programado en el que se tenían que realizar muchas llamadas a esa base de datos, lo que provocó que se acabara la capacidad restante disponible,” ejemplifica Mike. En consecuencia, una situación totalmente evitable hizo disminuir el rendimiento de la aplicación.
“Aunque siempre existe la posibilidad de que se dé una “tormenta perfecta” ocasional, donde una combinación impredecible de factores provoca las condiciones para una caída del servicio, se tratará de una excepción y no de la regla,” dice Mike.
“La verdad es que la mayor parte de las caídas podrían evitarse o tener una duración y un alcance más limitado si, por un lado, se redujera el impacto de los silos y, por otro, la toma de decisiones y la actividad en la cadena de prestación de servicios de extremo a extremo fuera transparente para todos los implicados.”
No pasarse con el ahorro de costes
Un motivo significativo de las migraciones a la nube es el ahorro de costes. Éste puede conseguirse no solo trasladándose de centros de datos en las infraestructuras físicas a otras en la nube, sino también cambiando de proveedor en busca de un mejor precio. Pero lo que puede parecer un ahorro de costes a corto plazo puede volverse todo un lastre para los ingresos si no se tiene en cuenta el impacto en el rendimiento.
“El enfoque no puede limitarse al ahorro de costes,” indica Mike. “Las compañías deben sopesar cómo optimizan su gasto en infraestructura mientras mantienen su rendimiento. El énfasis debe ponerse en crear una arquitectura más inteligente, con la efectividad del coste casi como producto derivado de tomar decisiones arquitectónicas más inteligentes y más centradas en el usuario.”
“Las empresas no pueden permitirse dar un paso atrás en rendimiento por ahorrarse unos euros,” añade Mike. “Los usuarios esperan un rendimiento rápido de las aplicaciones y las cargas de trabajo basadas en web y esta expectativa no hará más que aumentar.”
Eso no significa que no se pueda conseguir un ahorro de costes; sino que se trata más bien de adoptar un punto de vista global de toda la cadena de prestación de servicios y de encontrar los puntos en los que se puede ahorrar sin poner en peligro la experiencia del usuario final.
Mike da un par de ejemplos de cómo se puede conseguir: “la forma más efectiva y que permite, al mismo tiempo, lograr un mejor rendimiento a la hora de prestar servicio a los usuarios es colocar el contenido en caché a través de un CDN y contar con una infraestructura host de uso intensivo de recursos informáticos lo más cerca posible del lugar desde el que acceden los usuarios,” cuenta. “Un eCommerce que funcione con bases de datos backend de gran tamaño puede verse beneficiado con una estructura de bases de datos más distribuida que acelere las llamadas al backend (dando respuesta a las solicitudes de sus productos por parte de los usuarios) y reduzca el coste de dar servicio a cada posible comprador.”
Mejorar el rendimiento para el usuario y reducir costes es la combinación ganadora para todos. Pero solo es posible si te centras por igual en la experiencia del usuario y en la cuenta de resultados.