LFCA: Aprende disponibilidad, rendimiento y escalabilidad en la nube – Parte 14

En el tema anterior de nuestra serie LFCA, dimos una introducción a la computación en la nube, los diferentes tipos y nubes, y servicios en la nube, y te guiamos a través de algunos de los beneficios asociados con la computación en la nube.

Si tu negocio todavía se basa en el entorno de computación tradicional de TI, es hora de que subas de nivel y te cambies a la nube. Se estima que para finales de 2021, más del 90% de la carga de trabajo total se manejará en la nube.

Entre los principales beneficios asociados con la adopción de la computación en la nube se encuentran el rendimiento mejorado, la alta disponibilidad y la escalabilidad. De hecho, mencionamos estos como uno de los principales beneficios de usar la tecnología en la nube.

En este tema, nos enfocamos en la disponibilidad, el rendimiento y la escalabilidad en la nube y buscamos comprender cómo estos tres se fusionan para satisfacer las demandas de los clientes y garantizar que los usuarios accedan a sus datos según lo necesiten desde cualquier parte del mundo.

1. Disponibilidad en la nube

Las aplicaciones y servicios de TI de una organización son críticos y cualquier interrupción del servicio puede tener un profundo efecto en los ingresos. La expectativa de los clientes es que los servicios sean accesibles las 24 horas del día en cualquier momento y desde cualquier ubicación. Y eso es lo que la tecnología en la nube busca proporcionar.

La alta disponibilidad es el objetivo final de la computación en la nube. Busca proporcionar el mayor tiempo de actividad posible de los servicios de una empresa incluso en caso de interrupción que pueda ser causada por tiempos de inactividad del servidor sin precedentes o degradación de la red.

La alta disponibilidad es posible mediante la presencia de sistemas redundantes y de conmutación por error. Esto ocurre en un entorno de clúster donde múltiples servidores o sistemas realizan las mismas tareas y, por lo tanto, proporcionan redundancia.

Cuando un servidor falla, los demás pueden seguir funcionando y proporcionar los servicios ofrecidos por el servidor afectado. Un ejemplo perfecto de redundancia es la replicación de datos en múltiples servidores de base de datos en un clúster. En caso de que el servidor de base de datos principal en el clúster tenga un problema, otro servidor de base de datos seguirá proporcionando los datos requeridos por los usuarios a pesar del fallo.

La redundancia elimina un solo punto de fallo y garantiza que haya un 99.999% de disponibilidad de servicios y aplicaciones. El clustering también proporciona equilibrio de carga entre los servidores y garantiza que la carga de trabajo se distribuya equitativamente y que ningún servidor esté abrumado.

2. Escalabilidad en la nube

Otro sello distintivo de la computación en la nube es la escalabilidad. La escalabilidad es la capacidad de ajustar los recursos en la nube para satisfacer las demandas cambiantes. En pocas palabras, puede aumentar o disminuir los recursos de la nube según sea necesario para satisfacer la demanda sin comprometer la calidad de los servicios o el tiempo de inactividad.

Supongamos que tienes un blog que está comenzando a recibir visitas y más tráfico. Puedes agregar fácilmente más recursos informáticos como almacenamiento, RAM y CPU a tu instancia de computación en la nube para manejar la carga de trabajo adicional. Del mismo modo, puedes reducir los recursos cuando sea necesario. Esto asegura que solo pagues por lo que necesitas, lo que subraya las economías de escala que proporciona la nube.

La escalabilidad es doble: Escalado vertical y escalado horizontal.

Escalado vertical

También conocido como ‘escalado hacia arriba’, el escalado vertical implica agregar más recursos como RAM, almacenamiento y CPU a tu instancia de computación en la nube para acomodar una carga de trabajo adicional. Esto equivale a apagar tu PC física o servidor para actualizar la RAM o agregar un disco duro adicional o un SSD.

Escalado horizontal

El escalado horizontal, también conocido como ‘escalado hacia afuera’, implica agregar más servidores a tu grupo de servidores preexistentes para garantizar la distribución de la carga de trabajo en varios servidores. Con el escalado horizontal, no estás limitado a la capacidad de un solo servidor, a diferencia del escalado vertical. Esto proporciona más escalabilidad y menos tiempo de inactividad.

Escalar hacia afuera es más deseable en comparación con escalar hacia arriba

Con la escalabilidad horizontal, básicamente estás añadiendo más recursos como servidores o almacenamiento a tu conjunto de recursos ya existente. Esto te permite combinar la potencia y el rendimiento de varias instancias de cómputo en una sola, obteniendo así un mejor rendimiento en comparación con simplemente añadir recursos en un único servidor. Los servidores adicionales implican que no tendrás que lidiar con un déficit de recursos.

Además, la escalabilidad horizontal proporciona redundancia y tolerancia a fallos de tal manera que incluso si un servidor se ve afectado, el resto continuará proporcionando acceso a los servicios requeridos. La escalabilidad vertical está asociada con un único punto de fallo. Si la instancia de cómputo falla, entonces todo se cae con ella.

La escalabilidad horizontal también ofrece máxima flexibilidad en comparación con la escalabilidad vertical donde las aplicaciones se construyen como una sola unidad grande. Esto hace que sea más difícil de gestionar, actualizar o cambiar secciones de código sin tener que reiniciar todo el sistema. Escalar hacia fuera permite el desacoplamiento de aplicaciones y permite una actualización sin problemas con un tiempo de inactividad mínimo.

3. Rendimiento en la nube

Asegurar que el rendimiento de la aplicación satisfaga las demandas del cliente puede ser una tarea bastante difícil, especialmente si tienes múltiples componentes en diferentes entornos que necesitan comunicarse constantemente entre sí.

Los problemas como la latencia probablemente se manifiesten e impacten en el rendimiento. Además, no es fácil predecir el rendimiento cuando los recursos son compartidos por varias entidades. Sin embargo, aún puedes lograr un alto rendimiento y mantenerte a flote implementando las siguientes medidas.

1. Instancia en la Nube

Asegúrate de usar las instancias en la nube adecuadas con suficientes recursos para manejar las cargas de trabajo de tus aplicaciones y servicios. Para aplicaciones intensivas en recursos, asegúrate de provisionar suficiente RAM, CPU y recursos de almacenamiento a tu instancia en la nube para evitar un posible déficit de recursos.

2. Balanceador de Carga

Implementa un balanceador de carga para distribuir equitativamente el tráfico de red entre tus recursos. Esto garantizará que ninguna de tus aplicaciones se vea abrumada por la demanda. Supongamos que tu servidor web está recibiendo mucho tráfico que está causando retrasos e impactando en el rendimiento.

A perfect solution would be to implement horizontal scaling with a total of 4 web servers sitting behind a load balancer. The load balancer will distribute network traffic across the 4 web servers and ensure none is overwhelmed by the workload.

3. Caché

Utiliza soluciones de caché para acelerar el acceso a archivos por parte de las aplicaciones. Las cachés almacenan datos leídos con frecuencia y, por lo tanto, eliminan las búsquedas constantes de datos que pueden afectar el rendimiento. Reducen la latencia y la carga de trabajo, ya que los datos ya están en caché, mejorando así los tiempos de respuesta.

El almacenamiento en caché se puede implementar en varios niveles, como el nivel de la aplicación, el nivel de la base de datos. Las herramientas de caché populares incluyen Redis, Memcached y la caché de Varnish.

4. Monitoreo del rendimiento

Por último, asegúrese de monitorear el rendimiento de sus servidores y aplicaciones. Los proveedores de la nube ofrecen herramientas nativas que pueden ayudarlo a mantener un ojo en sus servidores en la nube desde un navegador web.

Además, puedes tomar la iniciativa e instalar herramientas de monitoreo gratuitas y de código abierto que pueden ayudarte a mantener un ojo en tus aplicaciones y servidores. Ejemplos de tales aplicaciones incluyen Grafana, Netdata y Prometheus, por nombrar algunos.

Conclusión

No podemos enfatizar lo suficiente la importancia de la disponibilidad, escalabilidad y rendimiento en la nube. Estos tres factores determinan la calidad del servicio que obtendrás de tu proveedor de servicios en la nube y, en última instancia, marcan la diferencia entre el éxito o el fracaso de tu negocio.

Source:
https://www.tecmint.com/cloud-availability-performance-and-scalability/