Modelos de Arquitectura para la Nube

INTRODUCCIÓN

Amazon lanzó una versión de prueba de su Elastic Computing Cloud (EC2) el 24 de agosto de 2006. EC2 ha permitido tomar infraestructura y acceder a ella en Internet. El término “Cloud Computing” fue acuñado un año después, para describir el fenómeno que no solo alquilaba la infraestructura en Internet sino que incluía una amplia gama de ofertas de servicios tecnológicos, incluida la Infraestructura como Servicio (IaaS), web hosting, plataforma como servicio (PaaS), software como servicio (SaaS), red, archivo, computación de alto rendimiento (HPC) y muchos otros.

Modelos de Arquitectura para la Nube

La madurez de muchas tecnologías como Internet, redes de alto rendimiento, virtualización y computación grid ha jugado un papel vital en la evolución y el éxito de “Cloud Computing”. Las plataformas en la nube son altamente escalables, pueden estar disponibles a pedido, redimensionadas o escaladas rápidamente según sea necesario y son muy convenientes. Las empresas explotan estos factores para fomentar la innovación, que es el mantra de la supervivencia y el crecimiento de las empresas de la nueva era.

Un aumento al alza en la adopción de la nube por parte de empresas de todos los tamaños confirmó la idea de que es más que una moda pasajera y que seguirá siendo. A medida que las plataformas en la nube alcanzan la madurez y se abordan algunas de las inhibiciones, por razones auténticas, con respecto a la seguridad y la propiedad, cada vez más empresas se verán trasladadas a la nube.

Diseñar sistemas complejos y altamente distribuidos siempre ha sido una tarea desalentadora. Las plataformas en la nube proporcionan muchos de los elementos y bloques de infraestructura que facilitan la creación de tales aplicaciones. Abre la puerta a posibilidades ilimitadas. Pero con las oportunidades vienen los desafíos. La potencia que ofrecen las plataformas en la nube no garantiza una implementación exitosa, explotándolas correctamente.

Este artículo pretende presentar a los lectores algunos de los modelos arquitectónicos populares y útiles que a menudo se implementan para explotar el potencial de las plataformas en la nube. Los modelos en sí no son específicos de la plataforma en la nube, pero en realidad se pueden implementar allí. Aparte de eso, estos esquemas son genéricos y en la mayoría de los casos se pueden aplicar a varios escenarios de nube como IaaS y PaaS. Donde sea posible, Azure, AWS o ambos citaron los servicios (o herramientas) más útiles (o herramientas) que podrían ayudar a implementar el modelo en discusión.

ESCALA HORIZONTAL

Tradicionalmente, obtener computadoras más potentes (con un mejor procesador, más RAM o mayor espacio de almacenamiento) era la única forma de obtener más potencia de procesamiento cuando era necesario. Este enfoque se llamó escalamiento vertical. Además de ser inflexible y costoso, tenía algunas limitaciones intrínsecas: el poder de una pieza de hardware no se puede mover más allá de un cierto umbral y la estructura monolítica de la infraestructura no se puede equilibrar en términos de carga. La escala horizontal (escala) tiene un mejor enfoque. En lugar de hacer que una pieza de hardware sea cada vez más grande, obtiene más recursos de procesamiento al agregar más computadoras, cada una con potencia informática limitada. Este nuevo enfoque no limita la cantidad de computadoras (llamadas nodos) que pueden participar y, por lo tanto, proporciona recursos de procesamiento teóricamente infinitos. Los nodos individuales pueden tener un tamaño limitado, pero puede agregarlos o eliminarlos para satisfacer la demanda cambiante. Este enfoque ofrece una capacidad prácticamente ilimitada junto con la flexibilidad para agregar o eliminar nodos cuando los requisitos cambian y los nodos pueden equilibrarse con la carga.

En el escalado horizontal, generalmente hay diferentes tipos de nodos que realizan funciones específicas, por ejemplo, Servidor web, Servidor de aplicaciones o Servidor de bases de datos. Es probable que cada uno de estos tipos de nodo tenga una configuración específica. Cada una de las instancias de un tipo de nodo (por ejemplo, Servidor web) puede tener configuraciones similares similares. Las plataformas en la nube permiten la creación de instancias del nodo a partir de imágenes y muchas otras funciones de administración que pueden automatizarse. Recuerde que usar nodos homogéneos (nodos con configuraciones idénticas) para un tipo específico de nodo es un mejor enfoque.

La escala horizontal es muy adecuada para escenarios donde:

  • Se requiere o se requerirá una gran potencia de cómputo en el futuro que no puede ser suministrada ni siquiera por la computadora más grande disponible
  • Las necesidades de procesamiento están cambiando y puede haber caídas y picos que pueden anticiparse o no.
  • La aplicación es crítica para el negocio y no puede permitirse una desaceleración en el rendimiento o el tiempo de inactividad

Este modelo generalmente se usa junto con el modelo de terminación de nodos (que cubre las preocupaciones relacionadas con la liberación de nodos de computación) y el modelo de escalado automático (que cubre la automatización).

Es muy importante mantener los nodos sin estado e independientes entre sí (nodos autónomos). Las aplicaciones deben almacenar los detalles de las sesiones de usuario en un nodo separado con algo de espacio de almacenamiento persistente: en una base de datos, espacio de almacenamiento en la nube, caché distribuida, etc. El nodo sin estado garantizará una mejor conmutación por error, ya que el nuevo nodo que aparece en caso de error siempre puede recopilar los detalles desde allí. También eliminará la necesidad de implementar sesiones fijas y será posible implementar un equilibrio de carga de round robin simple y efectivo.

Las plataformas de nube pública están optimizadas para el escalado horizontal. Las instancias de computadora (nodos) pueden crearse redimensionadas en la parte superior o inferior, con equilibrio de carga y finalizadas a pedido. La mayoría de ellos también permiten el equilibrio de carga automático; failover horizontal basado en reglas y escalado.

Dado que el escalado horizontal puede satisfacer las necesidades cambiantes, es importante comprender los patrones de uso. Dado que hay varias instancias de varios tipos de nodos y sus números pueden cambiar dinámicamente al recopilar datos operativos, combinarlos y analizarlos para derivar cualquier significado no es una tarea fácil. Hay herramientas de terceros disponibles para automatizar esta tarea, y Azure también ofrece algunas funcionalidades. Windows Monitor Diagnostics (WAD) es un servicio de plataforma que se puede usar para recopilar datos de todas las instancias de su rol y almacenarlos centralmente en una sola cuenta de almacenamiento de Windows Azure. Una vez que se recopilan los datos, el análisis y la presentación de informes se hacen posibles. Otra fuente de datos operativos es la función de Análisis de almacenamiento de Windows Azure, que incluye métricas de acceso y registro desde BLOB, tablas y colas de almacenamiento de Windows Azure.

Microsoft Azure tiene el portal de Windows Azure y Amazon proporciona el panel de Amazon Web Services como portales de administración. Ambos proporcionan API para el acceso programático a estos servicios.

FLUJO DE TRABAJO DE LA COLA CENTRAL

Las colas se han utilizado para implementar eficazmente el modo de procesamiento asincrónico durante mucho tiempo. Los modelos de flujo de trabajo centrados en la cola implementan la entrega asíncrona de solicitudes de comando desde la interfaz de usuario al servicio de procesamiento de back-end. Este modelo es adecuado para casos en los que la acción del usuario puede tardar mucho tiempo en completarse y el usuario no puede verse obligado a esperar tanto tiempo. También es una solución efectiva para casos en los que el proceso depende de otro servicio que puede no estar siempre disponible. Dado que las aplicaciones nativas de la nube pueden estar altamente distribuidas y tener procesos de fondo con los que puede necesitar conectarse, este modelo es muy útil. Desacopla con éxito las capas de aplicación y garantiza la entrega correcta de mensajes, lo cual es esencial para muchas aplicaciones que se ocupan de transacciones financieras. Sitios web que se ocupan de cargar archivos multimedia y; procesos por lotes, flujos de trabajo de aprobación, etc. son algunos de los escenarios aplicables.

Debido a que el enfoque basado en la cola descarga parte del procesamiento en la infraestructura de la cola que se puede suministrar y escalar por separado, ayuda a optimizar los recursos de procesamiento y administrar la infraestructura.

Aunque el modelo de flujo de trabajo centrado en la cola tiene beneficios, plantea desafíos que deben considerarse de antemano para su implementación efectiva.

Las colas deben garantizar que los mensajes recibidos se procesen correctamente al menos una vez. Por esta razón, los mensajes no se eliminan permanentemente hasta que la solicitud se procesa con éxito y pueden estar disponibles repetidamente después de un intento fallido. Dado que el mensaje se puede recopilar varias veces y desde múltiples nodos, mantener el proceso empresarial idempotente (donde múltiples procesos no alteran el resultado final) podría ser una tarea complicada. Esto solo se complica en entornos de nube donde los procesos pueden ser de larga duración, abarcando nodos de servicio y pueden tener más o más tipos de almacenes de datos.

Otro problema que plantea la cola es el de los mensajes venenosos. Estos son los mensajes que no pueden obtener procesos debido a algún problema (por ejemplo, una dirección de correo electrónico que es demasiado larga o con caracteres no válidos) y continúan apareciendo en la cola. Algunas colas proporcionan una cola de mensajes no enrutable donde esos mensajes se enrutan para su posterior análisis. La implementación debe considerar escenarios de mensajes tóxicos y cómo manejarlos.

Debido a la naturaleza intrínseca del procesamiento asíncrono de colas, las aplicaciones que lo implementan deben descubrir formas de notificar al usuario sobre el estado y la finalización de las actividades iniciadas. Los mecanismos de sondeo largos están disponibles para solicitar el servicio de fondo incluso en estado.

Microsoft Azure ofrece dos mecanismos para implementar el procesamiento asincrónico: colas y buses de servicio. Las colas le permiten comunicar dos aplicaciones utilizando el método simple: una aplicación coloca el mensaje en la cola y otra aplicación lo toma. El bus de servicio proporciona un mecanismo de publicación y suscripción. Una aplicación puede enviar mensajes a un tema, mientras que otras aplicaciones pueden crear suscripciones a este tema. Esto permite una comunicación de uno a muchos entre un conjunto de aplicaciones, permitiendo que el mismo mensaje sea leído por múltiples destinatarios. El bus de servicio también permite la comunicación directa a través de su servicio de reenvío, proporcionando una forma segura de interactuar a través de firewalls. Tenga en cuenta que Azure cobra por cada solicitud de eliminación de colas, incluso si no hay mensajes en espera, por lo que se debe tener cuidado para reducir la cantidad de solicitudes innecesarias.

ESCALAMIENTO AUTOMÁTICO

El escalado automático maximiza los beneficios del escalado horizontal. Las plataformas en la nube proporcionan disponibilidad, escalado y terminación de recursos bajo demanda. También proporcionan un mecanismo para recopilar señales de uso de recursos y gestión automatizada de recursos. El escalado automático aprovecha estas características y gestiona los recursos de la nube (agregando más cuando se necesitan más recursos, liberando los existentes cuando ya no se necesitan) sin intervención manual. En la nube, este modelo a menudo se aplica con el modelo de escala horizontal. La escala automática no solo la hace efectiva y sin errores, sino que el uso optimizado también reduce los costos.

Dado que la escala horizontal se puede aplicar a las capas de aplicación individualmente, la escala automática se debe aplicar por separado a ellas. Los eventos conocidos (p. Ej., La reconciliación nocturna, el procesamiento trimestral de los datos sabios de la región) y las señales ambientales (p. Ej., Aumento en el número de usuarios simultáneos, la recopilación constante de acceso al sitio) son las dos fuentes principales que podrían utilizarse para establecer reglas de escalado automático. Aparte de eso, las reglas podrían construirse sobre la base de entradas como el uso de la CPU, la memoria disponible o la longitud de la cola. Se pueden construir reglas más complejas sobre la base de datos analíticos recopilados por la aplicación, como el tiempo de proceso promedio para un formulario en línea.

Los proveedores de servicios en la nube tienen ciertas reglas de facturación basadas en las horas del reloj. Además, los SLA que proporcionan pueden requerir un número mínimo de recursos activos en todo momento. Descubra que implementar el escalado automático de manera demasiado activa no termina siendo costoso o pone a la empresa fuera de las reglas de SLA. La función de cambio de tamaño automático incluye advertencias y notificaciones que deben configurarse y utilizarse con prudencia. Además, si es necesario, puede habilitar o deshabilitar el cambio de tamaño automático.

Las plataformas en la nube proporcionan API y le permiten crear un cambio de tamaño automático en la aplicación o crear una solución personalizada de cambio de tamaño automático. Tanto Azure como AWS proporcionan soluciones de escalado automático y deberían ser más efectivos. Sin embargo, tienen un precio. También hay productos de terceros que permiten el cambio de tamaño automático.

Azure proporciona un componente de software llamado Bloque de aplicación de cambio de tamaño automático de Windows Azure (WASABi para abreviar) que las aplicaciones nativas de la nube pueden aprovechar para implementar el cambio de tamaño automático.

MODELO DE SEÑAL OCUPADA

Las solicitudes de servicios en la nube (por ejemplo, servicio de datos o servicio de administración) pueden presentar un error temporal cuando están muy ocupados. Del mismo modo, los servicios que residen fuera de la aplicación, dentro o fuera de la nube, a veces pueden no responder de inmediato a la solicitud de servicio. A menudo, el período en el que el servicio estaría ocupado sería muy corto y solo otra solicitud podría tener éxito. Dado que las aplicaciones en la nube están altamente distribuidas y conectadas a estos servicios, una estrategia premeditada para administrar estas señales ocupadas es muy importante para la confiabilidad de la aplicación. En el entorno de la nube, tales fallas a corto plazo son un comportamiento normal y estos problemas son difíciles de diagnosticar, por lo que tiene aún más sentido pensarlo de antemano.

Podría haber muchas razones posibles para tales fallas (un pico inusual en la carga, una falla de hardware, etc.). Dependiendo de las circunstancias, las aplicaciones pueden adoptar muchos enfoques para gestionar las señales de ocupado: reintentar inmediatamente, reintentar después de un retraso, reintentar con un retraso creciente, reintentar con un retraso creciente en incrementos fijos (retroceso lineal) o con incrementos exponenciales (retroceso exponencial) . Las aplicaciones también deben decidir sobre su enfoque cuando detener otros intentos y lanzar una excepción. Además, el enfoque puede variar según el tipo de aplicación, ya sea que gestione directamente las interacciones del usuario, un servicio o un proceso por lotes de fondo, y así sucesivamente.

Azure proporciona bibliotecas de cliente para la mayoría de sus servicios que le permiten programar comportamientos de reintento en aplicaciones que acceden a esos servicios. Proporcionan una implementación sencilla del comportamiento predeterminado y también permiten la creación de personalizaciones. Microsoft tiene disponible una biblioteca conocida como el Bloque de aplicación de manejo de fallas transitorias, también conocido como Topacio.

FALLO DE NODO

Los nodos pueden fallar debido a varias razones, como fallas de hardware, aplicaciones que no responden, cambio de tamaño automático, etc. Dado que estos eventos son comunes para los escenarios en la nube, las aplicaciones deben asegurarse de que se administran de manera proactiva. Dado que las aplicaciones pueden ejecutarse en varios nodos simultáneamente, también deberían estar disponibles cuando se produce un bloqueo de un solo nodo. Algunos escenarios de error pueden enviar señales por adelantado, pero otros pueden no serlo y, de la misma manera, diferentes escenarios de error pueden o no ser capaces de retener los datos guardados localmente. Implemente un nodo adicional necesario (distribución N + 1), detecte y procese las señales generadas por la plataforma cuando estén disponibles (tanto Azure como AWS envían advertencias para algunos de los errores de nodo), construyendo un mecanismo robusto para manejar excepciones en aplicaciones, archivando La aplicación y el archivo del usuario con un archivo confiable, evitando sesiones difíciles, la optimización de procesos de larga duración son algunas de las mejores prácticas que ayudarán a administrar correctamente los errores de nodo.

DISTRIBUCIÓN MULTISITIO

Es posible que sea necesario implementar aplicaciones en los centros de datos para implementar la conmutación por error en ellas. También mejora la disponibilidad al reducir la latencia de la red, ya que las solicitudes se pueden enrutar al centro de datos más cercano. A veces puede haber razones específicas para implementaciones entre sitios, como regulaciones gubernamentales, integración inevitable con el centro de datos privado, requisitos de seguridad de datos y disponibilidad extremadamente altos. Tenga en cuenta que puede haber razones igualmente válidas que no permitirán implementaciones en varios sitios, p. regulaciones gubernamentales que prohíben el almacenamiento de información confidencial o privada fuera del país. Debido a factores de costo y complejidad, estas distribuciones deben considerarse adecuadamente antes de la implementación.

Las implementaciones en varios sitios requieren dos tareas importantes: dirigir a los usuarios al centro de datos más cercano posible y replicar los datos a través de archivos si los datos van a ser los mismos. Y ambas actividades implican costos adicionales.

Las implementaciones en varios sitios son complicadas, pero los servicios en la nube proporcionan servicios de red y datos para el equilibrio de carga geográfica, la conmutación por error de centros de datos cruzados, la sincronización de bases de datos y la replicación geográfica del almacenamiento en la nube. Los servicios web de Azure y Amazon tienen múltiples centros de datos en todo el mundo. Windows Azure Traffic Management y Elastic Load Balancing de Amazon Web Services le permiten configurar sus servicios para el equilibrio de carga geográfica.

Tenga en cuenta que el equilibrio geográfico de carga y los servicios de sincronización de datos pueden no ser 100% resistentes a todos los tipos de conmutación por error. La descripción del servicio debe combinarse con los requisitos para conocer los riesgos potenciales y las estrategias de mitigación.

MUCHOS OTROS

La nube es un mundo de posibilidades. Hay muchos otros modelos muy relevantes para la arquitectura específica de la nube. Para llevarlo aún más lejos, en escenarios de la vida real, más de uno de estos esquemas tendrán que implementarse juntos para que funcione. Algunos de los aspectos cruciales de la nube que son importantes para los arquitectos son: la tenencia múltiple, el mantenimiento de la coherencia de las transacciones de la base de datos, la separación de comandos y consultas, etc. En cierto sentido, cada escenario empresarial es único y, por lo tanto, requiere un tratamiento específico. Dado que la nube es la plataforma para las innovaciones, los modelos de arquitectura consolidada también se pueden implementar de nuevas formas allí, resolviendo estos problemas comerciales específicos.

RESUMEN

La nube es un entorno complejo y en evolución que promueve la innovación. La arquitectura es importante para una aplicación y más importante para las aplicaciones basadas en la nube. Las soluciones basadas en la nube deben ser flexibles para cambiar, escalar bajo demanda y minimizar los costos. Las ofertas en la nube proporcionan la infraestructura, los servicios y otros componentes básicos necesarios que deben combinarse de la manera correcta para proporcionar el máximo retorno de la inversión (ROI). Dado que la mayoría de las aplicaciones en la nube podrían implementarse y distribuirse en los servicios en la nube, encontrar e implementar los modelos de arquitectura correctos es muy importante para el éxito.

El auge de la computación en la nube ha permitido a los empresarios de todo el mundo trabajar de manera más eficiente, flexible y consistente, al tiempo que reduce los costos comerciales. Este tipo de software no solo permite a los empresarios y sus equipos trabajar fácilmente desde ubicaciones remotas, sino que también puede ayudarlos a alcanzar niveles más altos ...
A B R I R
Es inevitable que una organización sea diligente en su departamento de contabilidad y contabilidad. La gran cantidad de datos que recae en el departamento de contabilidad actúa como la vida sanguínea de cualquier negocio. Las altas habilidades analíticas, la debida diligencia y la supervisión son imprescindibles cuando se trata del sector contable. Funciona como la columna vertebral para la gestión ...
A B R I R
El servicio iCloud de Apple existe desde hace varios años, pero muchos usuarios de iPhone, iPad y iPod touch realmente no lo entienden. Dedicar unos minutos a configurar el servicio en sus dispositivos móviles y en su computadora podría ahorrarle una cantidad significativa de tiempo y esfuerzo en el futuro. ¿Qué es iCloud? Es simplemente un servicio que mantiene la ...
A B R I R
¿Qué es exactamente esta "nube" de la que tanto oyes en tecnología? ¿Y cuáles son sus ventajas? Descúbrelo en esta lección. "Cloud" es un término en inglés que significa "nube". Hace años, Internet se representaba metafóricamente como una nube, siempre presente en el cielo sobre ti, donde sea que estuvieras: hogar, oficina, etc. En pocas palabras, la nube es una "nube" de datos y servicios ...
A B R I R
¿Sabes cómo usar mejor las contraseñas para aumentar tu seguridad? Quien usa la computadora usa contraseñas para ingresar a la computadora, leer el correo electrónico, comprar en línea, verificar la cuenta en línea, comprar en línea, hacer llamadas con Skype, chatear, etc. Las contraseñas representan una línea de defensa extremadamente importante para nuestra privacidad y nuestros datos. Pero, ¿cómo podemos asegurarnos de que las contraseñas ...
A B R I R