Cloud elasticity: qué es y para qué sirve la elasticidad en la nube

13min

Una de las muchas ventajas de los entornos cloud es su capacidad para ajustarse a la demanda de las necesidades de los proyectos en cada momento. Esta capacidad puede realizarse de una manera sencilla y automática, dotando a las empresas de herramientas que pueden optimizar sus inversiones en infraestructura y asegurando a la vez la mejor disponibilidad y el rendimiento sobre las aplicaciones.

Índice

¿Qué es cloud elasticity o elasticidad en la nube?

La elasticidad en la nube es una característica muy importante que nos ofrecen los entornos cloud. Consiste en la capacidad de ajustar la infraestructura para adaptarse a la demanda necesaria en cada momento por las aplicaciones.

Gracias a la elasticidad de la nube podemos conseguir fácilmente que los recursos de infraestructura aumenten cuando existe una mayor demanda y también que disminuyan cuando esa demanda elevada ya no es necesaria. Todo esto se puede automatizar para que se realice dinámicamente y sin intervención humana a través del autoescalado, siendo esta la gran ventaja de la elasticidad en la nube.

Diferencia entre elasticidad y escalabilidad

La elasticidad y la escalabilidad son dos conceptos estrechamente relacionados pero que se aplican en contextos y situaciones ligeramente distintos.

La elasticidad es la característica que nos ofrece la nube para ajustar las infraestructuras de manera dinámica y automática. Estos ajustes se realizan en tiempo real y pueden configurarse para que se produzcan sin la intervención manual, una vez se han definido las políticas y estrategias de autoescalado.

Sin embargo, la escalabilidad es algo más genérico que puede aplicarse a cualquier sistema, desde la infraestructura como al software o incluso a otros aspectos de los negocios en general. La escalabilidad en los sistemas es su capacidad de crecer de manera sencilla, según aumenta la demanda o cambian las necesidades del negocio. Para ello hay que planificar correctamente una estrategia a largo plazo.

La infraestructura en cloud es altamente escalable porque puede atender desde pequeñas cantidades de tráfico hasta necesidades enormes. Sin embargo la elasticidad es la capacidad operativa que nos permite ajustar dinámicamente los recursos en cada momento, según los requisitos variables de los proyectos a lo largo de los días, meses o campañas. Esto no es posible con servidores tradicionales, como los dedicados, que tienen unos recursos estáticos que no pueden aumentar o disminuir automáticamente.

¿Por qué es importante la elasticidad en la nube?

La elasticidad en la nube es importante porque nos ofrece la posibilidad de cambiar configuraciones dinámicamente en la infraestructura que tenemos contratada en el proveedor cloud, de este modo conseguimos numerosos beneficios.

Optimización de costos en infraestructuras cloud

Gracias a la elasticidad de la infraestructura los costos operacionales pueden estar optimizados de manera precisa, según las necesidades específicas del proyecto en el tiempo.

La elasticidad hace que no sea necesario dimensionar servidores pensando en necesidades futuras de tráfico sino únicamente en las necesidades presentes. Incluso, aunque en determinado momento se requieran más recursos, es perfectamente posible volver a configuraciones menos pesadas si las necesidades disminuyen eventualmente. Todo eso hace que la inversión que realizamos en infraestructuras sea siempre la que realmente necesitamos.

Mejora del rendimiento en aplicaciones

Aparte de la disminución de los costes en infraestructura también se debe destacar la posibilidad de una mejora en el rendimiento de las aplicaciones, ya que una vez configurado el autoescalado podemos evitar que se saturen los sistemas que tenemos contratados, por lo que no se verá mermado el rendimiento.

Al poder ajustar dinámicamente los recursos en la nube, las aplicaciones siempre tendrán todo lo necesario para funcionar y atender a la demanda de cada momento. Todo esto evita posibles cuellos de botella o funcionamientos lentos sí los servidores se saturan.

Flexibilidad ante picos de demanda

Hay ocasiones en las que los sistemas experimentan ciertos picos de demanda. Esto no ocurre siempre pero es algo frecuente en muchos tipos de aplicaciones y negocios. Por ejemplo, en los negocios online hay momentos del año en los que surge una mayor cantidad de demanda, como las campañas de navidad o black friday. En estos momentos, gracias al cloud elasticity, podemos estar seguros que la infraestructura será capaz de asumir las necesidades del negocio, así como volver a configuraciones menos exigentes cuando el pico de demanda termina.

Esto mismo puede ocurrir con cualquier tipo de negocio por ejemplo cuando se realiza una campaña por email marketing, en la cual se puede impactar a miles o cientos de miles de personas. Gracias a la elasticidad en la nube en estos momentos los recursos de los servidores pueden aumentar dinámicamente ofreciendo el rendimiento necesario y la disponibilidad para atender la demanda puntual con el lanzamiento de la campaña.

Adaptación al crecimiento del negocio

La elasticidad en la nube también nos asegura la escalabilidad de los recursos que tenemos contratados de una manera sencilla y suavizada ajustándose siempre a las necesidades de los negocios.

Ventajas de la cloud elasticity para empresas y proyectos

Ahora que hemos visto las ventajas en lo que respecta a la infraestructura y el dinamismo que nos aporta la elasticidad del cloud vamos a ver como esas ventajas impactan directamente en la mejora de los procesos de las empresas y sus negocios online.

Reducción de gastos operativos

Gracias a la elasticidad en la nube los gastos operativos se reducirán, para ajustarse exactamente a la demanda real. Esto hace posible que no tengamos que sobredimensionar la infraestructura pensando en requisitos futuros, lo que será fundamental para evitar gastos innecesarios. Incluso, si los servidores escalan para atender una demanda puntual, siempre que ésta haya finalizado los recursos podrán volver a su estado anterior, ajustando los gastos en todo momento.

Escalabilidad automática y en tiempo real

La elasticidad de la nube nos ofrece la posibilidad de hacer una escalado automático y en tiempo real de los recursos, lo que es muy cómodo porque evita que tengamos que estar pendientes de manera continua en las métricas, para reaccionar al instante. En lugar de ello se realizan unas configuraciones que permiten tomar medias en todo momento en función de unas políticas y estrategias bien definidas.

Mayor disponibilidad de servicios

También nos asegura una mayor disponibilidad de los servicios, ya que la capacidad de escalar automáticamente permite evitar sobrecargas y posibles fallos de funcionamiento cuando los servidores están saturados.  Esto es algo fundamental para muchos tipos de negocios que requieren garantizar siempre una elevada disponibilidad, garantizando también el rendimiento.

Optimización de la experiencia de usuario

Todo lo anterior también hace que la experiencia de usuario de las aplicaciones desplegadas en la nube sea mejor, o al menos no pueda verse limitada ante casos de alta demanda de tráfico.

Soporte para la innovación y nuevas tecnologías

Finalmente, gracias a la elasticidad del cloud podemos asegurarnos de que cualquier tipo de uso de nuestros servidores podrá ser atendido, lo que nos dará pie a experimentar con todo tipo de soluciones, facilitando la innovación tecnológica.

Casos de uso de la elasticidad en la nube

La elasticidad en la nube la podemos aprovechar prácticamente en cualquier tipo de negocio, ya que es algo que resulta siempre positivo, tanto para proyectos pequeños como para los más exigentes. De todos modos, lo cierto es que existen algunos casos de uso que resultan bastante más representativos y que vamos a repasar en los próximos puntos.

Comercio electrónico y temporadas de alta demanda

Un ejemplo típico, que ya hemos comentado antes, es ofrecer soporte a la demanda ante diversos momentos de las temporadas o campañas en el comercio electrónico. Gracias a la elasticidad cloud podremos estar seguros que los sistemas funcionarán perfectamente cuando existan más usuarios en las tiendas online, evitando que posibles saturaciones nos hagan perder rendimiento en las temporadas con mayor venta.

Plataformas de streaming y medios digitales

Otro caso que resulta muy claro es el de los servicios de streaming ya sean basados en audio como  Spotify o video, como el caso de plataformas similares a Netflix.

En este tipo de servicios suele ocurrir que los momentos de consumo aumentan considerablemente en determinadas franjas horarias, por ejemplo, cuando la gente sale del trabajo y tiene tiempo de estar enfrente de la televisión.

Para estos casos es indispensable contar con la elasticidad de modo que la infraestructura se ajuste a las necesidades de demanda en cada momento del día. Si no existiera se tendría que invertir mucho más en infraestructura, sabiendo que muchos momentos del día estaría desaprovechada.

Startups en fase de crecimiento

La elasticidad también es muy aconsejable para los proyectos en fase de crecimiento como los de las startups. Está elasticidad permitirá empezar contratando un conjunto de recursos mínimos lo que ajustará la inversión en infraestructura siempre a la que requiera el proyecto. Gracias a la elasticidad podrá escalarse el servicio de una manera sencilla, a medida que la demanda aumenta.

Aplicaciones SaaS y entornos multiusuario

El modelo de negocio de las plataformas SaaS también es un buen ejemplo de caso de uso donde se puede aprovechar las características de la elasticidad en la nube. Este tipo de proyectos tienen que atender a grandes cantidades de usuarios, que frecuentemente tienen una tendencia temporal con altos y bajos. Por ejemplo, podría requerir muchos más recursos durante la semana que en los finales de semana.

Proyectos de Big data e Inteligencia Artificial

La Inteligencia Artificial o los proyectos de análisis de datos y Big data son también grandes candidatos a beneficiarse de la nube ya que las necesidades de análisis generalmente cambian mucho a lo largo del tiempo. En este tipo de proyectos es necesaria una elevada capacidad de procesamiento muy puntual, por ejemplo cuando se deben entrenar modelos o analizar datos de manera masiva, requiriendo menos recursos en otros instantes. Es por ello que la elasticidad cloud encaja perfectamente..

Buenas prácticas para aprovechar la elasticidad en la nube

Para mejorar la elasticidad en la nube es necesario seguir una serie de buenas prácticas, más allá de habilitar el auto escalado de los recursos en las plataformas del cloud. Vamos a ver algunos consejos útiles que creemos importantes.

Uso de herramientas de monitoreo y alertas

Es necesario utilizar herramientas de monitorización para poder conocer las necesidades de nuestras infraestructuras y también para estar atentos a cualquier cambio al cual tengamos que reaccionar. Todo esto nos permitirá entender mejor nuestro negocio y la variabilidad de la demanda que pueda producirse a lo largo del tiempo, además de estar seguros que las configuraciones de autoescalado están funcionando de la manera esperada.

También es importante que se configuren las correspondientes alertas cuando los sistemas presente en saturación, ya sea en factores como el uso de CPU memoria o disco, así como las condiciones de red.

Cada plataforma cloud tiene sus propias herramientas de monitorización y resultará importante que empecemos ajustándolas, para que puedan alertarnos de situaciones relevantes para nuestro negocio y evitar malos funcionamientos o sorpresas en la facturación.

Definición de políticas de autoescalado

Las herramientas de autoescalado se configuran mediante la definición de políticas. Tienes que asegurarte que estas sean suficientemente claras y viables para tu propio negocio.

Generalmente las herramientas del cloud permiten el ajuste del autoescalado por medio de diversos factores que pueden ser más o menos relevantes para ti. Cuando realices la configuración tienes que asegurarte de prevenir tanto el sobredimensionado de la infraestructura como la asignación insuficiente de recursos.

En este punto también conviene mencionar que existen diversas estrategias de escalado, básicamente la horizontal y la vertical. El escalado vertical implica la configuración de los recursos de cada una de las máquinas, mientras que el escalado horizontal implica el cambio en el número de instancias de máquinas, para atender la demanda. Cada una de estas estrategias tiene sus ventajas e inconvenientes que deberás llevar en consideración.

Optimización de recursos según la carga de trabajo

A la hora de definir políticas y estrategias para la elasticidad del cloud también tienes que tener en cuenta que no todos los servicios requieren el mismo tipo de recursos.

Tienes que analizar cuál es la demanda de tu negocio y las aplicaciones desplegadas en el cloud para saber si requiere recursos de un tipo o de otro. Por ejemplo unos negocios pueden requerir la creación de instancias temporales para atender a la demanda, mientras que para otros puede venir mejor aumentar los recursos de instancias estables.

Evaluación constante del ROI en la nube

Por último, es conveniente revisar continuamente si nuestras configuraciones y políticas de elasticidad están dando los resultados esperados. De este modo nos estaremos asegurando que el retorno de la inversión realizada en infraestructura esté siempre optimizado.

Para ello es importante revisar las facturas de servicios en el cloud, junto con el estudio de la monitorización de los recursos a lo largo del periodo.

Desafíos y limitaciones de la elasticidad en la nube

Vamos a acabar realizando un análisis de algunos de los desafíos más importantes a la hora de optimizar los recursos en la nube y garantizar que hacemos un uso óptimo de la elasticidad, junto con el control de la inversión.

Riesgos de una mala configuración

Las herramientas para la elasticidad en el cloud son muy potentes pero también pueden llevarnos a fallos de configuración que pueden resultar negativos por diversos motivos.

Una configuración incorrecta del autoescalado puede provocar cuellos de botella en el sistema pero también podría provocar un sobredimensionamiento de la infraestructura aumentando los costes. Es por ello que es importante controlar las métricas para garantizar que nuestros recursos estén bien utilizados.

Costes inesperados por escalado automático

Otro caso que puede resultar especialmente negativo es el aumento en los costes de manera inesperada por una mala configuración. Esto podría ocurrir si por cualquier caso hemos configurado el autoescalado incorrectamente, asignando mayores recursos de los que eran necesarios o porque no se vuelva a configuraciones menos exigentes cuando la demanda ha terminado.

Es por ello que es importante seguir las métricas de los servidores, así como prestar atención a la evolución del gasto, configurando las correspondientes alertas.

Complejidad en la monitorización y gestión

Dependiendo de las aplicaciones y las necesidades de los despliegues también puede ocurrir que la complejidad se dispare. Esto es bastante frecuente en algunas plataformas cloud que tienen excesivas opciones de configuración.

Para mitigar posibles problemas es posible utilizar prácticas de infraestructura como código (IaC), las cuales nos permitirán realizar las configuraciones una vez y reproducirlas de manera fiel, sin fallos humanos. También nos permitirán ajustarlas de una manera más detallada a lo largo del tiempo, así como mantener un control más apurado de los cambios mediante los sistemas de control de versiones como Git.

Fernando Fuentes

Productos relacionados: