Exención de responsabilidad: El propósito del texto siguiente es esbozar la línea general de nuestros productos. Solo se ha redactado con fines informativos y no se debe incorporar a ningún contrato. No representa ningún compromiso de entrega de material, código o funcionalidad, y no se debe utilizar como la base para tomar decisiones de compra. El desarrollo, lanzamiento, precio y plazo de puesta a disposición de cualesquiera funciones o funcionalidades descritas para productos de Oracle podría cambiar y quedará a la sola discreción de Oracle Corporation.
A continuación, se ofrecen respuestas a preguntas frecuentes sobre cómo Oracle logra la resiliencia y la disponibilidad continua de los servicios de infraestructura base y de nuestra plataforma de alojamiento. Los clientes de Oracle Cloud pueden estar interesados en estas respuestas por varios motivos:
No se hacen distinciones. Sin embargo, sí se categorizan nuestros servicios en función del nivel de dependencia, el ámbito de disponibilidad y el plano de datos frente al plano de control. Estas categorías están diseñadas para ofrecer diversos equilibrios útiles entre disponibilidad, durabilidad, rendimiento y comodidad.
Niveles de dependencia
Estos niveles pueden equipararse a las capas o niveles de un diagrama de bloques arquitectural. Es posible que una capa dependa únicamente de otras inferiores.
De inferior a superior:
Alcance de disponibilidad
Para cumplir los objetivos de disponibilidad y durabilidad de un servicio, en cada uno de ellos se adopta uno de los siguientes ámbitos de disponibilidad:
Plano de control frente a plano de datos
El plano de datos de un servicio es la recopilación de interfaces y componentes de procesamiento de datos que implantan la funcionalidad del servicio que las aplicaciones deben utilizar. Por ejemplo, el plano de datos de la red virtual en la nube (VCN) incluye el sistema de procesamiento de paquetes de red, enrutadores virtualizados y puertas de enlace, mientras que el plano de datos de los volúmenes en bloque incluye la implantación del protocolo iSCSI y el sistema de almacenamiento replicado tolerante a errores para datos de volumen.
El plano de control de un servicio es el conjunto de las API y los componentes que son responsables de las siguientes tareas:
Para todos los tipos de servicios, utilizamos el mismo conjunto de principios de ingeniería para lograr resiliencia y disponibilidad, porque los desafíos de ingeniería fundamentales para la creación de sistemas distribuidos, ampliables y tolerantes a errores son los mismos.
Para lograr resiliencia y disponibilidad continua, es necesario comprender y, a continuación, resolver todas las causas de no disponibilidad (rendimiento degradado y fallos no controlados) de los sistemas a escala en la nube Hay un gran número de tales causas, por lo que las agrupamos en categorías según su naturaleza básica
Normalmente, los análisis de disponibilidad de los sistemas de TI empresarial se centraban en la categoría de fallos de hardware. Sin embargo, para los sistemas en la nube, el fallo de hardware es un problema relativamente pequeño y bien comprendido. En la actualidad, es relativamente sencillo evitar o mitigar la mayoría de los tipos de fallos de hardware. Por ejemplo, los racks pueden tener fuentes de alimentación dobles y unidades de distribución de energía asociadas y muchos componentes se pueden sustituir en caliente. Por supuesto, los fallos de hardware a gran escala y las pérdidas que conllevan se pueden producir, por ejemplo, debido a desastres naturales. Sin embargo, nuestra experiencia y los informes post-mortem públicos de otros proveedores de servicios en la nube demuestran que el fallo o la pérdida total de un centro de datos no se produce casi nunca en comparación con el resto de las causas de no disponibilidad. Si bien es cierto que todavía se deben subsanar fallos de hardware a gran escala (por ejemplo, con mecanismos de recuperación ante desastres, entre otros), no se trata ni de lejos del problema más frecuente
A nivel de la nube, las causas principales de no disponibilidad son las siguientes:
Estos desafíos son universales. Se podría decir que forman parte de las "leyes de la física" de los sistemas distribuidos al nivel de la nube.
Para cada una de las categorías anteriores, se utilizan estrategias de ingeniería de eficacia probada para abordar el problema. Las más importantes son:
Principios de Diseño de Sistemas y Arquitectura
Existe un gran número de estos principios. Sin embargo, nos centraremos en aquellos relativos a la resiliencia y la disponibilidad.
Computación orientada a la recuperación
Para manejar los bugs de software y los errores de los operadores que tienen efectos relativamente localizados, se siguen los principios de la informática orientada a la recuperación1. A grandes rasgos, esto significa que, en lugar de intentar garantizar que nunca se produzca un problema (algo imposible de probar), nos centramos en la resolución discreta de los problemas, de una forma que se puede probar. En particular, nos centramos en minimizar el tiempo medio de reparación (MTTR), que es una combinación del tiempo medio para detectar, diagnosticar y mitigar.
Nuestro objetivo es que la reparación sea tan rápida que los usuarios humanos no se vean afectados por el problema. Para alcanzar este objetivo, se deben cumplir los siguientes criterios:
Minimización de los efectos de las incidencias
Para tratar los bugs y errores que pueden entrañar efectos más amplios, se crean mecanismos para minimizar el "radio de influencia" de cualquier incidencia. Es decir, trabajamos para reducir al mínimo el número de clientes, sistemas o recursos que pueden verse afectados por cualquier problema, sobre todo por aquellos especialmente peliagudos, como los "vecinos ruidosos" en los sistemas multiinquilino, la sobrecarga ofertada, la capacidad degradada y el bloqueo distribuido. Para lograrlo, se utilizan una variedad de límites de aislamiento y prácticas de gestión de cambios (consulta las secciones posteriores).
Conceptos arquitectónicos de los principios de diseño
Aunque existen muchos de estos conceptos, nos centraremos en aquellos que sirven para limitar el radio de influencia.
Conceptos de colocación recogidos en nuestras API públicas: regiones, dominios de disponibilidad y dominios de errores
Puesto que los dominios de errores son relativamente recientes, los describiremos con mayor detalle.
Los dominios de errores sirven para limitar el radio de influencia de los problemas que ocurren cuando se realizan cambios activos en un sistema, por ejemplo, despliegues, aplicación de parches, reinicios del hipervisor y actividades de mantenimiento físico.
Es decir, se tiene la certeza de que, en un dominio de disponibilidad cualquiera y en un momento determinado, se están modificando los recursos en un dominio de errores (como máximo). Es posible que, si surgen complicaciones durante el proceso de cambio en el dominio de errores en cuestión, todos sus recursos o parte de ellos no estén disponibles temporalmente. Sin embargo, esto no afecta a los demás dominios de errores en el dominio de disponibilidad. Cada dominio de disponibilidad consta de un mínimo de tres dominios de errores, lo que hace que sea posible alojar con un alto nivel de disponibilidad los sistemas de replicación basados en quórum (como Oracle Data Guard) en un solo dominio de disponibilidad.
Por tanto, cada una de las principales categorías de problemas que afectan a la disponibilidad (bugs de software, errores de configuración o cometidos por operadores, así como problemas que afectan al rendimiento que ocurren durante procesos de cambio), es un centro de datos lógico independiente dentro de un dominio de disponibilidad.
Los dominios de errores también protegen contra ciertos fallos de hardware localizados. Las propiedades de los dominios de errores garantizan, en la mayor medida práctica, que los recursos situados en dominios de errores no comparten ningún detonante potencial de un fallo de hardware dentro del dominio de disponibilidad. Por ejemplo, los recursos en distintos dominios de errores no comparten el mismo conmutador de red para parte superior del rack, porque su diseño estándar no ofrece redundancia.
Sin embargo, la capacidad de los dominios de errores de proteger contra problemas en el hardware o el entorno físico se detiene en ese nivel local. A diferencia de los dominios de disponibilidad y las regiones, los dominios de errores no proporcionan aislamiento físico de la infraestructura a gran escala. En el caso poco probable de que se produzca un desastre natural o un fallo de toda la infraestructura del dominio de disponibilidad, este afectaría posiblemente a múltiples dominios de errores de forma simultánea.
Nuestros servicios internos utilizan dominios de errores de la misma manera que los clientes. Por ejemplo, los servicios de volúmenes en bloque, almacenamiento de objetos y almacenamiento de archivos protegen las replicas de los datos en tres dominios de errores independientes. Todos los componentes de la totalidad de planos de control y planos de datos se alojan en dichos dominios de errores (o, en uno de ellos, en varios dominios de disponibilidad).
Celdas de servicio
Las celdas de servicio sirven para limitar el radio de influencia de las incidencias que tienen lugar aunque no se realicen cambios en un sistema activamente. Estos problemas pueden deberse a que la carga de trabajo de un sistema multiinquilino en la nube puede cambiar de forma extrema en cualquier momento y a que, en un sistema distribuido de gran tamaño, pueden producirse fallos parciales complejos en cualquier momento. En estos escenarios, puede que se produzcan errores ocultos o problemas emergentes que afectan al rendimiento.
Además, las celdas de servicio también limitan el radio de influencia en aquellos escenarios en los que se realiza un cambio activo en el sistema. Un ejemplo clásico es cuando un despliegue en un dominio de errores parece haberse realizado correctamente (sin errores ni cambios en el rendimiento), pero tan pronto como se actualizan el segundo o el último dominio de errores, las nuevas interacciones en el sistema (a plena escala en la nube y con cargas de trabajo de producción) causan problemas de rendimiento.
Ten en cuenta que las celdas de servicio son patrones arquitectónicos, no conceptos que se nombran explícitamente en el SDK o la API de Oracle Cloud. Cualquier sistema multiinquilino puede seguir este patrón arquitectónico, no se requiere ninguna característica especial de la plataforma en la nube.
Las celdas de servicio funcionan de la siguiente manera:
El resultado es que cada celda de servicio es otro tipo de "centro de datos lógicos", una agrupación lógica de aislamiento de rendimiento y fallos, en un solo dominio de disponibilidad o región.
En resumen, las celdas de servicio y los dominios de errores se complementan mutuamente, tal como se aprecia a continuación:
Nuestra estrategia unifica las características de los dominios de errores y de las celdas de servicio cuando es necesario desplegar y aplicar parches.
Procedimientos de ingeniería de servicios
Contamos con un amplio espectro de procedimientos de ingeniería, porque tanto las pruebas como la excelencia operativa son fundamentales para la fiabilidad de los sistemas en la nube. A continuación, algunas de las más importantes que aprovechan los conceptos mencionados en la sección anterior:
Sí. En cada una de las regiones, los dominios de disponibilidad ofrecen los mismos conjuntos de servicios.
En las regiones de dominios de disponibilidad única, los clientes pueden recurrir a los dominios de errores (grupos lógicos con modos de error sin correlación entre grupos) para beneficiarse de la mayoría de las propiedades de los "centros de datos lógicos" independientes. Los clientes también pueden utilizar varias regiones para la recuperación ante desastres (DR).
En las regiones con varios dominios de disponibilidad, los clientes pueden utilizar los dominios de errores del mismo modo. Asimismo, los clientes pueden combinar los servicios locales de los dominios de disponibilidad, las funciones de failover entre dominios de disponibilidad (como DBaaS con Data Guard) y servicios regionales (Object Storage, Streaming) para lograr alta disponibilidad completa en todos los centros de datos lógicos de nivel superior (dominios de disponibilidad). Por último, los clientes pueden utilizar varias regiones para la recuperación ante desastres.
En todos los casos, los clientes pueden utilizar el concepto de las celdas de servicio para aislar más si cabe hasta las incidencias más graves, como la hiperpaginación distribuida.
Las interrupciones temporales se evitan de la mano de los dominios de errores, las celdas de servicio y nuestros procedimientos operativos para el despliegue y la validación incrementales, como señalamos anteriormente en este documento.
Sí. Todas las categorías de servicios se despliegan en varios centros de datos lógicos, que son agrupaciones lógicas independientes de aislamiento de errores y de rendimiento, para ofrecer resiliencia y disponibilidad continua.
Como se ha indicado en otra parte de este documento, cuando se trata de regiones de dominios de disponibilidad única, los dominios de errores se ofrecen como el mecanismo que reemplaza a "varios centros de datos lógicos".
En las regiones con dominios de disponibilidad múltiple, ofrecemos servicios y funciones que proporcionan un nivel todavía mayor de durabilidad física de los datos replicados de forma síncrona (con una relación rendimiento-costo limitada a causa de la distancia entre los dominios de disponibilidad de la región y la velocidad de la luz).
No ofrecemos alta disponibilidad automática ni mecanismos de failover entre regiones, ya que podría crearse una relación de alta dependencia entre ellas que incrementaría el riesgo de que varias presentaran problemas de forma simultánea. En su lugar, activamos varias formas de replicación asíncrona entre regiones, y ofrecemos una lista de características en expansión, como copia y copia de seguridad asíncronas, lo que permite la recuperación de fallos entre regiones.
Como se trata de una pregunta compleja, nos parece necesario reformularla para que sea más fácil de comprender:
La respuesta consta de dos partes.
Utilizamos principios arquitectónicos que permiten reducir notablemente la frecuencia de fallos relacionados entre servicios dependientes. En algunos casos, esta técnica reduce la probabilidad de fallo correlacionado hasta tal punto que se puede ignorar desde la perspectiva de cumplir un acuerdo de nivel de servicio de disponibilidad (SLA).
En concreto, utilizamos celdas de servicio, a las que se hace referencia en más detalle en este documento. Las células ayudan con este problema porque, si el servicio interno A se ve afectado por un fallo en una de sus dependencias, el servicio B, es muy probable que este se limite a una sola celda. Es probable que otros servicios de nivel superior y las aplicaciones del cliente que utilizan el servicio B utilicen otras celdas que no se vean afectadas. Argumento probabilístico que varía en función del número de celdas, un parámetro interno oculto que sufre modificaciones (aumentos), por lo que no se puede proporcionar garantía ni cuantificación. Por lo tanto, será necesario atenerse a los SLA independientes de los servicios A y B. Sin embargo, en la práctica, esto puede disminuir la correlación de los fallos entre servicios.
Muchos de nuestros servicios internos compartidos, como los servicios de flujo de trabajo y metadatos para los planos de control, así como el de transmisión y envío de mensajes, utilizan celdas de servicio para reducir la correlación de las interrupciones para los servicios ascendentes que las utilizan.
La siguiente orientación es a grandes rasgos y puede diferir (y lo hará) de la implementación real y de los detalles de cada servicio. No obstante, en el caso de las dimensiones clave de recursos informáticos, almacenamiento, redes y autenticación/autorización, destacaremos las siguientes dependencias:
En planos de control, las dependencias comunes son las siguientes:
Obviamente, algunos planos de control tienen dependencias específicas. Por ejemplo, al iniciar una instancia de VM o hardware dedicado, el plano de control de recursos informáticos depende de:
El principio general aplicado a los planos de datos de servicios esenciales es que cada plano de datos está diseñado de forma intencional para tener las mínimas dependencias, con el fin de lograr una alta disponibilidad, un tiempo de diagnóstico y un tiempo de recuperación rápidos. Los resultados de este principio son los siguientes:
Como principio general en cuanto a los planos de datos IaaS, solo se depende de los planos de datos básicos o de bajo nivel (con el fin de evitar dependencias cíclicas).
Sí, los servicios de Oracle Cloud Infrastructure están diseñados para ser independientes de las regiones, de forma que los servicios de una región de Oracle Cloud Infrastructure puedan seguir funcionando incluso cuando la región esté aislada de otras regiones de Oracle Cloud Infrastructure o plano de control global. Tanto la funcionalidad de plano de datos como la de plano de control, incluidos los puntos finales de API de servicio, siguen estando disponibles aunque la región esté aislada.
Muchos servicios de Oracle Cloud Infrastructure ofrecen funciones en varias regiones, como la función de copia de objetos entre regiones que ofrece Oracle Cloud Infrastructure Object Storage. La funcionalidad entre regiones de Oracle Cloud Infrastructure está siempre diseñada como una capa sobre el servicio principal, de forma que el aislamiento de regiones no perjudique el servicio principal, aunque afecte la funcionalidad entre regiones. Por ejemplo, la funcionalidad de copia entre regiones del almacén de objetos de Oracle Cloud Infrastructure está diseñada como una capa sobre el servicio de almacén de objetos y, por lo tanto, el aislamiento de una región puede afectar a la función de copia entre regiones relevante, pero no afectará al servicio de almacenamiento de objetos principales de la región.
Sí, los servicios de Oracle Cloud Infrastructure están diseñados para que la funcionalidad de plano de datos en cada centro de datos lógico siga funcionando, incluso aunque esté aislada del plano de control regional correspondiente. Por ejemplo, las instancias informáticas de Oracle Cloud Infrastructure en un centro de datos lógico seguirán funcionando junto con los volúmenes en bloque asociados y la funcionalidad de red virtual asociada, incluso cuando el centro de datos esté aislado de las funciones de plano de control de recursos informáticos, almacenamiento de bloques, VCN y/o gestión de identidad y acceso.
Sí. Oracle Cloud Infrastructure está conectado a Internet a través de varios proveedores redundantes en todas las regiones comerciales. Estas conexiones utilizan el protocolo BGP (Border Gateway Protocol).