Etiquetas

Muchos aspectos del diseño de aplicaciones para Azure son muy conocidos en el desarrollo on-premise, sin embargo hay varias diferencias clave sobre cómo se comporta la plataforma y los servicios subyacentes. Conocer estas diferencias y, en consecuencia, saber cómo diseñar para la plataforma (no con ella) es fundamental para crear aplicaciones que cumplen la promesa de escalarse elásticamente en la nube.

Escalar Horizontal y no vertical

La diferencia principal al pasar de una aplicación local a Cloud Services de Azure está relacionado con la manera en que se escalan las aplicaciones. El método tradicional para compilar aplicaciones grandes se basa en una combinación de escala horizontal (web servers y stateless application) y escala vertical (comprar un sistema de memoria mayor o de varios núcleos, instalar un servidor de base de datos, construir un data center mayor, etc.). En la nube la escala vertical no es una opción realista; la única manera de lograr aplicaciones verdaderamente escalables es el diseño explícito para escalar horizontalmente.

El verdadero desafío para escalar horizontalmente consiste en identificar los aspectos de la aplicación que tengan una dependencia en un servicio de escala vertical y convertirlos a una implementación de escala horizontal. El principal candidato para una dependencia de escala vertical suele ser la base de datos relacionales (SQL Server o Base de datos SQL de Azure).

Dado que la escala horizontal forma la base arquitectónica de Azure Cloud Services, las aplicaciones deben diseñarse para trabajar con los almacenamientos de datos de escala horizontal. Una manera de lograrlo es crear explícitamente particiones de los datos en fragmentos menores, de esta forma se alcanza la escala con las particiones de forma que se evitan muchas de las desventajas del diseño de la escala vertical.

Conocer los límites para escalar

En cloud computing cada recurso tiene un límite. Ya sea una instancia de un rol individual, una cuenta de almacenamiento, un servicio en la nube o incluso un data center, cada recurso disponible en Azure tiene un límite finito. Pueden ser límites de gran tamaño, como la cantidad de almacenamiento disponible en un data center.

Teniendo esto en mente, el escalado consiste en: crear particiones de la carga y componerla en varias unidades de escalado, ya sean máquinas virtuales, bases de datos, cuentas de almacenamiento, servicios en la nube o centros de datos.

Podemos usar el término unidad de escala para hacer referencia a un grupo de recursos que pueden:

a) Controlar un grado definido de carga.

b) Combinarse para administrar la carga adicional.

Por ejemplo, una cuenta de Almacenamiento de Azure tiene un tamaño máximo de 100 TB. Si necesita almacenar más de 100 TB de datos, deberá usar varias cuentas de almacenamiento (es decir, al menos dos unidades de escala de almacenamiento).

image

imageimage

image

imageimageimage

image