Atualmente na Sr. Nimbus estamos trabalhando junto a um cliente na implementação do SQL Server nA Amazon Web Services (AWS), usando a infraestrutura como serviço (IaaS). Durante o serviço eu mencionei no twitter que estávamos testando o database mirroring e seu impacto no AWS, foi aí que recebi uma pergunta muito interessante: A proposta da computação na nuvem não é ter isso (redundância)? Ou seja, você nunca teria problema com redundância?
Tudo vai depender do tipo de serviço que você está consumindo, mas computação na nuvem não é sinônimo de alta disponibilidade (High Availability ou HA) ou recuperação de desastre (Disaster Recovery ou DR)!
Então não existe redundância na nuvem? Pelo contrário, lá está cheio de redundâncias e temos que saber aproveitar, mas não é fechar o olho e fazer o deploy da sua solução. Portanto quando estamos trabalhando na arquitetura da nossa solução na nuvem, temos que pensar em termos de HA e DR sim!
Um exemplo de redundância que podemos nos beneficiar é o Elastic Block Storage (EBS) na Amazon, que é um armazenamento binário e pode ser apresentado para uma máquina como um disco, onde são mantidas 3 cópias do dado. Então optamos por não configurar RAID por software no Windows (melhor assim, não é?!) e deixarmos a redundância trabalhar.
Porém outras dúvidas aparecem... Mas como você dá manutenção sem causar downtime? E se um datacenter inteiro (onde está a redundância mais barata) ficar fora do ar? Ou se um datacenter sumir do mapa depois de um terremoto? Acredita que isso nunca vai acontecer?
Melhor ver as notícias que uma rápida pesquisa trouxe...
Ainda está confiante de que nunca vai ter problema? Quer dizer que cloud computing é ruim? Não, só estou dizendo que você não pode ser inocente, da mesma foram que vejo muitas reclamações dos hostings no Brasil a solução não é apenas ir lá para o Azure ou AWS. Mas acredito que seja uma excelente alternativa...
Então para isso nós desenhamos uma solução arquitetural que pode ser generalizada para uso de todos:
(Dica: Azure no Visio por Buck Woody - http://sqlblog.com/blogs/buck_woody/archive/2012/07/25/windows-azure-visio-shapes.aspx)
Acima um exemplo de solução para o SQL Server 2008 R2 Standard, então nosso mirroring é síncrono e dentro de um datacenter, enquanto nós mantemos os dados replicados em outro datacenter através de log shipping.
Dessa forma temos uma replicação geográfica e na pior das hipóteses temos pouca perda de dados se o datacenter USA explodir, e para não ficar parada a máquina na Europa, é utilizada como ambiente para relatórios.
Mas e o database mirror? Ele auxilia demais o negócio, vamos supor que precisamos fazer alguma manutenção ou aplicar um service pack, conseguimos fazer o failover enquanto configuramos as máquinas, sem downtime para a aplicação. Outra coisa que testamos foi mudar o tipo de instância, suponha que o Natal está chegando e suas vendas aumentam demais, com o mirror nós fazemos o failover, mudamos o tipo de instância (subindo uma com mais poder computacional) e quando a máquina volta o mirror é sincronizado. Downtime é zero e durante o ano o cliente não precisou pagar por uma máquina super dimensionada enquanto espera pelo Natal.
Quando pensamos em nuvem sempre consideramos redundância de hardware, mas esquecemos de que o software pode nos dar muita dor de cabeça, imagina a dor de cabeça que a symantech causou recentemente (http://idgnow.uol.com.br/internet/2012/07/16/symantec-confirma-ter-causado-tela-azul-da-morte-em-pcs-com-windows-xp/). Vai que você instalou um software de monitoramento e por um problema pontual no agente a tela azul da morte apareceu no servidor... No nosso caso o nó secundário do espelhamento iria assumir e somente perderíamos as transações in-flight.
Conclusão: ainda não vi uma tecnologia mágica que vai resolver todos os nossos potenciais problemas, acredito que com a computação na nuvem e sua vasta gama de possibilidades está deixando mais simples compor uma solução, mas você ainda tem muito trabalho pela frente, ok?
PS: Durante este artigo eu sempre escrevi mais sobre os recursos de cloud computing da Amazon que é o utilizado pelo cliente, mas ressalto que normalmente conseguirmos traçar um paralelo com o Azure, da Microsoft. Blob Storage, Virtual Machines, etc.
Abraços
sr. Nimbus Serviços em Tecnologia - www.srnimbus.com.br