Isenção de responsabilidade: O texto a seguir tem como objetivo delinear nossa direção geral do produto. Destina-se apenas a fins informativos e não pode ser incorporado a nenhum contrato. Não é um compromisso entregar qualquer material, código ou funcionalidade, e não deve ser confiável para tomar decisões de compra. O desenvolvimento, a liberação, a data de disponibilidade e a precificação de quaisquer funcionalidades ou recursos descritos para produtos da Oracle estão sujeitos a mudanças e são de critério exclusivo da Oracle Corporation.
Essa FAQ responde às perguntas mais comuns sobre como a Oracle entrega resiliência e disponibilidade contínua dos nossos serviços principais de infraestrutura e plataforma de hospedagem. Os clientes da Oracle Cloud pode se interessar nessas respostas por diversas razões:
Nós não fazemos tais distinções. Em vez disso, nós classificamos os nossos serviços de acordo com o nível de dependência, escopo de disponibilidade e plano de dados vs. plano de controle. O objetivo dessas categorias é fornecer pontos positivos e negativos entre a disponibilidade, a durabilidade, o desempenho e a conveniência.
Níveis de dependência
Esses níveis podem ser classificados como camadas, ou faixas, em um diagrama de blocos. Cada camada pode depender de uma única camada abaixo dela.
De baixo para cima:
Escopo de disponibilidade
Para atender aos requisitos de disponibilidade e durabilidade de um serviço, um dos escopos de disponibilidade a seguir é escolhido para cada serviço:
Plano de controle vs. Plano de dados
O plano de dados de um serviço é uma coletânea de interfaces e componentes de processamento de dados que implementam a funcionalidade do serviço destinada a ser usada pelas aplicações. Por exemplo, o plano de dados VCN (rede virtual na nuvem) inclui o sistema de processamento de pacote de rede, roteadores virtualizados e gateways, enquanto o plano de dados Block Volumes inclui a implementação do protocolo iSCSI e o sistema de armazenamento replicado tolerante a falhas para dados em volume.
O plano de controle de um serviço é um conjunto de APIs e componentes responsáveis pelo seguinte:
Para todos os tipos de serviço, usamos o mesmo conjunto de princípios de engenharia para obter resiliência e disponibilidade, porque os desafios fundamentais da engenharia de criar sistemas distribuídos tolerantes a falhas e escaláveis são os mesmos para todos os tipos de serviço.
Para alcançar resiliência e disponibilidade ininterrupta é necessário entender e depois lidar com todas as causas da indisponibilidade, desempenho reduzido e falhas sem correções em sistemas de larga escala na nuvem. Por existirem diversos motivos para essas causas,nós as agrupamos em categorias, de acordo com a natureza fundamental de cada um
Normalmente, a análise da disponibilidade de sistemas empresariais de TI focam na falha de hardware. No entanto, para sistemas na nuvem, falha de hardware é um problema de menor potencial ofensivo. É relativamente fácil reduzir, e até mesmo evitar, diversos aspectos das falhas de hardware. Por exemplo, os racks podem ter dupla alimentação de energia e unidades de distribuição de energia, além de ser possível fazer hot swapping em diversos componentes. É possível haver falha e perda de hardware em larga escala, por exemplo, devido a desastres naturais. No entanto, nossa experiência, além dos relatórios de outros fornecedores de nuvem, mostra que a falha ou perda de todo um data center ocorre muito raramente, em relação a outras causas de indisponibilidade. Falhas de hardware em larga escala ainda devem ser tratadas, por exemplo, com recuperação de desastre, entre outros mecanismos. Porém, essas falhas estão longe de serem um problema relacionado principalmente à disponibilidade.
As principais causas de indisponibilidade em sistemas de larga escala na nuvem são as seguintes:
Esses desafios são universais - eles fazem parte das "leis da física" de sistemas distribuídos em escala de nuvem.
Para cada uma das categorias precedentes, usamos estratégias de engenharia comprovadas para enfrentar o problema. Os mais importantes são:
Princípios de design da arquitetura e do sistema
Existem muitos desses princípios, mas vamos nos concentrar nos mais relevantes para a resiliência e a disponibilidade.
Processamento orientado à recuperação
Para tratar os bugs no software e os erros causados pelos operadores que possuam efeitos mais localizados, seguimos os princípios de processamento orientado à recuperação1. Em um nível mais alto, isso significa que, em vez de tentar garantir que nunca tenhamos um problema (o que é impossível de testar), focamos em tratar os problemas de modo discreto, de forma que possam ser testados. Em particular, focamos na redução do tempo médio de recuperação (MTTR), que é uma combinação de tempo médio de detecção, tempo médio de diagnóstico e tempo médio de mitigação.
O nosso objetivo é recuperar tão rápido que os usuários humanos não sejam impactados pelo problema. Os seguintes pontos que nos ajudam a alcançar esse objetivo:
Reduzir os efeitos dos problemas
Para lidar com bugs e erros de maior amplitude, nós desenvolvemos mecanismos para reduzir a propagação de quaisquer problemas. Ou seja, nosso foco é minimizar o número de clientes, sistemas ou recursos afetados pelos problemas, incluindo as questões particularmente desafiadoras de "noisy neighbors", sobrecarga oferecida, capacidade degradada e thrash distribuído. Para isso, usamos vários limites de isolamento e práticas de gestão de mudança (veja as seções a seguir).
Conceitos arquitetônicos provenientes dos princípios de design
Muitos desses conceitos existem, mas vamos focar em conceitos para limitar o raio de explosão.
Conceitos de posicionamento cobertos por nossa API pública: Regiões, domínios de disponibilidade e domínios de falha
Como os domínios de falha são relativamente novos, vamos apresentá-los em mais detalhes.
Os domínios de falha são usados para limitar o raio de explosão dos problemas que acontecem quando o sistema está sendo alterado ativamente- por exemplo, implementação de correções, reinícios do hipervisor e manutenção física.
A garantia é de que, em um dado domínio de disponibilidade, os recursos de um domínio com falha estão sendo carregados em qualquer ponto no tempo. Se algo der errado com o processo de mudança, alguns ou todos os recursos desse domínio de falha talvez estejam indisponíveis por algum tempo, mas os outros domínios de falha do domínio de disponibilidade não são afetados. Cada domínio de disponibilidade contém, ao menos, três domínios de falha, para permitir que sistemas de replicação por quórum, por exemplo, o Oracle Data Guard, sejam hospedados dentro de um único domínio de disponibilidade de alta disponibilidade.
Como resultado, para uma categoria dominante de problemas de disponibilidade - bugs de software, erros de configuração, operadores e problemas de desempenho que ocorrem durante um procedimento de alteração - cada domínio de falha atua como um data center lógico separado dentro de um domínio de disponibilidade.
Os domínios de falha também protegem contra falha de hardware localizado As propriedades dos domínios de falha garantem que os recursos alocados em diferentes domínios de falha não compartilhem quaisquer pontos de falha do hardware dentro do domínio de disponibilidade, na maior extensão possível. Por exemplo, recursos em diferentes domínios de falhas não compartilham o mesmo setor do switch de rede, já que o design padrão desses switches não comporta a redundância.
No entanto, a capacidade de os domínios de falha protegerem contra problemas no hardware ou no ambiente físico termina nesse nível local. Em relação aos domínios e regiões de disponibilidade, os domínios de falha, em larga escala, não entregam nenhuma isolação física da infraestrutura. Na rara eventualidade de um desastre natural ou falha de infraestrutura no nível do domínio de disponibilidade, os recursos de vários domínios de falha seriam afetados ao mesmo tempo.
Os nossos serviços internos utilizam domínios de falha da mesma forma que os clientes deveriam usá-los. Por exemplo, os serviços Block Volumes, Object Storage e File Storage armazenam réplicas dos dados em três domínios de falha diferentes. Todos os componentes de todos os planos de controle e planos de dados são hospedados em todos os três domínios de falha, ou em uma região com vários domínios de disponibilidade, em vários domínios de disponibilidade.
Células de serviço
As células de serviço são usadas para limitar o raio de alcance dos problemas quando um sistema não está sendo modificado de forma ativa. Tais problemas podem surgir porque a carga de trabalho de um sistema em nuvem multitenant pode mudar de maneiras extremas a qualquer momento, e porque falhas parciais complexas podem ocorrer em qualquer lugar e distribuído a qualquer momento. Esses cenários podem dar início a bugs escondidos ou problemas emergentes no desempenho.
Além disso, as células de serviço limitam o raio de alcance em alguns cenários raros, porém desafiadores, quando o sistema está sendo modificado de forma ativa. Um exemplo clássico é quando a implementação em um domínio de falha parece bem-sucedida - sem erros ou mudança no desempenho - mas assim que o segundo ou último domínio de falha é atualizado, novas interações dentro do sistema (na escala total da nuvem com carga de trabalho de produção) causam um problema de desempenho.
Observe que o uso das células de serviço é um padrão arquitetônico e não um conceito notadamente mencionado na Oracle Cloud API ou SDK. Qualquer sistema multitenant pode usar esse padrão arquitetônico; não é necessário suporte especial pela plataforma na nuvem.
As células de serviço trabalham da seguinte forma:
O resultado é que cada célula de serviço é somente outro tipo de "data center lógico", isto é, um agrupamento lógico de isolamento de desempenho e de falhas, dentro de um domínio único ou região de disponibilidade.
Em suma, as células de serviço e os domínios de falha se complementam da seguinte forma:
Nós combinamos as propriedades dos domínios de falha e das células de serviço em uma estratégia unificada sempre que alguma implementação ou correção é realizada.
Procedimentos de engenharia de serviços
Como a excelência nos testes e na operação é fundamental para a confiabilidade dos sistemas em nuvem, temos um grande número de procedimentos de engenharia. Veja a seguir alguns dos mais importantes que aproveitam os conceitos mencionados na seção anterior:
Sim. Em cada região, todos os domínios de disponibilidade oferecem o mesmo conjunto de serviços.
Em regiões com domínio de disponibilidade único, os clientes podem usar domínios de falha (grupos lógicos com modos de falha não correlacionados entre grupos) para obter o máximo das propriedades de "data centers lógicos" separados. Os clientes também podem lançar mão de múltiplas regiões para recuperação de desastre (RD).
Dentro de regiões com múltiplos domínios de disponibilidade, os clientes podem utilizar os domínios de falha da mesma forma. Os clientes também podem usar uma combinação de serviços locais no domínio de disponibilidade, recursos de failover entre domínios de disponibilidade (como DBaaS com Data Guard) e serviços regionais (Object Storage, Streaming) para obter HA completa em "data centers lógicos" (domínios de disponibilidade) de nível mais alto. Finalmente, os clientes também podem usar as múltiplas regiões para RD.
Em todos os casos, os clientes podem usar o conceito de células de serviços para isolar até os casos mais graves, como despejo distribuído.
Esse resultado só é possível por meio dos domínios de falhas, células de serviço e dos nossos procedimentos operacionais para aumentar a implementação e a validação. Vide a discussão do assunto anteriormente neste documento.
Sim. Todas as categorias de serviços são implementadas em vários data centers lógicos - agrupamentos lógicos separados de isolamento de falha e de desempenho - para resiliência e disponibilidade contínuas.
Em regiões de domínio de disponibilidade único, oferecemos domínios de falha como o mecanismo para " vários data centers lógicos", conforme discutido em outra parte deste documento.
Em regiões de vários domínios de disponibilidade, oferecemos serviços e recursos que proporcionam um nível ainda mais alto de durabilidade física de dados replicados síncronos (a um desempenho modesto, custo por causa da distância entre os domínios de disponibilidade da região e da velocidade da luz).
Não oferecemos alta disponibilidade automática ou mecanismos de fail-over entre regiões, pois isso criaria um relacionamento de acoplamento forte entre regiões, e incorreria no risco de que várias regiões possam enfrentar problemas ao mesmo tempo. Em vez disso, capacitamos várias formas de replicação assíncrona entre regiões, e oferecemos um aumento dos recursos da lista, como cópia e backup assíncronos, para permitir a Recuperação de Desastres nas regiões.
Essa é uma pergunta complexa. Para deixar claro, vamos responder de formas diferentes.
Vamos responder em duas partes.
Utilizamos princípios arquitetônicos que reduzem drasticamente falhas correlacionadas entre os serviços dependentes. Em alguns casos, essa técnica reduz a probabilidade de falha correlacionada até um ponto em que ela possa ser ignorada da perspectiva do cumprimento de um contrato de nível de serviço (SLA).
Em especial, utilizamos células de serviços na forma descrita anteriormente neste documento. As células ajudam com esse problema porque, se o serviço interno A for afetado por um problema em uma de suas dependências, o serviço B, o problema com o serviço B muito provavelmente se limitará a uma única célula. É provável que outros serviços de níveis maiores, incluindo outras aplicações próprias dos clientes, que usem o serviço B acabem utilizando outras células que não foram afetadas. Este é um argumento probabilístico que varia de acordo com o número de células, o que é um parâmetro interno oculto que não se altera (aumenta). Portanto, não é fornecida nenhuma quantificação ou garantia, além dos SLAs de serviço independente dos serviços A e B. Porém, na prática, isso pode tirar a relação das falhas entre os serviços.
Muitos dos nossos serviços internos compartilhados - por exemplo, os serviços de Workflow e Metadados para planos de controle, e o serviço de Streaming/Mensagens - usam células de serviço para descorrelacionar interrupções nos serviços ascendentes que os utilizam.
As diretrizes abaixo são de alto nível porque a implementação de baixo nível e os detalhes dos serviços podem, e consequentemente, mudarão. Mas para as principais dimensões de computação, armazenamento, rede e autenticação/autorização, indicamos as seguintes dependências.
Para planos de controle, as dependências mais comuns são as seguintes:
Alguns planos de controle possuem dependências específicas para cada serviço. Por exemplo, o plano de controle Compute, quando está executando uma instância bare metal ou MV, depende de:
Para planos de dados de serviços básicos, o princípio geral é que cada plano de dados é projetado intencionalmente para ter dependências mínimas, a fim de obter alta disponibilidade e diagnóstico/recuperação mais rápidos. Os resultados desse princípio são os seguintes:
Para planos de dados IaaS, o princípio geral é depender apenas dos planos de dados básico ou inferior (para evitar dependências cíclicas).
Sim, os serviços da Oracle Cloud Infrastructure são arquitetados para serem independentes da região, de modo que os serviços em uma região da Oracle Cloud Infrastructure possam continuar operando mesmo quando a região é isolada de outras regiões da Oracle Cloud Infrastructure e/ou plano de controle global. A funcionalidade do plano de dados e do plano de controle, incluindo endpoints de API de serviço, continua disponível mesmo que a região esteja isolada.
Muitos serviços da Oracle Cloud Infrastructure oferecem funcionalidade entre regiões, como a função de cópia de objetos entre regiões oferecida pelo Oracle Cloud Infrastructure Object Storage. A funcionalidade entre regiões na Oracle Cloud Infrastructure é sempre projetada como uma camada no topo do serviço principal para que o isolamento entre regiões não afete o serviço principal mesmo que isso afete a funcionalidade entre regiões. Como exemplo, a funcionalidade de cópia entre regiões do armazenamento de objetos da Oracle Cloud Infrastructure é projetada como camada no topo do serviço de armazenamento de objetos e, consequentemente, o isolamento de uma região pode afetar a função de cópia entre regiões relevante, mas não afetará o serviço de armazenamento de objetos principal na região.
Sim, os serviços da Oracle Cloud Infrastructure são projetados de modo que a funcionalidade do plano de dados em cada data center lógico continue a funcionar mesmo quando isolado do plano de controle regional correspondente. Como exemplo, as instâncias de processamento da Oracle Cloud Infrastructure em um data center lógico continuarão a funcionar com volumes em blocos anexados e a funcionalidade de rede virtual associada, mesmo quando o data center for isolado das funções do plano de controle de computação, armazenamento em blocos, VCN e/ou gerenciamento de identidade e acesso.
Sim. A Oracle Cloud Infrastructure está conectada à internet através de múltiplos provedores redundantes em todas regiões comerciais. Essas conexões usam BGP (Border Gateway Protocol).