Desarrollar los requisitos para las aplicaciones resistentes de AzureDeveloping requirements for resilient Azure applications

Creación de resistencia (recuperarse de errores) y disponibilidad (que se ejecuta en un estado correcto sin tiempo de inactividad considerable) en sus aplicaciones comienza con la recopilación de requisitos.Building resiliency (recovering from failures) and availability (running in a healthy state without significant downtime) into your apps begins with gathering requirements. Por ejemplo, ¿cuánto tiempo de inactividad es aceptable?For example, how much downtime is acceptable? ¿Cuánto cuesta tiempo de inactividad potencial a su negocio?How much does potential downtime cost your business? ¿Cuáles son los requisitos de disponibilidad de su cliente?What are your customer's availability requirements? ¿Cuánto tiempo se invierte en la creación de la aplicación de alta disponibilidad?How much do you invest in making your application highly available? ¿Qué es el riesgo y el costo?What is the risk versus the cost?

Identificar las distintas cargas de trabajoIdentify distinct workloads

Soluciones en la nube suelen constan de varias aplicaciones cargas de trabajo.Cloud solutions typically consist of multiple application workloads. Una carga de trabajo es una funcionalidad distinto o tarea que está separada lógicamente de otras tareas en cuanto a requisitos de almacenamiento de datos y la lógica empresarial.A workload is a distinct capability or task that is logically separated from other tasks in terms of business logic and data storage requirements. Por ejemplo, una aplicación de comercio electrónico podría tener las cargas de trabajo siguientes:For example, an e-commerce app might have the following workloads:

  • Examinar y buscar un catálogo de productos.Browse and search a product catalog.
  • Crear y realizar el seguimiento de pedidos.Create and track orders.
  • Ver recomendaciones.View recommendations.

Cada carga de trabajo puede tener diferentes requisitos de disponibilidad, escalabilidad, coherencia de datos y recuperación ante desastres.Each workload has different requirements for availability, scalability, data consistency, and disaster recovery. Asegúrese de tomar decisiones empresariales por equilibrar el costo frente al riesgo de cada carga de trabajo.Make your business decisions by balancing cost versus risk for each workload.

También puede descomponer las cargas de trabajo por objetivo de nivel de servicio.Also 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 necesario 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 needed to meet their availability requirements.

Plan para patrones de usoPlan for usage patterns

Identifique las diferencias en los requisitos durante los períodos críticos y no críticos.Identify differences in requirements during critical and non-critical periods. ¿Hay ciertos períodos críticos en los que el sistema debe estar disponible?Are there certain critical periods when the system must be available? Por ejemplo, una aplicación de la declaración de impuestos no se puede producir un error durante una fecha límite de presentación y un servicio de streaming de vídeo no debería retrasar durante un evento en directo.For example, a tax-filing application can't fail during a filing deadline and a video streaming service shouldn't lag during a live event. En estas situaciones, comparar el costo frente al riesgo.In these situations, weigh the cost against the risk.

  • Para garantizar el tiempo de actividad y cumplir los acuerdos de nivel de servicio (SLA) en períodos críticos, planear la redundancia en varias regiones en caso de que se produce un error en uno, incluso si cuesta más.To ensure uptime and meet service-level agreements (SLAs) in critical periods, plan redundancy across several regions in case one fails, even if it costs more.
  • Por el contrario, durante los períodos que no son críticas, ejecute la aplicación en una sola región para minimizar los costos.Conversely, during non-critical periods, run your application in a single region to minimize costs.
  • En algunos casos, puede mitigar los gastos adicionales mediante el uso de técnicas sin servidor modernas que tienen la facturación por consumo.In some cases, you can mitigate additional expenses by using modern serverless techniques that have consumption-based billing.

Establecer las métricas de disponibilidad y recuperaciónEstablish availability and recovery metrics

Crear números de línea base para los dos conjuntos de métricas como parte del proceso de los requisitos.Create baseline numbers for two sets of metrics as part of the requirements process. El primer conjunto ayuda a determinar dónde agregar redundancia de servicios en la nube y qué SLA para proporcionar a los clientes.The first set helps you determine where to add redundancy to cloud services and which SLAs to provide to customers. El segundo conjunto le ayudará a que planear la recuperación ante desastres.The second set helps you plan your disaster recovery.

Métricas de disponibilidadAvailability metrics

Use estas medidas para planear redundancia y determinar los SLA de cliente.Use these measures to plan for redundancy and determine customer SLAs.

  • Tiempo medio para recuperación (MTTR) es el tiempo promedio que tarda en restaurar un componente después de un error.Mean time to recover (MTTR) is the average time it takes to restore a component after a failure.
  • Tiempo medio entre errores (MTBF) es cómo cuánto tiempo un componente puede esperar a la última entre las interrupciones.Mean time between failures (MTBF) is the how long a component can reasonably expect to last between outages.

Métricas de recuperaciónRecovery metrics

Obtener estos valores, al llevar a cabo una evaluación de riesgos y asegúrese de que comprender el costo y el riesgo de tiempo de inactividad y pérdida de datos.Derive these values by conducting a risk assessment, and make sure you understand the cost and risk of downtime and data loss. Estos son los requisitos no funcionales de un sistema y deben determinarse según los requisitos empresariales.These are nonfunctional requirements of a system and should be dictated by business requirements.

  • El objetivo de tiempo de recuperación (RTO) es el tiempo máximo aceptable que una aplicación no está disponible después de un incidente.Recovery time objective (RTO) is the maximum acceptable time an application is unavailable after an incident.
  • El objetivo de punto de recuperación (RPO) es la duración máxima de pérdida de datos que es aceptable durante un desastre.Recovery point objective (RPO) is the maximum duration of data loss that's acceptable during a disaster.

Si el valor MTTR de cualquier componente crítico en un programa de instalación de alta disponibilidad supera el RTO de sistema, un error en el sistema podría provocar una interrupción inaceptable del negocio.If the MTTR value of any critical component in a highly available setup exceeds the system RTO, a failure in the system might cause an unacceptable business disruption. Es decir, no podrá restaurar el sistema dentro del RTO que se ha definido.That is, you can't restore the system within the defined RTO.

Determinar los objetivos de disponibilidad de la carga de trabajoDetermine workload availability targets

Definir su propio destino SLA para cada carga de trabajo de la solución para que pueda determinar si la arquitectura cumple los requisitos empresariales.Define your own target SLAs for each workload in your solution so you can determine whether the architecture meets the business requirements.

Considere la posibilidad de costo y complejidadConsider cost and complexity

Todo lo demás es igual, mayor disponibilidad es mejor.Everything else being equal, higher availability is better. Pero la medida que aspira nueves más, aumentan el costo y complejidad.But as you strive for more nines, the cost and complexity grow. Un tiempo de actividad del 99,99% se traduce en unos cinco minutos de inactividad total por mes.An uptime of 99.99% translates to about five minutes of total downtime per month. ¿Es lo que vale la pena la complejidad adicional y el costo para llegar a cinco nueves?Is it worth the additional complexity and cost to reach five nines? La respuesta depende de los requisitos del negocio.The answer depends on the business requirements.

Estas son algunas otras consideraciones al definir un Acuerdo de Nivel de Servicio:Here are some other considerations when defining an SLA:

  • Para lograr cuatro nueves (99,99%), no puede depender de intervención manual para recuperarse de errores.To achieve four nines (99.99%), you can't rely on manual intervention to recover from failures. La aplicación debe autodiagnosticarse y recuperarse automáticamente.The application must be self-diagnosing and self-healing.
  • Más allá de cuatro nueves, resulta difícil para detectar interrupciones del sistema con la rapidez suficiente para cumplir el SLA.Beyond four nines, it's challenging to detect outages quickly enough to meet the SLA.
  • Piense en la ventana de tiempo con la que se mide que el Acuerdo de Nivel de Servicio.Think about the time window that your SLA is measured against. Cuanto menor sea la ventana, más estrictas serán las tolerancias.The smaller the window, the tighter the tolerances. No tiene sentido definir el SLA en términos de tiempo de actividad por hora o diariamente.It doesn't make sense to define your SLA in terms of hourly or daily uptime.
  • Tenga en cuenta las medidas MTBF y MTTR.Consider the MTBF and MTTR measurements. Cuanto mayor sea el SLA, menos frecuentemente el servicio puede dejar de funcionar y cuanto debe recuperar el servicio.The higher your SLA, the less frequently the service can go down and the quicker the service must recover.
  • Obtenga el acuerdo de sus clientes para los objetivos de disponibilidad de cada parte de la aplicación y documente lo.Get agreement from your customers for the availability targets of each piece of your application, and document it. En caso contrario, el diseño puede no cumplir las expectativas de los clientes.Otherwise, your design may not meet the customers' expectations.

Identificar las dependenciasIdentify dependencies

Realizar ejercicios de asignación de dependencias para identificar las dependencias internas y externas.Perform dependency-mapping exercises to identify internal and external dependencies. Los ejemplos incluyen las dependencias relacionadas con la seguridad o la identidad, como Active Directory o servicios de terceros, como un proveedor de pago o servicio de mensajería de correo electrónico.Examples include dependencies relating to security or identity, such as Active Directory, or third-party services such as a payment provider or e-mail messaging service.

Preste especial atención a las dependencias externas que podría ser un único punto de error o provocar cuellos de botella.Pay particular attention to external dependencies that might be a single point of failure or cause bottlenecks. Si una carga de trabajo requiere tiempo de actividad del 99,99%, pero depende de un servicio con un SLA del 99,9%, ese servicio no puede ser un único punto de error en el sistema.If a workload requires 99.99% uptime but depends on a service with a 99.9% SLA, that service can't be a single point of failure in the system. Una solución es tener una ruta de reserva en caso de que se produce un error en el servicio.One remedy is to have a fallback path in case the service fails. Como alternativa, tomar otras medidas para recuperarse de un error en ese servicio.Alternatively, take other measures to recover from a failure in that service.

En la tabla siguiente se muestra el tiempo de inactividad acumulativo potencial para varios niveles de Acuerdo de Nivel de Servicio.The following table shows the potential cumulative downtime for various SLA levels.

Acuerdo de Nivel de ServicioSLA Tiempo de inactividad por semanaDowntime per week Tiempo de inactividad por mesDowntime per month Tiempo de inactividad por añoDowntime per year
99%99% 1,68 horas1.68 hours 7,2 horas7.2 hours 3,65 días3.65 days
99,9 %99.9% 10,1 minutos10.1 minutes 43,2 minutos43.2 minutes 8,76 horas8.76 hours
99,95 %99.95% 5 minutos5 minutes 21,6 minutos21.6 minutes 4,38 horas4.38 hours
99,99%99.99% 1,01 minutos1.01 minutes 4,32 minutos4.32 minutes 52,56 minutos52.56 minutes
99,999 %99.999% 6 segundos6 seconds 25,9 segundos25.9 seconds 5,26 minutos5.26 minutes

Comprender los acuerdos de nivel de servicioUnderstand service-level agreements

En Azure, el acuerdo de nivel de servicio explica los compromisos de Microsoft de actividad y conectividad.In Azure, the Service Level Agreement describes Microsoft's commitments for uptime and connectivity. Si el SLA para un servicio determinado es del 99,9%, debe esperar el servicio esté disponible un 99,9% del tiempo.If the SLA for a particular service is 99.9%, you should expect the service to be available 99.9% of the time. Servicios diferentes tienen distintos SLA.Different services have different SLAs.

El SLA de Azure también incluye disposiciones para obtener un crédito por servicio si no se cumple el SLA, junto con definiciones específicas de disponibilidad para cada servicio.The Azure SLA also includes provisions for obtaining a service credit if the SLA is not met, along with specific definitions of availability for each service. Ese aspecto del Acuerdo de Nivel de Servicio actúa como una directiva de cumplimiento.That aspect of the SLA acts as an enforcement policy.

Acuerdos de Nivel de Servicio compuestosComposite SLAs

SLA compuestos abarcar varios servicios que admiten una aplicación, cada una con diferentes niveles de disponibilidad.Composite SLAs involve multiple services supporting an application, each with differing levels of availability. Por ejemplo, considere una aplicación web de App Service que escribe en la base de datos de SQL Azure.For example, consider an App Service web app that writes to Azure SQL Database. En el momento de redactar este artículo, estos servicios de Azure tienen los siguientes Acuerdos de Nivel de Servicio:At the time of this writing, these Azure services have the following SLAs:

  • App Service web apps = 99,95%App Service web apps = 99.95%
  • SQL Database = 99,99 %SQL Database = 99.99%

¿Cuál es el tiempo de inactividad máximo que se esperaría para esta aplicación?What is the maximum downtime you would expect for this application? Si se produce un error en cualquiera de los servicios, se produce un error en toda la aplicación.If either service fails, the whole application fails. La probabilidad de cada error de servicio es independiente, por lo que el SLA compuesto para esta aplicación es del 99,95% × del 99,99% = 99,94%.The probability of each service failing is independent, so the composite SLA for this application is 99.95% × 99.99% = 99.94%. Esto es menor que el SLA individuales, lo que no sorprende dado que una aplicación que se basa en varios servicios tiene más puntos de error posibles.That's lower than the individual SLAs, which isn't surprising because an application that relies on multiple services has more potential failure points.

Puede mejorar el SLA compuesto mediante la creación de rutas de reserva independientes.You can improve the composite SLA by creating independent fallback paths. Por ejemplo, si la base de datos SQL no está disponible, coloque las transacciones en una cola para su posterior procesamiento.For example, if SQL Database is unavailable, put transactions into a queue to be processed later.

Acuerdo de Nivel de Servicio compuesto

Con este diseño, la aplicación sigue estando disponible, aunque no pueda conectarse a la base de datos.With this design, the application is still available even if it can't connect to the database. Sin embargo, se produce un error si la base de datos y la cola fallan al mismo tiempo.However, it fails if the database and the queue both fail at the same time. El porcentaje de tiempo para un error simultáneo previsto es 0,0001 × 0,001, por lo que es el SLA compuesto para esta ruta de acceso combinada:The expected percentage of time for a simultaneous failure is 0.0001 × 0.001, so the composite SLA for this combined path is:

  • Base de datos o cola = 1,0 − (0,0001 × 0,001) = 99,99999%Database or queue = 1.0 − (0.0001 × 0.001) = 99.99999%

El Acuerdo de Nivel de Servicio compuesto total es:The total composite SLA is:

  • Aplicación Web y (base de datos o cola) = 99,95% × 99,99999% = ~durante el 99,95%Web app and (database or queue) = 99.95% × 99.99999% = ~99.95%

Hay inconvenientes de este enfoque.There are tradeoffs to this approach. La lógica de aplicación es más compleja, paga por la cola y deberá tener en cuenta los problemas de coherencia de datos.The application logic is more complex, you are paying for the queue, and you need to consider data consistency issues.

SLA para las implementaciones en varias regionesSLAs for multiregion deployments

SLA para las implementaciones en varias regiones implican una técnica de alta disponibilidad para implementar la aplicación en más de una región y usar Azure Traffic Manager para conmutar por error si se produce un error en la aplicación en una región.SLAs for multiregion deployments involve a high-availability technique to deploy the application in more than one region and use Azure Traffic Manager to fail over if the application fails in one region.

El SLA compuesto para una implementación en varias regiones se calcula como sigue:The composite SLA for a multiregion deployment is calculated as follows:

  • N es el SLA compuesto para la aplicación implementada en una región.N is the composite SLA for the application deployed in one region.
  • R es el número de regiones donde se implementa la aplicación.R is the number of regions where the application is deployed.

Es la probabilidad de que la aplicación produce un error en todas las regiones al mismo tiempo ((1 − N) ^ R).The expected chance that the application fails in all regions at the same time is ((1 − N) ^ R). Por ejemplo, si el SLA de región es del 99,95%:For example, if the single-region SLA is 99.95%:

  • El SLA combinado de dos regiones = (1 − (1 − 0.9995) ^ 2) = % 99.999975The combined SLA for two regions = (1 − (1 − 0.9995) ^ 2) = 99.999975%
  • El SLA combinado de cuatro regiones = (1 − (1 − 0.9995) ^ 4) = % 99.999999The combined SLA for four regions = (1 − (1 − 0.9995) ^ 4) = 99.999999%

El SLA de Traffic Manager también es un factor.The SLA for Traffic Manager is also a factor. Conmutación por error no es instantáneo en configuraciones activas / pasivas, que pueden provocar tiempos de inactividad durante una conmutación por error.Failing over is not instantaneous in active-passive configurations, which can result in downtime during a failover. Consulte conmutación por error y supervisión de punto de conexión de Traffic Manager.See Traffic Manager endpoint monitoring and failover.

Pasos siguientesNext steps