Uma das características que fazem do homem um ser fantástico é a resiliência, ou a capacidade de passar por momentos de crise, superar as adversidades e recuperar-se. Esse conceito é originado na física, mas tem sido usado frequentemente na psicologia e mais recentemente em tecnologia para descrever a capacidade de sistemas complexos de se auto organizarem frente à situações difíceis.

Se imaginarmos o nosso corpo como um sistema complexo, é a resiliência que nos mantém vivo e operante, mesmo quando estamos com algum problema. Podemos até mesmo perder a função de uma parte significativa do nosso cérebro, e ainda assim, sermos capazes de sobreviver e até mesmo recuperar uma vida praticamente normal. Essa característica regenerativa e adaptativa está na base da nossa estrutura e pode ser verificada até nas nossas células que, geralmente sabem lidar muito bem com erros de duplicação ou malformação. Isso é tão comum que mesmo dentro de um indivíduo perfeitamente saudável, problemas podem acontecer, mas o organismo se auto-corrige e encontra alternativas para seguir bem.

A evolução e a computação em nuvem

Esse paralelo nos ajuda a entender o que está acontecendo com a evolução da infraestrutura em cloud computing dos mais modernos datacenters do mercado. Sem dúvida são sistemas que estão se tornando cada vez mais complexos, ao ponto de ser humanamente impossível acompanhar tudo o que ocorre nas milhares de máquinas virtuais, que rodam sobre centenas de redes, acessando milhares de volumes de disco. E se observarmos de um nível macro, tudo parece funcionar bem, pelo menos na maior parte do tempo.

Testar, testar e testar…

Quando começamos a projetar nossos ambientes em nuvem, passamos por um período de experimentação onde testamos exaustivamente diversos procedimentos, componentes e interfaces. Percebemos que tudo funciona muito bem em intervalos curtos e médios de tempo. Tão bem a ponto de ignorarmos muitos pontos de verificação, por estes nunca terem apresentado problemas. E as primeiras versões do auto.sky saíram assim, bastante otimistas com relação à resposta da Cloud, assim como um programa não questiona se um processador responderá corretamente a uma operação de 1 + 1.

Entretanto não foram necessárias muitas semanas para percebermos que tudo tem falhas, até na Cloud, de diversas formas e em qualquer momento. É claro que essa constatação veio à medida que passamos a gerenciar milhares de usuários em centenas de instâncias. O aumento significativo da nossa base de amostragem expôs essa questão e nos mostrou claramente que um bom sistema em nuvem é como qualquer sistema complexo, e como tal requer um alto grau de resiliência.

Revisamos os nossos sistemas e mudamos a estratégia para adotar um postura muito mais crítica com relação à interação com a Cloud. De forma pragmática é necessário garantir que todos os pontos críticos da solução disponham de alta disponibilidade, através de sistemas redundantes e que estes sejam permanentemente checados contra falhas.

Nuvens mais sofisticadas, como a da AWS, nos ajudaram muito neste aspecto, permitindo o uso de várias zonas de disponibilidade e mecanismos mais confiáveis de verificação. Além disso, assumimos que qualquer máquina virtual pode falhar e, portanto, temos que constantemente verificar o seu funcionamento e isolar as que estão com mal funcionamento.

Aprendemos que diversos outros procedimentos também são suscetíveis à falhas, porém com verificações adequadas, o nosso sistema pode ser imune a muitos problemas, e podemos entregar um serviço de altíssima disponibilidade e desempenho para o usuário final, mesmo que saibamos que pequenas coisas podem dar errado…

Gostou do texto? Deixe seu comentário!

Escrito por

Equipe Sky.One

Este conteúdo foi produzido pela equipe da SkyOne, composta por especialistas em nuvem e transformação digital.