Arquitectura de aplicaciones de Azure para la resistencia y disponibilidadArchitecting Azure applications for resiliency and availability

Una vez que ha desarrollado los requisitos para la aplicación, el siguiente paso es crear resistencia y disponibilidad en él.After you've developed the requirements for your application, the next step is to build resiliency and availability into it. Estas cualidades no se puede agregar al final — debe diseñar la arquitectura.These qualities can't be added at the end — you must design them into the architecture.

Realizar un análisis del modo de errorConduct a failure mode analysis

Análisis del modo de error (FMA) compila resistencia en un sistema mediante la identificación de posibles puntos de error y definir cómo responde la aplicación a esos errores.Failure mode analysis (FMA) builds resiliency into a system by identifying possible failure points and defining how the application responds to those failures. El FMA debe formar parte de las fases de diseño y arquitectura, por lo que la recuperación de errores está integrada en el sistema desde el principio.The FMA should be part of the architecture and design phases, so failure recovery is built into the system from the beginning. Los objetivos de un análisis del son:The goals of an FMA are to:

  • Determinar qué tipos de errores que puede experimentar una aplicación y cómo la aplicación detecta los errores.Determine what types of failures an application might experience and how the application detects those failures.
  • Capturar los posibles efectos de cada tipo de error y determinar cómo responde la aplicación.Capture the potential effects of each type of failure and determine how the app responds.
  • Planear para el registro y supervisión del error e identificar las estrategias de recuperación.Plan for logging and monitoring the failure and identify recovery strategies.

Estos son algunos ejemplos de modos de error y las estrategias de detección para un punto de error específico — una llamada a un servicio web externo:Here are some examples of failure modes and detection strategies for a specific failure point — a call to an external web service:

Modo de errorFailure mode Estrategia de detecciónDetection strategy
El servicio no está disponibleService is unavailable HTTP 5xxHTTP 5xx
LimitacionesThrottling HTTP 429 (Demasiadas solicitudes)HTTP 429 (Too Many Requests)
AuthenticationAuthentication HTTP 401 (No autorizado)HTTP 401 (Unauthorized)
Respuesta lentaSlow response Tiempo de espera de la solicitud agotadoRequest times out

Para obtener más información sobre el proceso FMA, con recomendaciones específicas para Azure, consulte análisis del modo de error.For more information about the FMA process, with specific recommendations for Azure, see Failure mode analysis.

Plan para la redundanciaPlan for redundancy

Errores varían en el ámbito del impacto.Failures vary in scope of impact. Algunos errores de hardware, como un disco erróneo, afectan a un único equipo host.Some hardware failures, such as a failed disk, affect a single host machine. Un conmutador de red con errores puede afectar a un bastidor del servidor completo.A failed network switch could affect an entire server rack. Errores menos comunes, como la pérdida de alimentación, interrumpirán todo un centro de datos.Less common failures, such as loss of power, disrupt a whole datacenter. En contadas ocasiones, toda una región deja de estar disponible.Rarely, an entire region becomes unavailable.

La redundancia es una manera de que una aplicación sea resistente.Redundancy is one way to make an application resilient. El nivel de redundancia depende de sus requisitos empresariales — no todas las aplicaciones necesitan tener redundancia entre regiones para protegerse contra una interrupción regional.The level of redundancy depends on your business requirements — not every application needs redundancy across regions to guard against a regional outage. En general, hay un equilibrio entre el mayor redundancia y confiabilidad implica mayores costos y la complejidad.In general, there's a tradeoff between greater redundancy and reliability versus higher costs and complexity.

Revise las características de redundancia de AzureReview Azure redundancy features

Azure tiene una serie de características de redundancia en todos los niveles de error de una máquina virtual individual (VM) a toda una región.Azure has a number of redundancy features at every level of failure, from an individual virtual machine (VM) to an entire region.

  • Las máquinas virtuales únicas tiene un acuerdo de nivel de servicio (SLA) de tiempo de actividad proporcionada por Azure.Single VMs have an uptime service level agreement (SLA) provided by Azure. (La máquina virtual debe usar almacenamiento premium para todos los discos del sistema operativo y discos de datos). Aunque se puede conseguir un Acuerdo de Nivel de Servicio mayor ejecutando dos o más máquinas virtuales, una única máquina virtual puede resultar suficientemente confiable con algunas cargas de trabajo.(The VM must use premium storage for all operating system disks and data disks.) Although you can get a higher SLA by running two or more VMs, a single VM may be reliable enough for some workloads. No obstante, en las cargas de trabajo de producción, se recomienda usar dos o más máquinas virtuales para tener redundancia.For production workloads, however, we recommend using two or more VMs for redundancy.

  • Conjuntos de disponibilidad proteger frente a errores de hardware localizados, como un disco o con errores de conmutador de red.Availability sets protect against localized hardware failures, such as a disk or network switch failing. Las máquinas virtuales en un conjunto de disponibilidad se distribuyen por hasta tres dominios de error.VMs in an availability set are distributed across up to three fault domains. Los dominios de error define un grupo de máquinas virtuales que comparten un conmutador de red ni fuente de alimentación común.A fault domains defines a group of VMs that share a common power source and network switch. Si un error de hardware afecta a un dominio de error, se enruta el tráfico de red a máquinas virtuales en otros dominios de error.If a hardware failure affects one fault domain, network traffic is routed to VMs in the other fault domains. Para obtener más información acerca de los conjuntos de disponibilidad, consulte administrar la disponibilidad de las máquinas virtuales de Windows en Azure.For more information about availability sets, see Manage the availability of Windows virtual machines in Azure.

  • Las zonas de disponibilidad son zonas separadas físicamente dentro de una región de Azure.Availability Zones are physically separate zones within an Azure region. Cada zona de disponibilidad tiene una fuente de alimentación, una red y un sistema de refrigeración distintos.Each Availability Zone has a distinct power source, network, and cooling. Implementación de máquinas virtuales en distintas zonas de disponibilidad ayuda a proteger una aplicación frente a errores de todo el centro de datos.Deploying VMs across Availability Zones helps to protect an application against datacenter-wide failures. No todas las regiones son compatibles con las zonas de disponibilidad.Not all regions support Availability Zones. Para obtener una lista de los servicios y las regiones compatibles, consulte ¿Qué son las zonas de disponibilidad en Azure?.For a list of supported regions and services, see What are Availability Zones in Azure?.

    Si tiene previsto usar las zonas de disponibilidad en la implementación, en primer lugar validar que la arquitectura de aplicaciones y el código base compatible con esta configuración.If you plan to use Availability Zones in your deployment, first validate that your application architecture and codebase support this configuration. Si implementa software comercial, póngase en contacto con el proveedor de software y probar adecuadamente antes de implementar en producción.If you deploy commercial software, consult with the software vendor and test adequately before deploying into production. Una aplicación debe mantener el estado y evitar la pérdida de datos durante una interrupción en la zona configurada.An application must maintain state and prevent loss of data during an outage within the configured zone. La aplicación debe admitir que se ejecutan en una infraestructura flexible y distribuida sin componentes de infraestructura codificado de forma rígida.The application must support running in an elastic and distributed infrastructure with no hard-coded infrastructure components.

  • Azure Site Recovery replica máquinas virtuales de Azure en otra región de Azure para la continuidad del negocio (BC) y recuperación ante desastres (DR) necesita.Azure Site Recovery replicates Azure Virtual Machines to another Azure region for business continuity (BC) and disaster recovery (DR) needs. Puede realizar maniobras de recuperación ante desastres periódicas para asegurarse de que cumplen las necesidades de cumplimiento.You can conduct periodic DR drills to ensure that you meet the compliance needs. La máquina virtual se replica con la configuración especificada en la región seleccionada para que pueda recuperar sus aplicaciones en caso de interrupciones en la región de origen.The VM is replicated with the specified settings to the selected region so you can recover your applications in the event of outages in the source region. Para obtener más información, consulte configuración de recuperación ante desastres en una región secundaria de Azure para una máquina virtual de Azure.For more information, see Set up disaster recovery to a secondary Azure region for an Azure VM.

    Durante las pruebas, compruebe que la objetivo de tiempo de recuperación (RTO) y objetivo de punto de recuperación (RPO) satisface sus necesidades.During testing, verify that the recovery time objective (RTO) and recovery point objective (RPO) meet your needs. RTO es el tiempo máximo que una aplicación no está disponible después de un incidente, y el RPO es la duración máxima de pérdida de datos durante un desastre.RTO is the maximum time an application is unavailable after an incident, and RPO is the maximum duration of data loss during a disaster.

  • Regiones emparejadas se crean con Azure Traffic Manager para distribuir el tráfico de Internet en distintas regiones, protección de una aplicación contra una interrupción regional.Paired regions are created using Azure Traffic Manager to distribute Internet traffic to different regions, protecting an application against a regional outage. Cada región de Azure está emparejada con otra región.Each Azure region is paired with another region. Juntas, estas regiones forman un par regional.Together, these regions form a regional pair. Para cumplir los requisitos de residencia de datos para fines de jurisdicción de impuestos y las leyes de cumplimiento, los pares regionales se encuentran en la misma zona geográfica (a excepción del sur de Brasil).To meet data residency requirements for tax and law enforcement jurisdiction purposes, regional pairs are located within the same geography (with the exception of Brazil South).

    Para mejorar la resistencia de la aplicación, Azure serializa las actualizaciones de plataforma (mantenimiento planeado) entre cada par de regiones, por lo que solo una región emparejada se actualiza a la vez.To improve application resiliency, Azure serializes platform updates (planned maintenance) across each region pair, so only one paired region is updated at a time.

  • Al diseñar una aplicación en varias regiones, tenga en cuenta que la latencia de red entre regiones es mayor que dentro de una región.When you design a multiregion application, take into account that network latency across regions is higher than within a region. Por ejemplo, si replicar una base de datos para habilitar la conmutación por error, use la replicación sincrónica de datos dentro de una región, pero la replicación asincrónica de datos entre regiones.For example, if you replicate a database to enable failover, use synchronous data replication within a region but asynchronous data replication across regions.

En la tabla siguiente se compara los factores de redundancia a través de varias estrategias de resistencia:The following table compares the redundancy factors across several resiliency strategies:

  Conjunto de disponibilidadAvailability set Zona de disponibilidadAvailability Zone Azure Site Recovery / región emparejadaAzure Site Recovery/Paired region
Alcance del errorScope of failure BastidorRack Centro de datosDatacenter RegionRegion
Enrutamiento de solicitudesRequest routing Azure Load BalancerAzure Load Balancer Equilibrador de carga entre zonasCross-zone Load Balancer Administrador de tráfico de AzureAzure Traffic Manager
Latencia de redNetwork latency Muy bajaVery low BajoLow Media-altaMid to high
Virtual networkVirtual network Azure Virtual NetworkAzure Virtual Network Azure Virtual NetworkAzure Virtual Network Emparejamiento de redes virtuales entre regionesCross-region Virtual Network peering

Tareas de redundancia de Azure completaComplete Azure redundancy tasks

Para cumplir los requisitos de redundancia, use las siguientes tareas:Use the following tasks to meet redundancy requirements:

  • Implemente varias instancias de servicios.Deploy multiple instances of services. Si la aplicación depende de una única instancia de un servicio, crea un único punto de error.If your application depends on a single instance of a service, it creates a single point of failure. El aprovisionamiento de varias instancias mejora tanto la resistencia como la escalabilidad.Provisioning multiple instances improves both resiliency and scalability. Para Azure App Service, seleccione un Plan de App Service que ofrezca varias instancias.For Azure App Service, select an App Service plan that offers multiple instances. Para Azure Virtual Machines, asegúrese de que la arquitectura tiene más de una máquina virtual y que cada máquina virtual se incluye en un conjunto de disponibilidad.For Azure Virtual Machines, ensure that your architecture has more than one VM and that each VM is included in an availability set.

  • Replicación de máquinas virtuales con Azure Site RecoveryReplicate VMs using Azure Site Recovery. Al replicar máquinas virtuales de Azure mediante Site Recovery, todos los discos de máquina virtual continuamente se replican asincrónicamente en la región de destino.When you replicate Azure VMs using Site Recovery, all the VM disks are continuously replicated to the target region asynchronously. Los puntos de recuperación se crean cada pocos minutos, lo que proporciona un RPO del orden de minutos.The recovery points are created every few minutes, giving an RPO on the order of minutes.

  • Considere la posibilidad de implementar la aplicación en varias regiones.Consider deploying your application across multiple regions. Si la aplicación se implementa en una sola región y la región deja de estar disponible, la aplicación también estará disponible.If your application is deployed to a single region, and the region becomes unavailable, your application will also be unavailable. Esto puede ser inaceptable bajo los términos del Acuerdo de Nivel de Servicio de la aplicación.This may be unacceptable under the terms of your application's SLA. Si ese fuera el caso, considere la posibilidad de implementar la aplicación en varias regiones.If so, consider deploying your application and its services across multiple regions. Puede usar una implementación en varias regiones un activo / activo o activo / pasivo configuración.A multiregion deployment can use an active-active or active-passive configuration. Una configuración activo / activo distribuye las solicitudes entre varias regiones activas.An active-active configuration distributes requests across multiple active regions. Una configuración activo / pasivo mantiene instancias calientes en la región secundaria, pero no envía el tráfico no existe, a menos que se produce un error en la región primaria.An active-passive configuration keeps warm instances in the secondary region, but doesn't send traffic there unless the primary region fails. Para implementaciones en varias regiones, se recomienda implementar en regiones emparejadas, que se ha descrito anteriormente.For multiregion deployments, we recommend deploying to paired regions, described above. Para más información, consulte Continuidad empresarial y recuperación ante desastres (BCDR): Regiones emparejadas de Azure.For more information, see Business continuity and disaster recovery (BCDR): Azure Paired Regions.

  • Utilice Azure Traffic Manager para enrutar el tráfico de la aplicación a diferentes regiones.Use Azure Traffic Manager to route your application's traffic to different regions. Azure Traffic Manager realiza el equilibrio de carga en el nivel de DNS y enruta el tráfico a regiones diferentes, según la el enrutamiento de tráfico método y el estado de los puntos de conexión de la aplicación.Azure Traffic Manager performs load-balancing at the DNS level and routes traffic to different regions based on the traffic routing method and the health of your application's endpoints. Sin Traffic Manager, estará limitado a una sola región para su implementación, que restringe la escala, aumenta la latencia para algunos usuarios y hace que el tiempo de inactividad de aplicación, en el caso de una interrupción del servicio de toda la región.Without Traffic Manager, you are limited to a single region for your deployment, which constrains scale, increases latency for some users, and causes application downtime, in the case of a region-wide service disruption.

  • Configurar la puerta de enlace de aplicaciones de Azure para usar varias instancias.Configure Azure Application Gateway to use multiple instances. Dependiendo de los requisitos de la aplicación, una instancia de Azure Application Gateway puede ser más adecuada para distribuir solicitudes a los servicios de la aplicación.Depending on your application's requirements, an Azure Application Gateway may be better suited to distributing requests to your application's services. Sin embargo, las instancias únicas del servicio Application Gateway no están garantizadas por un SLA, por lo que es posible que su aplicación podría producir errores si se produce un error en la instancia de Application Gateway.However, single instances of the Application Gateway service are not guaranteed by an SLA, so it's possible that your application could fail if the Application Gateway instance fails. Aprovisionar más de una instancia de tamaño Media o grande para garantizar la disponibilidad del servicio según las condiciones de la puerta de enlace de aplicaciones SLA.Provision more than one medium or larger instance to guarantee availability of the service under the terms of the Application Gateway SLA.

Diseño para escalabilidadDesign for scalability

Escalabilidad es la capacidad de controlar el aumento de la carga de un sistema y es uno de los pilares de la calidad del software.Scalability is the ability of a system to handle increased load and is one of the pillars of software quality. Tareas de escalabilidad durante la fase de arquitectura incluyen:Scalability tasks during the architecting phase include:

  • Cargas de trabajo de partición.Partition workloads. Diseñe las partes del proceso de forma que sean discretas y se puedan descomponer.Design parts of the process to be discrete and decomposable. Minimizar el tamaño de cada parte.Minimize the size of each part. Esto permite que las partes componentes se distribuyan de manera que maximiza el uso de cada unidad de proceso.This allows the component parts to be distributed in a way that maximizes use of each compute unit. También resulta más fácil escalar la aplicación al agregar instancias de recursos específicos.It also makes it easier to scale the application by adding instances of specific resources. En dominios complejos, considere la posibilidad de adoptar una arquitectura de microservicios.For complex domains, consider adopting a microservices architecture.

  • Diseño de escalado.Design for scaling. El escalado permite a las aplicaciones reaccionar a una carga variable aumentando y disminuyendo el número de instancias de roles, colas y otros servicios.Scaling allows applications to react to variable load by increasing and decreasing the number of instances of roles, queues, and other services. No obstante, la aplicación debe diseñarse teniendo en cuenta esto.However, the application must be designed with this in mind. Por ejemplo, la aplicación y los servicios que utiliza deben ser sin estado para permitir que las solicitudes se enruten a cualquier instancia.For example, the application and the services it uses must be stateless to allow requests to be routed to any instance. Tener servicios sin estado también significa que agregar o quitar una instancia no afectar negativamente a los usuarios actuales.Having stateless services also means that adding or removing an instance does not adversely impact current users.

  • Planee el crecimiento con unidades de escalado.Plan for growth with scale units. Para cada recurso, conocer los límites de escalado superiores y utilice el particionamiento o descomposición ir más allá de esos límites.For each resource, know the upper scaling limits, and use sharding or decomposition to go beyond those limits. Diseñe la aplicación de forma que sea fácil de escalar agregando una o varias unidades de escalado.Design the application so that it's easily scaled by adding one or more scale units. Determine las unidades de escala para el sistema en términos de conjuntos de recursos bien definidos.Determine the scale units for the system in terms of well-defined sets of resources. Esto hace que aplicar las operaciones de escalado horizontal más sencillo y menos propenso a repercusión negativa en una falta de recursos en alguna parte del sistema global.This makes applying scale-out operations easier and less prone to negative impact caused by a lack of resources in some part of the overall system. Por ejemplo, agregando X podría requerir el número de máquinas virtuales de front-end Y número de colas adicionales y Z número de cuentas de almacenamiento para controlar la carga de trabajo adicional.For example, adding X number of front-end VMs might require Y number of additional queues and Z number of storage accounts to handle the additional workload. Por lo que podría consistir en una unidad de escalado X instancias de máquina virtual, Y colas, y Z cuentas de almacenamiento.So a scale unit could consist of X VM instances, Y queues, and Z storage accounts.

  • Evitar afinidad del cliente.Avoid client affinity. Siempre que sea posible, asegúrese de que la aplicación no requiere afinidad.Where possible, ensure that the application doesn't require affinity. A continuación, se pueden enrutar solicitudes a cualquier instancia y el número de instancias es irrelevante.Requests can then be routed to any instance, and the number of instances is irrelevant. Esto también evita la sobrecarga de tener que almacenar, recuperar y mantener la información de estado para cada usuario.This also avoids the overhead of storing, retrieving, and maintaining state information for each user.

  • Aproveche las características de escalado automático de la plataforma.Take advantage of platform autoscaling features. Usar las características de escalado automático integrado cuando sea posible, en lugar de mecanismos personalizados o de terceros.Use built-in autoscaling features when possible, rather than custom or third-party mechanisms. Reglas de escalado de uso programado, siempre que sea posible, para asegurarse de que los recursos están disponibles sin un retardo de arranque, pero agregue escalado automático reactivo a las reglas, donde corresponda, para hacer frente a cambios inesperados en la demanda.Use scheduled scaling rules, where possible, to ensure that resources are available without a startup delay, but add reactive autoscaling to the rules, where appropriate, to cope with unexpected changes in demand. Para obtener más información, consulte Guía de escalado automático.For more information, see Autoscaling guidance.

    Si la aplicación no está configurada para escalar automáticamente a medida que aumenta la carga, es posible que los servicios de la aplicación se producirá un error si se saturan con las solicitudes de usuario.If your application isn't configured to scale out automatically as load increases, it's possible that your application's services will fail if they become saturated with user requests. Para más información, consulte los siguientes artículos.For more information, see the following articles:

  • La descarga de tareas con uso intensivo de CPU y E/S como tareas en segundo plano.Offload intensive CPU/IO tasks as background tasks. Si una solicitud a un servicio se espera que tarde mucho tiempo en ejecutarse, o puede absorber recursos considerables, descargar el procesamiento a una tarea independiente.If a request to a service is expected to take a long time to run or may absorb considerable resources, offload the processing to a separate task. Use trabajos en segundo plano para ejecutar estas tareas.Use background jobs to execute these tasks. Esta estrategia permite que el servicio continúe recibiendo más solicitudes y siga respondiendo.This strategy enables the service to continue receiving further requests and to remain responsive. Para obtener más información, consulte Background jobs guidance(Guía de trabajos en segundo plano).For more information, see Background jobs guidance.

  • Distribuir la carga de trabajo para tareas en segundo plano.Distribute the workload for background tasks. Si hay muchas tareas en segundo plano, o si las tareas que requieren mucho tiempo o recursos, distribuya el trabajo en varias unidades de proceso.If there are many background tasks or if the tasks require considerable time or resources, spread the work across multiple compute units. Para ver una posible solución, consulte el patrón de consumidores simultáneos.For one possible solution, see the Competing Consumers pattern.

  • Considere la posibilidad de mover hacia un compartir nada arquitectura.Consider moving toward a shared-nothing architecture. Esta arquitectura emplea nodos autosuficientes e independientes que no tienen ningún punto de contención (por ejemplo, servicios o almacenamiento compartidos).This architecture uses independent, self-sufficient nodes that have no single point of contention (such as shared services or storage). En teoría, este sistema puede escalarse casi indefinidamente.In theory, such a system can scale almost indefinitely. Aunque un enfoque shared-nothing no suele ser práctico, puede ofrecer oportunidades para diseñar haciauna mejor escalabilidad.Although a fully shared-nothing approach is usually not practical, it may provide opportunities to design for better scalability. Buenos ejemplos de moverse hacia una arquitectura shared-nothing incluyen la creación de particiones de datos y evitar el uso de afinidad de cliente y el estado de sesión del servidor.Good examples of moving toward a shared-nothing architecture include partitioning data and avoiding the use of server-side session state and client affinity.

  • Diseñar los requisitos de almacenamiento de la aplicación para que esté dentro de los objetivos de escalabilidad y rendimiento de Azure Storage.Design your application's storage requirements to fall within Azure Storage scalability and performance targets. Azure Storage está diseñado para funcionar dentro de los destinos de escalabilidad y rendimiento predefinidos, por lo que diseñe la aplicación para usar almacenamiento dentro de esos destinos.Azure Storage is designed to function within predefined scalability and performance targets, so design your application to use storage within those targets. Si supera estos objetivos, la aplicación experimentará una limitación de almacenamiento.If you exceed these targets, your application will experience storage throttling. Para evitar la limitación, el aprovisionamiento de cuentas de almacenamiento adicional.To avoid throttling, provision additional storage accounts. Si se encuentra con el límite de la cuenta de almacenamiento, aprovisione más suscripciones de Azure y, a continuación, aprovisionar cuentas de almacenamiento adicionales.If you run up against the storage account limit, provision additional Azure subscriptions and then provision additional storage accounts there. Para más información, consulte Objetivos de escalabilidad y rendimiento de Azure Storage.For more information, see Azure Storage scalability and performance targets.

  • Seleccione el tamaño adecuado de la máquina virtual para la aplicación.Select the right VM size for your application. Mida la CPU, memoria, disco y E/S de las máquinas virtuales de producción real y compruebe que el tamaño de máquina virtual que seleccionó es suficiente.Measure the actual CPU, memory, disk, and I/O of your VMs in production, and verify that the VM size you've selected is sufficient. Si no es así, la aplicación puede experimentar problemas de capacidad a medida que las máquinas virtuales se acercan a sus límites.If not, your application may experience capacity issues as the VMs approach their limits. Los tamaños de las máquinas virtuales se describen con detalle en Tamaños de máquinas virtuales en Azure.VM sizes are described in detail in Sizes for virtual machines in Azure.

Determinar los requisitos de suscripción y serviciosDetermine subscription and service requirements

Elija la suscripción adecuada y las características de servicio para la aplicación al realizar estas tareas:Choose the right subscription and service features for your app by working through these tasks:

  • Evaluar los requisitos en relación con suscripción de Azure y límites de servicio.Evaluate requirements against Azure subscription and service limits. Las suscripciones de Azure tienen límites en determinados tipos de recursos, como el número de grupos de recursos, núcleos y las cuentas de almacenamiento.Azure subscriptions have limits on certain resource types, such as number of resource groups, cores, and storage accounts. Si los requisitos de aplicación superan los límites de suscripción de Azure, cree otra suscripción de Azure y aprovisione allí recursos suficientes.If your application requirements exceed Azure subscription limits, create another Azure subscription and provision sufficient resources there. Los servicios individuales de Azure tienen límites de consumo; por ejemplo, límites de almacenamiento, rendimiento, número de conexiones, solicitudes por segundo y otras métricas.Individual Azure services have consumption limits — for example, limits on storage, throughput, number of connections, requests per second, and other metrics. La aplicación se producirá un error si intenta utilizar recursos más allá de estos límites, lo que produce un tiempo de inactividad de limitación y posibles de servicio para los usuarios afectados.Your application will fail if it attempts to use resources beyond these limits, resulting in service throttling and possible downtime for affected users. Dependiendo del servicio específico y requisitos de su aplicación, a menudo puede evitar estos límites escalando verticalmente (por ejemplo, elegir otro plan de tarifa) o escalado horizontal (por ejemplo, agregar nuevas instancias).Depending on the specific service and your application requirements, you can often avoid these limits by scaling up (for example, choosing another pricing tier) or scaling out (such as adding new instances).
  • Determinar cuántas cuentas de almacenamiento que necesita.Determine how many storage accounts you need. Azure permite a un número específico de las cuentas de almacenamiento por suscripción.Azure allows a specific number of storage accounts per subscription. Para más información, consulte Límites, cuotas y restricciones de suscripción y servicios de Microsoft Azure.For more information, see Azure subscription and service limits, quotas, and constraints.
  • Seleccione el nivel de servicio correcto para Azure SQL Database.Select the right service tier for Azure SQL Database. Si la aplicación usa Azure SQL Database, seleccione el nivel de servicio adecuado.If your application uses Azure SQL Database, select the appropriate service tier. Si el nivel no puede controlar los requisitos de unidad (DTU) de transacciones de base de datos de la aplicación, se limitará el uso de datos.If the tier cannot handle your application's database transaction unit (DTU) requirements, your data use will be throttled. Si quiere obtener más información sobre cómo seleccionar el plan de servicio correcto, consulte Opciones y rendimiento de SQL Database: Comprender lo que está disponible en cada nivel de servicio.For more information on selecting the correct service plan, see SQL Database options and performance: Understand what's available in each service tier.
  • Aprovisione suficientes unidades de solicitud (RU) en Azure Cosmos DB.Provision sufficient request units (RUs) in Azure Cosmos DB. Con Azure Cosmos DB, paga por el rendimiento que aprovisiona y el almacenamiento que consume cada hora.With Azure Cosmos DB, you pay for the throughput you provision and the storage you consume on an hourly basis. El costo de todas las operaciones de base de datos se normaliza como unidades de solicitud, que abstrae los recursos del sistema, como CPU, e/s por segundo y la memoria.The cost of all database operations is normalized as RUs, which abstracts the system resources such as CPU, IOPS, and memory. Para más información, vea Unidades de solicitud en Azure Cosmos DB.For more information, see Request Units in Azure Cosmos DB.

Equilibrio de carga según sea necesarioLoad-balance as needed

Equilibrio de carga adecuado permite a las necesidades de disponibilidad y minimizar los costos asociados con la disponibilidad.Proper load-balancing allows you to meet availability requirements and to minimize costs associated with availability.

  • Uso del equilibrio de carga para distribuir las solicitudes.Use load-balancing to distribute requests. El equilibrio de carga distribuye las solicitudes de la aplicación a las instancias de servicio correctas mediante la eliminación de la rotación de las instancias no correctas.Load-balancing distributes your application's requests to healthy service instances by removing unhealthy instances from rotation. Si usa el servicio Azure App Service o Azure Cloud Services, ya es con equilibrio de carga para usted.If your service uses Azure App Service or Azure Cloud Services, it's already load-balanced for you. Sin embargo, si la aplicación usa máquinas virtuales de Azure, debe aprovisionar un equilibrador de carga.However, if your application uses Azure VMs, you need to provision a load-balancer. Para obtener más información, consulte ¿qué es Azure Load Balancer?For more information, see What is Azure Load Balancer?

    Azure Load Balancer sirve para:You can use Azure Load Balancer to:

    • Equilibrio de carga tráfico entrante de Internet a las máquinas virtuales.Load-balance incoming Internet traffic to your VMs. Esta configuración se conoce como un equilibrador de carga público.This configuration is known as a public Load Balancer.
    • Equilibra la carga del tráfico entre máquinas virtuales de una red virtual.Load-balance traffic across VMs inside a virtual network. También puede acceder a un servidor front-end de Load Balancer desde una red local en un escenario híbrido.You can also reach a Load Balancer front end from an on-premises network in a hybrid scenario. Ambos escenarios utilizan una configuración que se conoce como un equilibrador de carga interno.Both scenarios use a configuration that is known as an internal Load Balancer.
    • Reenviar el tráfico a un puerto desglosado en máquinas virtuales específicas con reglas de traducción (NAT) de direcciones de red entrante.Port forward traffic to an itemized port on specific VMs with inbound network address translation (NAT) rules.
    • Proporcionar conectividad de salida para máquinas virtuales dentro de la red virtual mediante un equilibrador de carga público.Provide outbound connectivity for VMs inside your virtual network by using a public Load Balancer.
  • Equilibra las cargas en regiones con un administrador de tráfico, como Azure Traffic Manager.Balance loads across regions with a traffic manager, such as Azure Traffic Manager. Para equilibrar la carga de tráfico entre regiones requiere una solución de administración de tráfico y proporciona Azure Traffic Manager.To load-balance traffic across regions requires a traffic management solution, and Azure provides Traffic Manager. También puede sacar partido de los servicios de terceros que proporcionan capacidades de administración del tráfico similares.You can also take advantage of third-party services that provide similar traffic-management capabilities.

Implementación de estrategias de resistenciaImplement resiliency strategies

Esta sección describe algunas estrategias comunes de resistencia.This section describes some common resiliency strategies. La mayoría de las estrategias siguientes no se limitan a una tecnología determinada.Most of these strategies are not limited to a particular technology. Las descripciones resumen la idea general tras cada técnica e incluyen vínculos a información adicional.The descriptions summarize the general idea behind each technique and include links to further reading.

  • Implementar patrones de resistencia para operaciones remotas, donde corresponda.Implement resiliency patterns for remote operations, where appropriate. Si la aplicación depende de la comunicación entre servicios remotos, siga patrones de diseño para tratar errores transitorios.If your application depends on communication between remote services, follow design patterns for dealing with transient failures.

  • Reintento de errores transitorios.Retry transient failures. Pueden estar ocasionados por una pérdida momentánea de conectividad de red, una conexión de base de datos caída o un tiempo de espera cuando un servicio está ocupado.These can be caused by momentary loss of network connectivity, a dropped database connection, or a timeout when a service is busy. A menudo, se puede resolver un error transitorio al reintentar la solicitud.Often, a transient failure can be resolved by retrying the request.

    • Para muchos servicios de Azure, el kit de desarrollo de software (SDK) de cliente implementa reintentos automáticos de manera que es transparente para el llamador.For many Azure services, the client software development kit (SDK) implements automatic retries in a way that is transparent to the caller. Consulte Guía de reintentos para servicios específicos.See Retry guidance for specific services.
    • O implemente el patrón Retry para ayudar a la aplicación controlar de forma transparente errores temporales anticipados cuando intenta conectarse a un recurso de red o un servicio.Or implement the Retry pattern to help the application handle anticipated, temporary failures transparently when it tries to connect to a service or network resource.
  • Usar un disyuntor para controlar los errores que pueden tardar una cantidad variable de tiempo en corregirlos.Use a circuit breaker to handle faults that might take a variable amount of time to fix. El patrón Circuit Breaker puede impedir que una aplicación intente repetidamente una operación que es propenso a errores.The Circuit Breaker pattern can prevent an application from repeatedly trying an operation that is likely to fail. El interruptor encapsula las llamadas a un servicio y realiza el seguimiento del número de errores recientes.The circuit breaker wraps calls to a service and tracks the number of recent failures. Si el número de errores supera un umbral, el interruptor comienza devolviendo un código de error sin llamar al servicio.If the failure count exceeds a threshold, the circuit breaker starts returning an error code without calling the service. Esto permite el servicio tenga tiempo para recuperar y ayuda a evitar errores en cascada.This gives the service time to recover and helps avoid cascading failures.

  • Aísle recursos críticos.Isolate critical resources. Errores en un subsistema pueden en ocasiones en cascada, lo que produce errores en otras partes de la aplicación.Failures in one subsystem can sometimes cascade, resulting in failures in other parts of the application. Esto puede ocurrir si un error impide que los recursos como subprocesos o sockets se libera, dando lugar a agotamiento de recursos.This can happen if a failure prevents resources such as threads or sockets from being freed, leading to resource exhaustion. Para evitar esto, puede dividir un sistema en grupos aislados para que un error en una partición no destruya todo el sistema.To avoid this, you can partition a system into isolated groups so that a failure in one partition does not bring down the entire system.

    Estos son algunos ejemplos de esta técnica, que a veces se denomina el patrón Bulkhead:Here are some examples of this technique, which is sometimes called the Bulkhead pattern:

    • Dividir una base de datos (por ejemplo, por inquilino) y asignar un grupo independiente de instancias de servidor web para cada partición.Partition a database (for example, by tenant), and assign a separate pool of web server instances for each partition.

    • Usar grupos de subprocesos independientes para aislar las llamadas a servicios diferentes.Use separate thread pools to isolate calls to different services. Esto ayuda a evitar errores en cascada, si se produce un error en uno de los servicios.This helps to prevent cascading failures if one of the services fails. Para obtener un ejemplo, vea el Netflix biblioteca Hystrix.For an example, see the Netflix Hystrix library.

    • Use contenedores para limitar los recursos disponibles para un subsistema determinado.Use containers to limit the resources available to a particular subsystem.

      Diagrama del patrón Bulkhead

  • Aplicar transacciones de compensación .Apply compensating transactions. Una transacción de compensación es una transacción que deshace los efectos de otra transacción completada.A compensating transaction is a transaction that undoes the effects of another completed transaction. En un sistema distribuido, puede ser difícil de lograr coherencia transaccional.In a distributed system, it can be difficult to achieve strong transactional consistency. Las transacciones de compensación ayudan a lograr coherencia mediante el uso de una serie de transacciones individuales más pequeñas, que se pueden deshacer en cada paso.Compensating transactions help to achieve consistency by using a series of smaller, individual transactions that can be undone at each step. Por ejemplo, para reservar un viaje, el cliente puede reservar un coche, una habitación de hotel y un vuelo.For example, to book a trip, a customer might reserve a car, a hotel room, and a flight. Si se produce un error en uno de estos pasos, se produce un error en toda la operación.If one of these steps fails, the entire operation fails. En lugar de intentar utilizar una única transacción distribuida para toda la operación, puede definir una transacción de compensación para cada paso.Instead of trying to use a single distributed transaction for the entire operation, you can define a compensating transaction for each step.

  • Implementar operaciones asincrónicas, siempre que sea posible.Implement asynchronous operations, whenever possible. Las operaciones sincrónicas pueden monopolizar los recursos y bloquear otras operaciones mientras la persona que llama espera que se complete el proceso.Synchronous operations can monopolize resources and block other operations while the caller waits for the process to complete. Diseñe cada parte de la aplicación para permitir las operaciones asincrónicas, siempre que sea posible.Design each part of your application to allow for asynchronous operations, whenever possible. Para obtener más información sobre cómo implementar la programación asincrónica en C#, consulte programación asincrónica.For more information on how to implement asynchronous programming in C#, see Asynchronous Programming.

Asegúrese de que la disponibilidad cumpla los SLAEnsure that availability meets SLAs

Disponibilidad es la proporción de tiempo que un sistema es funcional y funciona y es uno de los pilares de la calidad del software.Availability is the proportion of time that a system is functional and working, and it is one of the pillars of software quality. Use las tareas de esta sección para revisar la arquitectura de aplicación desde una perspectiva de disponibilidad para asegurarse de que su disponibilidad cumple el SLA.Use the tasks in this section to review your application architecture from an availability standpoint to make sure that your availability meets your SLAs.

  • Evitar los puntos únicos de error.Avoid any single point of failure. Todos los componentes, servicios, recursos e instancias de procesos deben implementarse como varias instancias para impedir que un único punto de error afecte a la disponibilidad.All components, services, resources, and compute instances should be deployed as multiple instances to prevent a single point of failure from affecting availability. Mecanismos de autenticación pueden ser también un único punto de error.Authentication mechanisms can also be a single point of failure. Diseñe la aplicación se configure para usar varias instancias y para detectar errores automáticamente y redirigir las solicitudes a instancias sin errores, si la plataforma no hace esto automáticamente.Design the application to be configurable to use multiple instances and to automatically detect failures and redirect requests to non-failed instances, if the platform doesn't do this automatically.

  • Descomponga las cargas de trabajo por objetivo de nivel de servicio.Decompose workloads by service-level objective. Si un servicio se compone de cargas de trabajo críticas y menos críticas, adminístrelas de manera diferente y especifique las características de servicio y el número de instancias para satisfacer sus requisitos de disponibilidad.If a service is composed of critical and less-critical workloads, manage them differently and specify the service features and number of instances to meet their availability requirements.

  • Minimizar y comprender las dependencias de servicio.Minimize and understand service dependencies. Minimizar el número de diferentes servicios, siempre que sea posible.Minimize the number of different services used, where possible. Asegúrese de que comprende todas las dependencias de característica y servicio que existen en el sistema.Ensure that you understand all the feature and service dependencies that exist in the system. En concreto, comprender el impacto general de error o un rendimiento reducido en cada dependencia.In particular, understand the overall impact of failure or reduced performance in each dependency.

  • Diseñar tareas y los mensajes se idempotente, siempre que sea posible.Design tasks and messages to be idempotent, where possible. Una operación es idempotente si se puede repetir varias veces y generar el mismo resultado.An operation is idempotent if it can be repeated multiple times and produce the same result. Esto puede asegurarse de que las solicitudes duplicadas no provocan problemas.This can ensure that duplicated requests don't cause problems. Los consumidores de mensajes y las operaciones que llevan a cabo deben ser idempotentes para que la repetición de una operación ejecutada anteriormente no represente los resultados no válidos.Message consumers and the operations they carry out should be idempotent so that repeating a previously executed operation does not render the results invalid. Esto puede significar la detección de mensajes duplicados o garantizar la coherencia mediante el uso de un enfoque optimista para tratar los conflictos.This may mean detecting duplicated messages or ensuring consistency by using an optimistic approach to handling conflicts.

  • Configurar tiempos de espera de solicitud.Configure request timeouts. Puede que los servicios y recursos dejen de estar disponibles, provocando errores en las solicitudes.Services and resources may become unavailable, causing requests to fail. Asegúrese de que los tiempos de espera que se aplica son adecuadas para cada servicio o recurso y para el cliente que tiene acceso a ellos.Ensure that the timeouts you apply are appropriate for each service or resource and for the client that is accessing them. En algunos casos, podría permitir un tiempo de espera más largo para una instancia determinada de un cliente, según el contexto y otras acciones que realice el cliente.In some cases, you might allow a longer timeout for a particular instance of a client, depending on the context and other actions that the client is performing. Los tiempos de espera corto pueden provocar operaciones de reintento excesivo para servicios y recursos que tienen una latencia considerable.Short timeouts may cause excessive retry operations for services and resources that have considerable latency. Tiempos de espera largos pueden causar bloqueos, si se ponen en cola un gran número de solicitudes, esperando un recurso para responder o servicio.Long timeouts can cause blocking, if a large number of requests are queued, waiting for a service or resource to respond.

  • Usar un agente de mensajes que implementa alta disponibilidad para las transacciones críticas.Use a message broker that implements high availability for critical transactions. Muchas aplicaciones en la nube usan mensajes para desencadenar las tareas asincrónicas.Many cloud applications use messaging to trigger asynchronous tasks. Para garantizar la entrega de mensajes, el sistema de mensajería debe proporcionar una alta disponibilidad.To guarantee delivery of messages, the messaging system should provide high availability. Mensajería de Azure Service Bus implementa al menos una vez semántica, lo que significa que se garantiza que un mensaje se entrega al menos una vez.Azure Service Bus messaging implements at least once semantics, which means that a message is guaranteed to be delivered at least once. En determinadas circunstancias se puedan entregar los mensajes duplicados.Duplicate messages may be delivered under certain circumstances. Si el procesamiento de mensajes es idempotente (vea el elemento anterior), la entrega repetida no debería ser un problema.If message processing is idempotent (see the previous item), repeated delivery should not be a problem.

  • Limitar a los usuarios de gran volumen.Throttle high-volume users. En ocasiones, un número reducido de usuarios crea una carga excesiva.Sometimes, a small number of users creates excessive load. Esto puede afectar a otros usuarios y puede reducir la disponibilidad general de la aplicación.This can have an impact on other users and can reduce the overall availability of your application. Cuando un cliente realiza un número excesivo de solicitudes, la aplicación podría limitar al cliente durante un período determinado.When a single client makes an excessive number of requests, the application might throttle the client for a certain period. Durante el período de limitación, la aplicación rechaza algunas o todas las solicitudes de ese cliente.During the throttling period, the application refuses some or all of the requests from that client. El umbral de limitación a menudo depende del nivel de servicio del cliente.The threshold for throttling often depends on the customer's service tier. Para obtener más información, consulte patrón Throttling.For more information, see Throttling pattern.

    Limitación no implica que el cliente haya actuado necesariamente malintencionadamente — sino que ha superado su cuota de servicio.Throttling does not imply that the client was necessarily acting maliciously — only that it exceeded its service quota. En algunos casos, un consumidor puede superar sistemáticamente su cuota o por lo demás comportarse incorrectamente.In some cases, a consumer might consistently exceed their quota or otherwise behave badly. En ese caso, podría ir más lejos y bloquear al usuario.In that case, you might go further and block the user. Normalmente, esto se hace bloqueando una clave de API o un rango de direcciones IP.Typically, this is done by blocking an API key or an IP address range.

  • Diseñar aplicaciones para degradarlas de forma correcta.Design applications to gracefully degrade. La carga en una aplicación puede superar la capacidad de una o más partes y hacer que se reduzca la disponibilidad y se produzcan errores en las conexiones.The load on an application may exceed the capacity of one or more parts, causing reduced availability and failed connections. Escalado puede mitigar este problema, pero puede tener un límite impuesto por otros factores, como el costo o la disponibilidad de recursos.Scaling can mitigate this problem, but it may reach a limit imposed by other factors, such as resource availability or cost. Si una aplicación alcanza un límite de recursos, debe realizar las acciones adecuadas para minimizar el impacto para el usuario.When an application reaches a resource limit, it should take appropriate action to minimize the impact for the user. Por ejemplo, en un sistema de comercio electrónico, si el subsistema de procesamiento de pedidos está bajo presión o se produce un error, se puede deshabilitar temporalmente al permitir que otras funciones, como la exploración del catálogo de productos.For example, in an e-commerce system, if the order-processing subsystem is under strain or fails, it can be temporarily disabled while allowing other functionality, such as browsing the product catalog. Puede ser adecuado posponer las solicitudes a un subsistema con errores — sigue permitiendo, por ejemplo, los clientes envíen pedidos pero guardarlos para procesarlos más adelante, cuando el subsistema de pedidos esté disponible de nuevo.It might be appropriate to postpone requests to a failing subsystem — for example, still enabling customers to submit orders but saving them for later processing, when the orders subsystem is available again.

  • Administrar correctamente los eventos rápidos de ráfaga.Gracefully handle rapid burst events. La mayoría de las aplicaciones debe administrar cargas de trabajo que varían con el tiempo.Most applications need to handle varying workloads over time. El escalado automático puede ayudar a controlar la carga, pero puede tardar algún tiempo para instancias adicionales entren en línea y controlar las solicitudes.Autoscaling can help to handle the load, but it may take some time for additional instances to come online and handle requests. Para evitar que las ráfagas de actividad sobrecarguen la aplicación, diséñela para poner en cola las solicitudes a los servicios que utiliza y degradarse correctamente cuando las colas son cerca de la capacidad.To prevent bursts of activity from overwhelming the application, design it to queue requests to the services it uses and to degrade gracefully when queues are near capacity. Asegúrese de que hay suficiente capacidad y rendimiento están disponibles en condiciones sin ráfaga para descargar las colas y controlar las solicitudes pendientes.Ensure there is sufficient performance and capacity available under non-burst conditions to drain the queues and handle outstanding requests. Para obtener más información, consulte el patrón de equilibrio de carga basado en colas.For more information, see the Queue-Based Load Leveling pattern.

  • Componga o conmutar por recuperación a varios componentes.Compose or fail back to multiple components. Diseñe aplicaciones para usar varias instancias sin afectar a las operaciones y las conexiones existentes, siempre que sea posible.Design applications to use multiple instances without affecting operation and existing connections, where possible. Para maximizar la disponibilidad, use varias instancias y distribuir las solicitudes entre ellas y detectar y evitar el envío de solicitudes a instancias con error.To maximize availability, use multiple instances and distribute requests between them, and detect and avoid sending requests to failed instances.

  • Conmutar por recuperación a un flujo de trabajo o servicio diferente.Fail back to a different service or workflow. Por ejemplo, si se produce un error de escritura en la base de datos SQL, almacenar temporalmente datos en Blob storage o Redis Cache.For example, if writing to SQL Database fails, temporarily store data in Blob storage or Redis Cache. Proporcione una manera de reproducir las escrituras en SQL Database cuando el servicio se vuelva disponible.Provide a way to replay the writes to SQL Database when the service becomes available. En algunos casos, una operación con error puede tener una acción alternativa que permite que la aplicación siga funcionando, incluso cuando un componente o servicio se produce un error.In some cases, a failed operation may have an alternative action that allows the application to continue to work, even when a component or service fails. Si es posible, detecte errores y redirigir las solicitudes a otros servicios, mientras que el servicio principal está sin conexión.If possible, detect failures and redirect requests to other services while the primary service is offline.

  • Usar Equilibrio de carga para suavizar los picos de tráfico.Use load leveling to smooth out spikes in traffic. Las aplicaciones pueden experimentar picos repentinos en el tráfico, lo que puede sobrecargar los servicios en el back-end.Applications may experience sudden spikes in traffic, which can overwhelm services on the back end. Si un servicio back-end no puede responder a las solicitudes lo suficientemente rápido, las solicitudes pendientes se pueden acumular o el servicio puede limitar la aplicación.If a back-end service cannot respond to requests quickly enough, the pending requests may accumulate or the service may throttle the application. Para evitar esto, puede utilizar una cola como búfer.To avoid this, you can use a queue as a buffer. Cuando hay un nuevo elemento de trabajo, en lugar de llamar al servicio back-end inmediatamente, la aplicación pone en cola un elemento de trabajo para ejecutar de forma asincrónica.When there is a new work item, instead of calling the back-end service immediately, the application queues a work item to run asynchronously. La cola actúa como un búfer que suaviza los picos de carga.The queue acts as a buffer that smooths out peaks in the load. Para obtener más información, consulte patrón Queue-Based Load Leveling.For more information, see Queue-Based Load Leveling pattern.

Administrar los datosManage your data

Cómo administrar los datos se reproduce directamente en la disponibilidad de la aplicación.How you manage your data plays directly into the availability of your application. Las tareas de esta sección pueden ayudarle a crear un plan de administración para ayudar a garantizar la disponibilidad.The tasks in this section can help you create a management plan to help ensure availability.

  • Replicar los datos y comprender los métodos de replicación para los almacenes de datos de la aplicación.Replicate data and understand the replication methods for your application's data stores. La replicación de datos es una estrategia general para tratar errores no transitorios en un almacén de datos.Replicating data is a general strategy for handling non-transient failures in a data store. Tenga en cuenta las rutas de acceso de lectura y escritura.Consider both the read and write paths. Según la tecnología de almacenamiento, es posible que tenga varias réplicas de escritura o podría tener una única réplica de escritura y varias réplicas de solo lectura.Depending on the storage technology, you might have multiple writable replicas or you might have a single writable replica and multiple read-only replicas. Para maximizar la disponibilidad, las réplicas pueden colocarse en varias regiones.To maximize availability, replicas can be placed in multiple regions. Sin embargo, este enfoque aumenta la latencia al replicar los datos.However, this approach increases the latency when replicating the data. Por lo general, la replicación entre las regiones se realiza de forma asincrónica, lo que implica un modelo de coherencia final y la posible pérdida de datos si se produce un error en una réplica.Typically, replicating across regions is done asynchronously, which implies an eventual consistency model and potential data loss if a replica fails.

    Puede usar Azure Site Recovery replicar las máquinas virtuales de Azure desde una región a otra.You can use Azure Site Recovery to replicate Azure Virtual Machines from one region to another. Site Recovery replica datos continuamente en la región de destino.Site Recovery replicates data continuously to the target region. Cuando se produce una interrupción en el sitio principal, conmuta por error a una ubicación secundaria.When an outage occurs at your primary site, you fail over to a secondary location.

  • Asegúrese de que ninguna cuenta de usuario individual tenga acceso a los datos de producción y de copia de seguridad.Ensure that no single user account has access to both production and backup data. Las copias de seguridad de datos estarán expuestas a riesgos si una sola cuenta de usuario tiene permiso para escribir tanto en los orígenes de producción y como en los de copia de seguridad.Your data backups are compromised if one single user account has permission to write to both production and backup sources. Un usuario malintencionado puede eliminar intencionadamente todos sus datos y un usuario normal puede eliminarlos accidentalmente.A malicious user could purposely delete all your data, and a regular user could accidentally delete it. Diseñe la aplicación para limitar los permisos de cada cuenta de usuario.Design your application to limit the permissions of each user account. Solo conceder acceso de escritura a los usuarios que lo necesiten y conceder acceso a la producción o copia de seguridad, pero no ambos.Only grant write access to users who require it, and grant access to either production or backup, but not both.

  • Documente y pruebe el proceso de conmutación por error y conmutación por recuperación de almacén de datos.Document and test your data store failover and failback process. Si un almacén de datos se produce un error catastrófico, un operador humano debe seguir un conjunto de instrucciones documentadas para conmutar por error a un nuevo almacén de datos.If a data store fails catastrophically, a human operator must follow a set of documented instructions to fail over to a new data store. Si los pasos documentados tienen errores, un operador no podrá seguirlos correctamente y para conmutar por error el recurso.If the documented steps have errors, an operator won't be able to successfully follow them and to fail over the resource. Probar con regularidad los pasos de instrucciones para comprobar que un operador que sigue a la documentación puede conmutar por error y conmutar por recuperación correctamente.Regularly test the instruction steps to verify that an operator who follows the documentation can successfully fail over and fail back.

  • Realizar una copia de seguridad de los datos y validar las copias de seguridad de datos.Back up your data and validate your data backups. Ejecutar regularmente un script para validar la integridad de los datos, esquema y las consultas para asegurarse de que los datos de copia de seguridad están lo que espera.Regularly run a script to validate data integrity, schema, and queries to ensure that backup data is what you expect. Registre e informe de cualquier inconsistencia para que el servicio de copia de seguridad se pueda reparar.Log and report any inconsistencies so the backup service can be repaired.

  • Use copias de seguridad periódicas y restauración en un momento.Use periodic backup and point-in-time restore. Regulares y automáticas hacer una copia de seguridad de los datos que no se conservan en otro lugar.Regularly and automatically back up data that is not preserved elsewhere. Compruebe que se pueden restaurar con confiabilidad tanto los datos y la propia aplicación si se produce un error.Verify that you can reliably restore both the data and the application itself if failure occurs. Asegúrese de que las copias de seguridad satisfacer el RPO.Ensure that backups meet your RPO. Replicación de datos no es una característica de copia de seguridad, porque los errores humanos u operaciones malintencionadas pueden dañar los datos en todas las réplicas.Data replication isn't a backup feature, because human error or malicious operations can corrupt data across all the replicas. El proceso de copia de seguridad debe ser seguro para proteger los datos en tránsito y en almacenamiento.The backup process must be secure to protect the data in transit and in storage. Las bases de datos normalmente se recuperar a un momento anterior en el tiempo mediante el uso de los registros de transacciones.Databases can usually be recovered to a previous point in time by using transaction logs. Para obtener más información, consulte recuperarse ante datos dañados o eliminación accidental.For more information, see Recover from data corruption or accidental deletion.

  • Considere el uso de una cuenta de almacenamiento con redundancia geográfica.Consider using a geo-redundant storage account. Los datos almacenados en una cuenta de Azure Storage siempre se replican de forma local.Data stored in an Azure Storage account is always replicated locally. Sin embargo, existen varias estrategias de replicación para elegir cuando se aprovisiona una cuenta de almacenamiento.However, there are multiple replication strategies to choose from when a storage account is provisioned. Para proteger los datos de aplicación en el raro caso cuando toda una región deja de estar disponible, seleccione Azure Storage con redundancia geográfica de acceso de lectura (RA-GRS).To protect your application data against the rare case when an entire region becomes unavailable, select Azure Read-Access Geo-Redundant Storage (RA-GRS).

    Nota

    En el caso de las máquinas virtuales, no confíe en la replicación RA-GRS para restaurar los discos de máquinas virtuales (archivos VHD).For VMs, do not rely on RA-GRS replication to restore the VM disks (VHD files). En su lugar, use Azure Backup.Instead, use Azure Backup.

  • Considere la posibilidad de implementar datos de referencia en varias regiones.Consider deploying reference data to multiple regions. Los datos de referencia son de solo lectura y admiten la funcionalidad de la aplicación.Reference data is read-only data that supports application functionality. Normalmente, no cambia con frecuencia.It typically doesn't change often. Aunque restaurar desde copia de seguridad es una forma de controlar las interrupciones del servicio en toda la región, el RTO es relativamente largo.Although restoring from backup is one way to handle region-wide service disruptions, the RTO is relatively long. Al implementar la aplicación en una región secundaria, algunas estrategias pueden mejorar el RTO de los datos de referencia.When you deploy the application to a secondary region, some strategies can improve the RTO for reference data.

    Dado que los datos de referencia con poca frecuencia, puede mejorar el RTO si mantiene una copia permanente de la región secundaria.Because reference data changes infrequently, you can improve the RTO by maintaining a permanent copy in the secondary region. Esto elimina el tiempo necesario para restaurar las copias de seguridad después de un desastre.This eliminates the time required to restore backups after a disaster. Para cumplir los requisitos de recuperación ante desastres en varias regiones, es preciso implementar la aplicación y los datos de referencia juntos en varias regiones.To meet the multiple-region disaster recovery requirements, you must deploy the application and the reference data together in multiple regions.

  • Usar simultaneidad optimista y coherencia eventual.Use optimistic concurrency and eventual consistency. Las transacciones que bloquean el acceso a los recursos a través del bloqueo (simultaneidad pesimista) puede provocar un bajo rendimiento y reducir la disponibilidad.Transactions that block access to resources through locking (pessimistic concurrency) can cause poor performance and reduce availability. Estos problemas pueden ser especialmente importantes en sistemas distribuidos.These problems can become especially acute in distributed systems. En muchos casos, un cuidadoso diseño y técnicas, como las particiones, pueden minimizar las posibilidades de que se produzcan actualizaciones en conflicto.In many cases, careful design and techniques, such as partitioning, can minimize the chances of conflicting updates occurring. Si los datos se replican o leer desde un almacén actualizado por separado, los datos solo será coherentes.If data is replicated or read from a separately updated store, the data will only be eventually consistent. Pero las ventajas superan normalmente el impacto sobre la disponibilidad del uso de transacciones para garantizar la coherencia inmediata.But the advantages usually outweigh the impact on availability of using transactions to ensure immediate consistency.

  • Utilice la replicación geográfica activa para base de datos de SQL para replicar los cambios en una base de datos secundaria.Use active geo-replication for SQL Database to replicate changes to a secondary database. Replicación geográfica activa para base de datos SQL replica automáticamente los cambios de la base de datos en bases de datos secundarias en la misma región o en una región distinta.Active geo-replication for SQL Database automatically replicates database changes to secondary databases in the same region or a different region. Para obtener más información, consulte creación y uso de replicación geográfica activa.For more information, see Creating and using active geo-replication.

    Como alternativa, puede tomar un enfoque más manual mediante el uso de la copiar base de datos comando para crear una copia de seguridad de la base de datos con coherencia transaccional.Alternatively, you can take a more manual approach by using the DATABASE COPY command to create a backup copy of the database with transactional consistency. También puede usar el servicio de importación y exportación de Azure SQL Database, que permite exportar bases de datos a archivos BACPAC (archivos comprimidos que contienen el esquema de base de datos y los datos asociados) que se almacenan en Azure Blob Storage.You can also use the import/export service of Azure SQL Database, which supports exporting databases to BACPAC files (compressed files containing your database schema and associated data) that are stored in Azure Blob storage. Almacenamiento de Azure crea dos réplicas del archivo de copia de seguridad en la misma región.Azure Storage creates two replicas of the backup file in the same region. Sin embargo, la frecuencia del proceso de copia de seguridad determina el RPO, que es la cantidad de datos que podría perder en escenarios de desastre.However, the frequency of the backup process determines your RPO, which is the amount of data you might lose in disaster scenarios. Por ejemplo, si copia datos cada hora, y dos minutos antes de la copia de seguridad se produce un desastre, perderá 58 minutos de datos.For example, if you back up data every hour, and a disaster occurs two minutes before the backup, you will lose 58 minutes of data. Además, para protegerse contra una interrupción del servicio en toda una región, debe copiar los archivos BACPAC en otra región.Also, to protect against a region-wide service disruption, you should copy the BACPAC files to an alternate region. Para obtener más información, consulte Introducción a la continuidad del negocio con Azure SQL Database.For more information, see Overview of business continuity with Azure SQL Database.

  • Use copias de seguridad geográfica para SQL Data Warehouse.Use geo-backups for SQL Data Warehouse. En el caso de SQL Data Warehouse, use copias de seguridad con replicación geográfica para realizar la restauración a una región emparejada en una recuperación ante un desastre.For SQL Data Warehouse, use geo-backups to restore to a paired region for disaster recovery. Estas copias de seguridad se realizan cada 24 horas y se pueden restaurar en 20 minutos en la región emparejada.These backups are taken every 24 hours and can be restored within 20 minutes in the paired region. Esta característica está activada de forma predeterminada para todas las instancias de SQL Data Warehouse.This feature is on by default for all SQL Data Warehouse instances. Para obtener más información sobre cómo restaurar el almacenamiento de datos, vea restaurar a partir de una región geográfica de Azure mediante PowerShell.For more information on how to restore your data warehouse, see Restore from an Azure geographical region using PowerShell.

  • Replicación de discos de máquinas virtuales con Azure Site RecoveryReplicate VM disks using Azure Site Recovery. Al replicar máquinas virtuales de Azure mediante Site Recovery, todos los discos de máquina virtual continuamente se replican asincrónicamente en la región de destino.When you replicate Azure VMs using Site Recovery, all the VM disks are continuously replicated to the target region asynchronously. Los puntos de recuperación se crean cada pocos minutos.The recovery points are created every few minutes. Esto proporciona un RPO del orden de minutos.This gives you an RPO on the order of minutes.

  • Realizar una copia de seguridad de SQL Server que se ejecutan en máquinas virtuales o configurar una sesión de trasvase de registros.Back up SQL Server running on VMs or configure a log-shipping session. Para ejecutar SQL Server en máquinas virtuales, hay dos opciones: copias de seguridad tradicionales y trasvase de registros.For SQL Server running on VMs, there are two options: traditional backups and log shipping. Copias de seguridad tradicionales le permiten restaurar a un momento específico en el tiempo, pero el proceso de recuperación es lento.Traditional backups enable you to restore to a specific point in time, but the recovery process is slow. Restaurar copias de seguridad tradicionales requiere que comience con una copia de seguridad completa inicial y, a continuación, aplicar las copias de seguridad realizadas después de ella.Restoring traditional backups requires that you start with an initial full backup and then apply any backups taken after that. La segunda opción es configurar una sesión de trasvase de registros para retrasar la restauración de copias de seguridad del registro (por ejemplo, en dos horas).The second option is to configure a log-shipping session to delay the restore of log backups (for example, by two hours). Esto proporciona un tiempo para recuperarse de los errores que se produzcan en el servidor principal.This provides a window to recover from errors made on the primary.

  • Usar un proceso personalizado o una herramienta de terceros para copia de seguridad de Azure Storage.Use a custom process or third-party tool for Azure Storage backup. Para el almacenamiento de Azure, puede desarrollar un proceso de copia de seguridad personalizado o usar una herramienta de copia de seguridad de terceros.For Azure Storage, you can develop a custom backup process or use a third-party backup tool. La mayoría de los diseños de aplicaciones presentan complejidades adicionales, en qué almacenamiento los recursos hacen referencia entre sí.Most application designs have additional complexities, in which storage resources reference each other. Por ejemplo, considere la posibilidad de una base de datos SQL con una columna que se vincula a un blob de Azure Storage.For example, consider a SQL database with a column that links to a blob in Azure Storage. Si las copias de seguridad no se realizan simultáneamente, la base de datos puede tener un puntero a un blob del que no se había realizado una copia de seguridad antes del error.If the backups do not happen simultaneously, the database might have a pointer to a blob that was not backed up before the failure. La aplicación o el plan de recuperación ante desastres debe implementar procesos que controlen esta incoherencia tras una recuperación.The application or disaster recovery plan must implement processes to handle this inconsistency after a recovery.

  • Use las capacidades de instantáneas o replicación nativa para otras plataformas de datos hospedados en máquinas virtuales.Use the native replication or snapshot capabilities for other data platforms hosted on VMs. Otras plataformas de datos, como Elasticsearch o MongoDB, tienen sus propias funcionalidades y consideraciones al crear una copia de seguridad integrada y proceso de restauración.Other data platforms, such as Elasticsearch or MongoDB, have their own capabilities and considerations when creating an integrated backup and restore process. Para estas plataformas de datos, la recomendación general es utilizar ninguna replicación basado en integración nativa o disponible o funciones de instantánea.For these data platforms, the general recommendation is to use any native or available integration-based replication or snapshot capabilities. Si estas funcionalidades no existen o que no son adecuadas, considere el uso de las instantáneas de copia de seguridad de Azure o un disco para crear una copia en el momento de datos de la aplicación.If those capabilities don't exist or aren't suitable, consider using Azure Backup or disk snapshots to create a point-in-time copy of application data. En todos los casos, es importante determinar cómo realizar copias de seguridad coherentes, especialmente cuando los datos de aplicación abarcan varios sistemas de archivos o se combinan varias unidades en un único sistema de archivos.In all cases, it's important to determine how to achieve consistent backups, especially when application data spans multiple files systems or multiple drives are combined into a single file system.

  • Comprenda los métodos de replicación para los orígenes de datos de la aplicación.Understand the replication methods for your application's data sources. Los datos de aplicación se almacenan en distintos orígenes de datos y habrá varían los requisitos de disponibilidad.Your application data will be stored in different data sources and will have varied availability requirements. Evaluar los métodos de replicación para cada tipo de almacenamiento de datos en Azure, incluidos redundancia de almacenamiento de Azure y SQL Database la replicación geográfica activa para asegurarse de que su aplicación datos se cumplen los requisitos.Evaluate the replication methods for each type of data storage in Azure, including Azure Storage redundancy and SQL Database active geo-replication to ensure that your application's data requirements are satisfied. Si replica máquinas virtuales de Azure mediante Site Recovery, todos los discos de máquina virtual continuamente se replican asincrónicamente en la región de destino.If you replicate Azure VMs using Site Recovery, all the VM disks are continuously replicated to the target region asynchronously. Los puntos de recuperación se crean cada pocos minutos.The recovery points are created every few minutes.

  • Establezca estrategias de datos para la recuperación ante desastres.Establish data strategies for disaster recovery. Control de datos adecuada supone un desafío de cualquier plan de recuperación ante desastres.Proper data handling is a challenging aspect of any disaster recovery plan. Durante el proceso de recuperación, la restauración de datos suele ser la operación que tarda más tiempo.During the recovery process, data restoration typically takes the most time. Varias opciones para reducir la funcionalidad plantean retos difíciles para la recuperación de datos y coherencia.Different choices for reducing functionality result in difficult challenges for data recovery and consistency.

Pasos siguientesNext steps