Entender a engenharia para resiliência
A Microsoft define a resiliência como "a capacidade de um processo ou serviço empresarial para satisfazer as expectativas dos clientes face a falhas e desafios para operações normais". À escala dos Serviços Online da Microsoft, a resiliência é fundamental para manter a disponibilidade dos nossos serviços online. Criamos nossos serviços para serem resilientes porque sabemos que:
- O hardware falhará. Suponha um tempo médio antes da falha (MTFB) de 100.000 horas para um disco rígido. Para um único disco rígido, isso parece uma falha gerenciável a cada 11,5 anos. Mas se você tiver 10.000.000 discos rígidos, isso ocorrerá em uma falha aproximadamente a cada 30 segundos. A resiliência contra a falha de componentes de hardware comuns é um recurso fundamental de como projetamos e criamos nosso serviços online.
- Os humanos cometerão erros. Suponha que um humano em uma implementação de TI típica execute 100 operações por dia em um sistema de 100 servidores. Com 99% de precisão, isso ainda é um erro por dia. Dimensionado para 250.000 servidores, são 2.500 erros por dia.
- O software terá bugs. As atualizações de software devem ser implantadas continuamente para manter os serviços atualizados. Os serviços resilientes devem se proteger contra bugs novos e não detectados anteriormente no software.
Respondemos a esses desafios usando a nuvem de hiperescala da Microsoft e empregando a automação de serviços para tornar nossos serviços resilientes contra vários modos de falha.
Design de serviço ativo/ativo
Sempre que possível, garantimos que nossos serviços sejam projetados e implantados com resiliência Ativa/Ativa. Isso significa que, se um componente crítico do serviço falhar, um componente idêntico estará disponível para assumir o controle sem perda de disponibilidade. As implantações ativas/ativas substituem modelos ativos/passivos mais antigos, nos quais os componentes passivos demoraram para assumir a carga de trabalho se os componentes ativos falham, interrompendo temporariamente a disponibilidade do serviço e a integridade dos dados. O design de serviço ativo/ativo representa uma melhoria significativa em relação a outros modelos de implantação e fornece resiliência contra muitos tipos de falhas de serviço.
Isolamento de falhas
O isolamento de falha aumenta a resiliência do serviço, impedindo que falhas em um componente causem falha em outros componentes. O isolamento de falha complementa o design do serviço Ativo/Ativo, reduzindo o escopo necessário para a recuperação automatizada de falhas de componente. A Microsoft trabalha continuamente para reduzir o tamanho das zonas de falha nos nossos serviços cloud para impedir que as falhas se espalhem e afetem outros componentes do sistema.
Algumas das estratégias que usamos para o isolamento de falhas são:
- Controle de falhas refinado dentro e entre componentes de serviço: Por exemplo, grupos de disponibilidade de banco de dados do Exchange Online limitam o impacto de falhas dentro do serviço a grupos de disponibilidade específicos.
- Gerenciamento de vários protocolos para disponibilidade de serviço: Por exemplo, um incidente que afeta o acesso a arquivos no Teams pode ser atenuado pela acessibilidade de arquivos por meio do SharePoint Online.
- Regionalização e design granular do sistema: design de nosso serviço separa a infraestrutura de serviço lógico e físico em unidades cada vez menores. Isso nos permite responder adequadamente a incidentes com base em seu escopo usando a flexibilidade do gerenciamento de serviços de pequena e grande escala.
- Balanceamento de carga e limitação: nossos serviços embaralham rotineiramente o tráfego e os dados entre componentes do sistema como parte da operação de serviço normal. O tráfego não essencial do lado do serviço é limitado em favor do tráfego crítico, como a entrega de emails. Isso permite que nossos sistemas priorizem automaticamente os serviços críticos em caso de falha de componente ou incidente de serviço.
Raio de explosão reduzido
Intimamente relacionado com o isolamento de falhas é o conceito do "raio de explosão" de um incidente. Quando ocorre um incidente, o raio da explosão refere-se ao impacto geral do incidente nos nossos serviços online. A Microsoft trabalha constantemente para reduzir o raio da explosão de possíveis incidentes. Quando uma resposta a incidentes pós-mortem descobre um tipo de incidente com um raio de explosão inaceitável, respondemos investindo em atualizações de serviço projetadas para reduzir o impacto de incidentes semelhantes no futuro.
Melhoria contínua
Quando ocorrem incidentes, nosso processo de resposta a incidentes garante que cada incidente seja gerenciado para resolução. Usamos métricas padronizadas para acompanhar o impacto de incidentes na disponibilidade e no desempenho do serviço. Incidentes com impacto significativo para os clientes estão sujeitos a uma revisão pós-incidente. As principais descobertas e mitigações resultantes da Revisão Pós-Incidente são postadas no Painel de Integridade do Serviço para que os clientes afetados exibam.
As revisões pós-incidentes ajudam a identificar melhorias de resiliência que podem impedir ou limitar o escopo de problemas semelhantes no futuro. As lições aprendidas com incidentes são compartilhadas entre as equipes de serviço, para que cada equipe possa implementar melhorias sem experimentar diretamente um incidente semelhante.