Consideraciones sobre el diseño de aplicaciones híbridas
Microsoft Azure es la única nube híbrida coherente. Permite reutilizar las inversiones de desarrollo y permite que las aplicaciones que abarquen Azure global, las nubes soberanas de Azure y Azure Stack, que es una extensión de Azure en el centro de datos. Las aplicaciones que abarcan nubes también se conocen como aplicaciones híbridas.
La guía de arquitectura de aplicaciones de Azure describe un enfoque estructurado para diseñar aplicaciones escalables, resistentes y de alta disponibilidad. Las consideraciones descritas en la Guía de arquitectura de aplicaciones de Azure se aplican igualmente a las aplicaciones diseñadas para una sola nube y para las aplicaciones que abarcan nubes.
En este artículo se aumentan los
Los escenarios híbridos varían considerablemente con los recursos disponibles para el desarrollo y abarcan consideraciones como geografía, seguridad, acceso a Internet y otras consideraciones. Aunque esta guía no puede enumerar sus consideraciones específicas, puede proporcionar algunas directrices clave y procedimientos recomendados para que siga. Diseñar, configurar, implementar y mantener correctamente una arquitectura de aplicación híbrida implica muchas consideraciones de diseño que podrían no conocerse inherentemente.
Este documento pretende agregar las posibles preguntas que pueden surgir al implementar aplicaciones híbridas y proporciona consideraciones (estos pilares) y procedimientos recomendados para trabajar con ellos. Al abordar estas preguntas durante la fase de diseño, evitará los problemas que podrían causar en producción.
Básicamente, estas son preguntas que debe tener en cuenta antes de crear una aplicación híbrida. Para empezar, debe hacer lo siguiente:
- Identifique y evalúe los componentes de la aplicación.
- Evalúe los componentes de la aplicación en relación con los pilares.
Evaluación de los componentes de la aplicación
Cada componente de una aplicación tiene su propio rol específico dentro de la aplicación más grande y debe revisarse con todas las consideraciones de diseño. Los requisitos y características de cada componente deben asignarse a estas consideraciones para ayudar a determinar la arquitectura de la aplicación.
Descompone la aplicación en sus componentes mediante el estudio de la arquitectura de la aplicación y la determinación de lo que consta. Los componentes también pueden incluir otras aplicaciones con las que interactúa la aplicación. A medida que identifique los componentes, evalúe las operaciones híbridas previstas según sus características mediante la formulación de estas preguntas:
- ¿Cuál es el propósito del componente?
- ¿Cuáles son las interdependencias entre los componentes?
Por ejemplo, una aplicación puede tener un front-end y un back-end definidos como dos componentes. En un escenario híbrido, el front-end está en una nube y el back-end está en el otro. La aplicación proporciona canales de comunicación entre el front-end y el usuario, y también entre el front-end y el back-end.
Muchos escenarios y formularios definen un componente de aplicación. La tarea más importante es identificarlas y su ubicación local o en la nube.
Los componentes comunes de la aplicación que se van a incluir en el inventario se enumeran en la tabla 1.
Tabla 1. Componentes comunes de la aplicación
componente de |
guía de aplicaciones híbridas |
---|---|
Conexiones de cliente | La aplicación (en cualquier dispositivo) puede acceder a los usuarios de varias maneras, desde un punto de entrada único, incluidas las siguientes maneras: - Un modelo de cliente-servidor que requiere que el usuario tenga instalado un cliente para trabajar con la aplicación. Aplicación basada en servidor a la que se accede desde un explorador. - Las conexiones de cliente pueden incluir notificaciones cuando se interrumpe la conexión o alertas cuando se pueden aplicar cargos por itinerancia. |
Autenticación | La autenticación puede ser necesaria para un usuario que se conecta a la aplicación o desde un componente que se conecta a otro. |
Apis | Puede proporcionar a los desarrolladores acceso mediante programación a la aplicación con conjuntos de API y bibliotecas de clases y proporcionar una interfaz de conexión basada en los estándares de Internet. También puede usar las API para descomponer una aplicación en unidades lógicas que funcionen de forma independiente. |
Servicios | Puede emplear servicios concisas para proporcionar las características de una aplicación. Un servicio puede ser el motor en el que se ejecuta la aplicación. |
Colas | Puedes usar colas para organizar el estado de los ciclos de vida y los estados de los componentes de la aplicación. Estas colas pueden proporcionar funcionalidades de mensajería, notificaciones y almacenamiento en búfer para las partes suscritas. |
Almacenamiento de datos | Una aplicación puede ser sin estado o con estado. Las aplicaciones con estado necesitan almacenamiento de datos que pueden cumplirse con numerosos formatos y volúmenes. |
Almacenamiento en caché de datos | Un componente de almacenamiento en caché de datos en el diseño puede abordar estratégicamente los problemas de latencia y desempeñar un papel en la activación de la expansión de la nube. |
Ingesta de datos | Los datos se pueden enviar a una aplicación de muchas maneras, desde valores enviados por el usuario en un formulario web hasta un flujo de datos de gran volumen continuamente. |
Procesamiento de datos | Las tareas de procesamiento de datos (como informes, análisis, exportaciones por lotes y transformación de datos) se pueden procesar en el origen o descargarse en un componente independiente mediante una copia de los datos. |
Evaluación de los componentes de la aplicación para los pilares
Para cada componente, evalúe sus características para cada pilar. A medida que evalúa cada componente con todos los pilares, es posible que no haya considerado que se sepa que afecta al diseño de la aplicación híbrida. Actuar sobre estas consideraciones podría agregar valor para optimizar la aplicación. En la tabla 2 se proporciona una descripción de cada pilar en relación con las aplicaciones híbridas.
Tabla 2. Pilares
pilar de |
descripción |
---|---|
Colocación | Posicionamiento estratégico de componentes en aplicaciones híbridas. |
Escalabilidad | La capacidad de un sistema para controlar una mayor carga. |
Disponibilidad | Proporción de tiempo que una aplicación híbrida funciona y funciona. |
Resiliencia | La capacidad de recuperar una aplicación híbrida. |
Manejabilidad | Procesos de operaciones que mantienen un sistema en ejecución en producción. |
Seguridad | Protección de aplicaciones híbridas y datos frente a amenazas. |
Colocación
Una aplicación híbrida tiene intrínsecamente una consideración de ubicación, como para el centro de datos.
La colocación es la tarea importante de colocar componentes para que puedan atender mejor una aplicación híbrida. Por definición, las aplicaciones híbridas abarcan ubicaciones, como desde el entorno local a la nube y entre distintas nubes. Puede colocar componentes de la aplicación en nubes de dos maneras:
aplicaciones híbridas verticales
Los componentes de la aplicación se distribuyen entre ubicaciones. Cada componente individual puede tener varias instancias ubicadas solo en una sola ubicación.aplicaciones híbridas horizontales
Los componentes de la aplicación se distribuyen entre ubicaciones. Cada componente individual puede tener varias instancias que abarcan varias ubicaciones.Algunos componentes pueden ser conscientes de su ubicación, mientras que otros no tienen ningún conocimiento de su ubicación y ubicación. Este virtuosismo se puede lograr con una capa de abstracción. Esta capa, con un marco de trabajo de aplicaciones moderno, como microservicios, puede definir cómo se aplica el servicio de la aplicación mediante la colocación de los componentes de la aplicación que funcionan en nodos entre nubes.
Lista de comprobación de ubicación
Compruebe las ubicaciones necesarias. Asegúrese de que la aplicación o cualquiera de sus componentes son necesarios para funcionar o requerir la certificación para una nube específica. Esto puede incluir requisitos de soberanía de su empresa o dictados por la ley. Además, determine si se requieren operaciones locales para una ubicación o configuración regional determinada.
Determinar las dependencias de conectividad. Las ubicaciones necesarias y otros factores pueden dictar las dependencias de conectividad entre los componentes. A medida que coloca los componentes, determine la conectividad y la seguridad óptimas para la comunicación entre ellos. Entre las opciones se incluyen VPN,expressRoute, y conexiones híbridas.
Evaluar las funcionalidades de la plataforma. Para cada componente de aplicación, consulte si el proveedor de recursos necesario para el componente de aplicación está disponible en la nube y si el ancho de banda puede adaptarse a los requisitos de rendimiento y latencia esperados.
Planee la portabilidad. Use marcos de aplicaciones modernos, como contenedores o microservicios, para planear las operaciones de movimiento y evitar las dependencias del servicio.
Determine los requisitos de soberanía de datos. Las aplicaciones híbridas están orientadas a adaptar el aislamiento de datos, como en un centro de datos local. Revise la ubicación de los recursos para optimizar el éxito para satisfacer este requisito.
Planee la latencia. Las operaciones entre nubes pueden introducir distancia física entre los componentes de la aplicación. Determine los requisitos para adaptarse a cualquier latencia.
Controlar los flujos de tráfico. Controle el uso máximo y las comunicaciones adecuadas y protegidas para los datos de información de identificación personal cuando el front-end acceda a ellos en una nube pública.
Escalabilidad
La escalabilidad es la capacidad de un sistema para controlar la mayor carga en una aplicación, que puede variar con el tiempo a medida que otros factores y fuerzas afectan al tamaño de la audiencia, además del tamaño y el ámbito de la aplicación.
Para obtener la explicación principal de este pilar, consulte escalabilidad en los cinco pilares de excelencia de la arquitectura.
Un enfoque de escalado horizontal para aplicaciones híbridas permite agregar más instancias para satisfacer la demanda y, a continuación, deshabilitarlas durante períodos más silenciosos.
En escenarios híbridos, el escalado horizontal de componentes individuales requiere una consideración adicional cuando los componentes se distribuyen entre nubes. El escalado de una parte de la aplicación puede requerir el escalado de otro. Por ejemplo, si el número de conexiones de cliente aumenta, pero los servicios web de la aplicación no se escalan horizontalmente adecuadamente, la carga en la base de datos podría saturar la aplicación.
Algunos componentes de la aplicación se pueden escalar horizontalmente de forma lineal, mientras que otros tienen dependencias de escalado y pueden limitarse hasta qué punto pueden escalar. Por ejemplo, un túnel VPN que proporciona conectividad híbrida para las ubicaciones de componentes de la aplicación tiene un límite para el ancho de banda y la latencia a los que se puede escalar. ¿Cómo se escalan los componentes de la aplicación para asegurarse de que se cumplen estos requisitos?
Lista de comprobación de escalabilidad
Determinar los umbrales de escalado. Para controlar las distintas dependencias de la aplicación, determine la medida en que los componentes de la aplicación de nubes diferentes se pueden escalar de forma independiente, a la vez que cumplen los requisitos para ejecutar la aplicación. Las aplicaciones híbridas suelen necesitar escalar áreas concretas de la aplicación para controlar una característica a medida que interactúa y afecta al resto de la aplicación. Por ejemplo, superar un número de instancias de front-end puede requerir el escalado del back-end.
Definir programaciones de escalado. La mayoría de las aplicaciones tienen períodos ocupados, por lo que debe agregar sus horas punta en programaciones para coordinar el escalado óptimo.
Use un sistema de supervisión centralizado. Las funcionalidades de supervisión de plataforma pueden proporcionar escalado automático, pero las aplicaciones híbridas necesitan un sistema de supervisión centralizado que agrega el estado y la carga del sistema. Un sistema de supervisión centralizado puede iniciar el escalado de un recurso en una ubicación y el escalado en función del recurso de otra ubicación. Además, un sistema de supervisión central puede realizar un seguimiento de qué nubes escalan automáticamente los recursos y qué nubes no.
Aproveche las funcionalidades de escalado automático (según esté disponible). Si las funcionalidades de escalado automático forman parte de la arquitectura, se implementa el escalado automático estableciendo umbrales que definen cuándo es necesario escalar verticalmente, reducir o reducir verticalmente un componente de la aplicación. Un ejemplo de escalado automático es una conexión de cliente que se escala automáticamente en una nube para controlar el aumento de la capacidad, pero hace que otras dependencias de la aplicación, distribuidas entre nubes diferentes, también se escalen. Se deben determinar las funcionalidades de escalado automático de estos componentes dependientes.
Si el escalado automático no está disponible, considere la posibilidad de implementar scripts y otros recursos para dar cabida al escalado manual, desencadenado por umbrales en el sistema de supervisión centralizado.
Determine la carga esperada por ubicación. Las aplicaciones híbridas que controlan las solicitudes de cliente pueden depender principalmente de una sola ubicación. Cuando la carga de solicitudes de cliente supera un umbral, se pueden agregar recursos adicionales en una ubicación diferente para distribuir la carga de solicitudes entrantes. Asegúrese de que las conexiones de cliente pueden controlar las cargas aumentadas y determinar también los procedimientos automatizados para que las conexiones de cliente controlen la carga.
Disponibilidad
La disponibilidad es el momento en que un sistema funciona y funciona. La disponibilidad se mide como un porcentaje de tiempo de actividad. Los errores de la aplicación, los problemas de infraestructura y la carga del sistema pueden reducir la disponibilidad.
Para obtener la explicación principal de este pilar, consulte disponibilidad en los cinco pilares de excelencia de la arquitectura.
Lista de comprobación de disponibilidad
Proporcione redundancia para la conectividad. Las aplicaciones híbridas requieren conectividad entre las nubes en las que se distribuye la aplicación. Tiene una elección de tecnologías para la conectividad híbrida, por lo que además de su elección de tecnología principal, use otra tecnología para proporcionar redundancia con funcionalidades de conmutación por error automatizadas si se produce un error en la tecnología principal.
Clasificar dominios de error. Las aplicaciones tolerantes a errores requieren varios dominios de error. Los dominios de error ayudan a aislar el punto de error, como si se produce un error en un solo disco duro local, si un conmutador de la parte superior del bastidor deja de funcionar o si el centro de datos completo no está disponible. En una aplicación híbrida, una ubicación se puede clasificar como un dominio de error. Con más requisitos de disponibilidad, más debe evaluar cómo se debe clasificar un único dominio de error.
Clasificar dominios de actualización. Los dominios de actualización se usan para asegurarse de que las instancias de los componentes de la aplicación están disponibles, mientras que otras instancias del mismo componente se están realizando con actualizaciones o actualizaciones de características. Al igual que con los dominios de error, los dominios de actualización se pueden clasificar por su ubicación en todas las ubicaciones. Debe determinar si un componente de aplicación puede adaptarse a la actualización en una ubicación antes de actualizarlo en otra ubicación o si se requieren otras configuraciones de dominio. Una sola ubicación puede tener varios dominios de actualización.
Realizar un seguimiento de las instancias y la disponibilidad. Los componentes de la aplicación de alta disponibilidad pueden estar disponibles a través del equilibrio de carga y la replicación de datos sincrónicas. Debe determinar cuántas instancias pueden estar sin conexión antes de que se interrumpa el servicio.
Implementar la recuperación automática. En caso de que un problema produzca una interrupción en la disponibilidad de la aplicación, una detección por parte de un sistema de supervisión podría iniciar actividades de recuperación automática en la aplicación, como purgar la instancia con errores y volver a implementarla. Lo más probable es que esto requiera una solución de supervisión central, integrada con una canalización híbrida de integración continua y entrega continua (CI/CD). La aplicación se integra con un sistema de supervisión para identificar problemas que podrían requerir la reimplementación de un componente de aplicación. El sistema de supervisión también puede desencadenar CI/CD híbrido para volver a implementar el componente de la aplicación y potencialmente cualquier otro componente dependiente de las mismas ubicaciones u otras ubicaciones.
Mantener acuerdos de nivel de servicio (SLA). La disponibilidad es fundamental para cualquier acuerdo para mantener la conectividad con los servicios y las aplicaciones que tiene con sus clientes. Cada ubicación en la que se basa la aplicación híbrida podría tener su propio Acuerdo de Nivel de Servicio. Estos acuerdos de nivel de servicio diferentes pueden afectar al Acuerdo de Nivel de Servicio general de la aplicación híbrida.
Resiliencia
La resistencia es la capacidad de una aplicación híbrida y un sistema para recuperarse de errores y seguir funcionando. El objetivo de la resistencia es devolver la aplicación a un estado de funcionamiento completo después de que se produzca un error. Las estrategias de resistencia incluyen soluciones como copia de seguridad, replicación y recuperación ante desastres.
Para obtener la explicación principal de este pilar, consulte de resistencia en los cinco pilares de excelencia de la arquitectura.
Lista de comprobación de resistencia
Descubra las dependencias de recuperación ante desastres. La recuperación ante desastres en una nube podría requerir cambios en los componentes de la aplicación en otra nube. Si uno o varios componentes de una nube se conmutan por error a otra ubicación, ya sea dentro de la misma nube o a otra nube, los componentes dependientes deben tener en cuenta estos cambios. Esto también incluye las dependencias de conectividad. La resistencia requiere un plan de recuperación de aplicaciones totalmente probado para cada nube.
Establecer el flujo de recuperación. Un diseño de flujo de recuperación eficaz ha evaluado los componentes de la aplicación para su capacidad de acomodar búferes, reintentos, reintento de transferencia de datos con errores y, si es necesario, revertir a un servicio o flujo de trabajo diferente. Debe determinar qué mecanismo de copia de seguridad se va a usar, qué implica su procedimiento de restauración y la frecuencia con la que se prueba. También debe determinar la frecuencia de las copias de seguridad incrementales y completas.
Pruebe recuperaciones parciales. Una recuperación parcial para parte de la aplicación puede proporcionar seguridad a los usuarios que no están disponibles. Esta parte del plan debe asegurarse de que una restauración parcial no tenga ningún efecto secundario, como un servicio de copia de seguridad y restauración que interactúe con la aplicación para apagarla correctamente antes de realizar la copia de seguridad.
Determine los instigadores de recuperación ante desastres y asigne la responsabilidad. Un plan de recuperación debe describir quién y qué roles pueden iniciar acciones de copia de seguridad y recuperación, además de lo que se puede hacer una copia de seguridad y restaurar.
Compare los umbrales de recuperación automática con la recuperación ante desastres. Determine las funcionalidades de recuperación automática de una aplicación para iniciar la recuperación automática y el tiempo necesario para que la recuperación automática de una aplicación se considere un error o éxito. Determine los umbrales de cada nube.
Compruebe la disponibilidad de las características de resistencia. Determine la disponibilidad de las características y funcionalidades de resistencia para cada ubicación. Si una ubicación no proporciona las funcionalidades necesarias, considere la posibilidad de integrar esa ubicación en un servicio centralizado que proporcione las características de resistencia.
Determine los tiempos de inactividad. Determine el tiempo de inactividad esperado debido al mantenimiento de la aplicación en su conjunto y como componentes de la aplicación.
Documentación de procedimientos de solución de problemas. Defina los procedimientos de solución de problemas para volver a implementar recursos y componentes de la aplicación.
Manejabilidad
Las consideraciones sobre cómo administrar las aplicaciones híbridas son fundamentales para diseñar la arquitectura. Una aplicación híbrida bien administrada proporciona una infraestructura como código que permite la integración de código de aplicación coherente en una canalización de desarrollo común. Al implementar pruebas coherentes en todo el sistema y individuales de los cambios en la infraestructura, puede garantizar una implementación integrada si los cambios superan las pruebas, lo que les permite combinarlos en el código fuente.
Para obtener la explicación principal de este pilar, consulte de DevOps en los cinco pilares de excelencia de la arquitectura.
Lista de comprobación de administración
Implementar la supervisión. Use un sistema de supervisión centralizado de componentes de aplicación distribuidos entre nubes para proporcionar una vista agregada de su estado y rendimiento. Este sistema incluye la supervisión de los componentes de la aplicación y las funcionalidades de plataforma relacionadas.
Determine las partes de la aplicación que requieren supervisión.
Directivas de coordenadas. Cada ubicación que abarca una aplicación híbrida puede tener su propia directiva que abarque los tipos de recursos permitidos, las convenciones de nomenclatura, las etiquetas y otros criterios.
Definir y usar roles. Como administrador de base de datos, debe determinar los permisos necesarios para distintos roles (como un propietario de la aplicación, un administrador de base de datos y un usuario final) que necesitan acceder a los recursos de la aplicación. Estos permisos deben configurarse en los recursos y dentro de la aplicación. Un sistema de control de acceso basado en rol (RBAC) permite establecer estos permisos en los recursos de la aplicación. Estos derechos de acceso son difíciles cuando todos los recursos se implementan en una sola nube, pero requieren aún más atención cuando los recursos se distribuyen entre nubes. Los permisos de los recursos establecidos en una nube no se aplican a los recursos establecidos en otra nube.
Use canalizaciones de CI/CD. Una canalización de integración continua y desarrollo continuo (CI/CD) puede proporcionar un proceso coherente para crear e implementar aplicaciones que abarcan nubes y proporcionar garantía de calidad para su infraestructura y aplicación. Esta canalización permite probar la infraestructura y la aplicación en una nube e implementarla en otra nube. La canalización incluso permite implementar determinados componentes de la aplicación híbrida en una nube y otros componentes en otra nube, básicamente formando la base para la implementación de aplicaciones híbridas. Un sistema de CI/CD es fundamental para controlar las dependencias que los componentes de la aplicación tienen entre sí durante la instalación, como la aplicación web que necesita una cadena de conexión a la base de datos.
Administrar el ciclo de vida. Dado que los recursos de una aplicación híbrida pueden abarcar ubicaciones, es necesario agregar la funcionalidad de administración del ciclo de vida de cada ubicación en una sola unidad de administración del ciclo de vida. Tenga en cuenta cómo se crean, actualizan y eliminan.
Examine las estrategias de solución de problemas. La solución de problemas de una aplicación híbrida implica más componentes de aplicación que la misma aplicación que se ejecuta en una sola nube. Además de la conectividad entre las nubes, la aplicación se ejecuta en dos plataformas en lugar de en una. Una tarea importante en la solución de problemas de aplicaciones híbridas es examinar el estado agregado y la supervisión del rendimiento de los componentes de la aplicación.
Seguridad
La seguridad es una de las principales consideraciones para cualquier aplicación en la nube y se vuelve aún más crítica para las aplicaciones en la nube híbrida.
Para obtener la explicación principal de este pilar, consulte Security en los cinco pilares de excelencia de la arquitectura.
Lista de comprobación de seguridad
Supongamos la vulneración. Si una parte de la aplicación está en peligro, asegúrese de que existen soluciones para minimizar la propagación de la infracción, no solo dentro de la misma ubicación, sino también entre ubicaciones.
Supervise el acceso de red permitido. Determine las directivas de acceso de red para la aplicación, como acceder solo a la aplicación desde una subred específica y permitir solo los puertos y protocolos mínimos entre los componentes necesarios para que la aplicación funcione correctamente.
Emplear autenticación sólida. Un esquema de autenticación sólido es fundamental para la seguridad de la aplicación. Considere la posibilidad de usar un proveedor de identidades federado que proporciona funcionalidades de inicio de sesión único y emplea uno o varios de los esquemas siguientes: inicio de sesión de nombre de usuario y contraseña, claves públicas y privadas, autenticación en dos fases o multifactor y grupos de seguridad de confianza. Determine los recursos adecuados para almacenar datos confidenciales y otros secretos para la autenticación de aplicaciones, además de los tipos de certificado y sus requisitos.
Use el cifrado. Identifique qué áreas de la aplicación usan cifrado, como para el almacenamiento de datos o la comunicación y el acceso del cliente.
Use canales seguros. Un canal seguro en las nubes es fundamental para proporcionar comprobaciones de seguridad y autenticación, protección en tiempo real, cuarentena y otros servicios en las nubes.
Definir y usar roles. Implemente roles para configuraciones de recursos y acceso de identidad única en las nubes. Determine los requisitos de control de acceso basado en rol (RBAC) para la aplicación y sus recursos de plataforma.
Audite el sistema. La supervisión del sistema puede registrar y agregar datos de los componentes de la aplicación y las operaciones relacionadas de la plataforma en la nube.
Resumen
En este artículo se proporciona una lista de comprobación de los elementos que son importantes tener en cuenta durante la creación y el diseño de las aplicaciones híbridas. Revisar estos pilares antes de implementar la aplicación impide que se produzcan estas preguntas en interrupciones de producción y, posiblemente, requerirle que vuelva a visitar el diseño.
Puede parecer una tarea que consume mucho tiempo de antemano, pero fácilmente obtienes tu rentabilidad de la inversión si diseñas la aplicación en función de estos pilares.
Pasos siguientes
Para obtener más información, consulte los siguientes recursos:
- de nube híbrida
- aplicaciones en la nube híbrida
- Desarrollo de plantillas de Azure Resource Manager para de coherencia en la nube