Princípios de Arquitetura - Disponibilidade

Boa noite a todos !

Antes de escrever, gostaria de fazer uma correção, quando comecei a falar sobre estes princípios de arquitetura, eu tenho procurado é trazer à luz da discussão, quais são os atributos e princípios de pensamentos que norteam a construção de uma arquitetura. Disponibilidade e escalabilidade são atributos que toda a arquitetura deve pensar quando está sendo desenhada. Então a pergunta que me faço é quais princípios/idéias que precisamos refletir sobre arquitetura ? Está tem sido a pergunta motivadora destas reflexões. A correção sendo feita, vamos direta ao assunto.

O princípio Disponibilidade está presente todas as arquiteturas, e está estritamente vinculado ao princípio Escalabilidade. Podemos entender a Disponibilidade, como a capacidade que uma solução tem de se manter funcional, apesar da ocorrência de falhas. Em português mais simplificado, “haja que houver, estará funcionando”. Os médicos chamam esta característica de resiliência.

Devido a importância que a TI obteve nos últimos anos, a garantia de funcionamento do sistemas tornou-se  cada vez mais relevante. Imagine hoje, uma grande corporação sem e-mail? Ou a sua solução de CRM ficar fora do ar em pleno horário útil de trabalho? São estes tipo de perguntas, que chamam cada vez mais atenção para a disponibilidade.

Quando falamos de disponibilidade, devemos considerar quais os aspectos que a aplicação foi desenhada. Vejamos um exemplo de uma aplicação de comércio eletrônico:

  • Os Servidores de Web estão rodando em balanceamento de carga?
  • Existe afinidade entre o visitante do site e os servidores?
  • Se está usando sessão ASP.Net, como ela está compartilhada entre os servidores?
  • E o servidor de banco de dados, está trabalhando em cluster?
  • Qual é o tipo de cluster (ativo/ativo, ativo/passivo) do banco de dados?

E como qualquer aplicação, também precisamos nos preocupar com outros itens:

  • Atualização: Como serão realizadas as atualizações de sistema operacional, banco de dados ?
  • Suprimento de energia: Qual é a capacidade de autonomia do datacenter?
  • Segurança: Qual é o desenho de estrutura dos firewalls para proteger os servidores (web e banco de dados)?
  • Aplicação: A aplicação permite alterações (bugfixes, adição de módulos) on-the-fly? Ou preciso parar os serviços?

A partir deste ponto, pode-se notar porque certas tecnologias implementam a capacidade de de alterar os seus componentes on-the-fly, um exemplo, são algumas DLLs do ASP.Net. Estás técnicas embutidas dentro das tecnologias permite a flexibilidade de disponibilidade ao arquiteto, desenvolver. Quem lembra do COM+ que precisava parar o serviço (shutdowm no processo W3wp.exe ou DLLHost.exe) para trocar a DLL?

Por final é importante sempre ter em mente que disponibilidade está vinculada diretamente a capacidade de resposta da aplicação. Normalmente, a disponibilidade é medida como a taxa percentual de que a aplicação esteja on-line, em diversos projetos que participei já vi os números como 95%, 97% e até 99,9% do tempo disponível.

Então, na sua próxima aplicação, primeiramente procure identificar qual é a taxa de disponibilidade esperada pela a sua aplicação, e posteriormente procure identificar quais técnicas, tecnologias e modelos que podem dar a flexbilidade necessária para que a sua aplicação mantenha o percentual esperado.

Obrigado e T+
Condé

versão 3.0