Prévia do material em texto
7ºAula Aplicações de mecanismos de tolerância a falhas Olá, alunos(as), Nesta aula, discutiremos os mecanismos de tolerância a falhas e a aplicação deles. Já sabemos que todo sistema computacional está sujeito a falhas, tendo em vista o nível de complexidade das rotinas que estão envolvias no processo, a grande quantidade de tarefas a serem gerenciadas pelo sistema e o número de componentes de hardware envolvidos. Além disso, há diversos fatores externos que influenciam o ambiente. Nesta aula, vamos aprofundar nossos conhecimentos em relação ao tema. Vamos lá? Boa aula! Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: • conhecer os conceitos de tolerância, defeito, erro e falha; • saber sobre os conceitos de redundância e de diversidade; • entender como buscar evitar erros e falhas. 42Engenharia de software II 1 - Tolerância, defeito, erro e falha 2 - Redundância e diversidade 3 - Técnicas e mecanismos de tolerância a falhas Seções de estudo 1 - Tolerância, defeito, erro e falha No ano de 1967, era cunhado o termo Tolerância a Falhas, que vem sendo utilizado cada vez mais na atualidade: O termo tolerância a falhas foi cunhado por Avizienis em 1967. Desde então tem sido amplamente utilizado pela comunidade acadêmica para designar toda a área de pesquisa ocupada com o comportamento de sistemas computacionais sujeitos a ocorrência de falhas, sem ter entretanto logrado sucesso como designação popular. Na indústria o termo nunca teve boa aceitação, sendo que desenvolvedores de sistemas de controle preferem usar o termo sistemas redundantes para seus equipamentos. Na comercialização de sistemas computacionais como mainframes e servidores de rede, o termo usual é alta disponibilidade, designando a principal qualidade desses sistemas (WEBER, s.d., p. 7). Pensando na prática, os sistemas redundantes e os sistemas de alta disponibilidade apresentam técnicas comuns. Contudo, os resultados são diferentes, pois os primeiros objetivam a alta confiabilidade e os outros têm como propósito a continuidade do serviço. Nesse sentido, houve a popularização do termo segurança computacional devido à necessidade de se proteger de invasões ou de mal-intencionados. Esse processo envolve autenticação, criptografia, além de outros tipos de proteção. De modo geral, o termo segurança de funcionamento está relacionado à tolerância a falhas e vem sendo cada vez menos usado nos meios acadêmicos. Pouco a pouco, vem sendo substituído pelo termo dependabilidade. Administradores e usuários buscam sempre encontrar as soluções mais criativas na tentativa incessante de tentar recuperar dados perdidos e para enfrentar os transtornos de equipamento fora do ar, causados por múltiplas falhas que os sistemas estão sempre sujeitos. É impossível evitar que as falhas aconteçam, contudo, quando se utilizam técnicas viáveis e de fácil compreensão, podem-se evitar os colapsos do sistema, interrupções no fornecimento dos serviços e a perda de dados. É necessário conhecer as técnicas, pois, com isso, o administrador de sistemas poderá implantá-las. O próprio termo tolerância a falhas como designação de área sofre várias críticas, não apenas no Brasil, mas também internacionalmente. A maior crítica é a possibilidade de entender o termo como uma propriedade absoluta. Nessa visão distorcida, um sistema tolerante a falhas toleraria toda e qualquer falha em qualquer situação, o que realmente é uma promessa irrealizável e pode conduzir a falsas expectativas entre usuários. Aos poucos o termo dependabilidade vem substituindo tolerância a falhas no meio acadêmico. Em 2000, o Fault Tolerant Computing Symposium, FTCS, foi rebatizado Dependable Systems and Networks. Em 2003, o SCTF vai passar a se chamar LADC, Latin America Dependable Computing. Será o fi m de tolerância a falhas? Entre nós, por enquanto, ainda não. Dependabilidade é um termo que soa estranho aos nossos ouvidos e não conseguimos encontrar ainda um adjetivo que se ajuste ao termo (WEBER, s.d., p. 7). As técnicas de tolerância a falhas podem demandar de alto custo. É possível implementar um procedimento simples para backup de dados. Há significativa redução do armazenamento em disco ou em outros dispositivos de armazenamento de massa. Também há importante redução do tempo para realização das cópias. Administradores e desenvolvedores de sistemas fazer séria análise da relação custo x benefício acerca da implementação de qualquer um dos mecanismos ou técnicas de tolerância a falhas. Com o objetivo de saber qual é a aplicação mais adequada, de acordo com o ambiente do sistema e com o orçamento previsto ara esses serviços. Voltando-nos para a relação entre defeito, erro e falha, entendemos que tais definições foram padronizadas. Confiram a figura a seguir sobre os três modelos universos para tais conceitos. Figura 1. <http://www.inf.ufrgs.br/~taisy/disciplinas/textos/Dependabilidade.pdf>. Acesso em: 5 jul. 2017. Abaixo, vejam um texto especificando a definição de cada um dos termos discutidos nesta seção: defeito, falta e falha: Estamos interessados no sucesso de determinado sistema de computação no atendimento da sua especifi cação. Um defeito (failure) é defi nido como um desvio da especifi cação. Defeitos não podem ser tolerados, mas deve ser evitado que o sistema apresente defeito. Defi ne-se que um sistema está em estado errôneo, ou em erro, se o processamento posterior a partir desse estado pode levar a um defeito. Finalmente defi ne- se falha ou falta (fault) como a causa física ou algorítmica do erro. Falhas são inevitáveis. Componentes físicos envelhecem e sofrem com interferências externas, sejam ambientais ou humanas. O software, e também os projetos de software e hardware, são vítimas de sua alta complexidade e da fragilidade humana em trabalhar com grande volume de detalhes ou 43 2 - Redundância e diversidade 3 - Técnicas e mecanismos de tolerância a falhas com defi ciências de especifi cação. Defeitos são evitáveis usando técnicas de tolerância a falhas. Alguns autores nacionais traduzem as palavras inglesas failure como falha e fault como falta. Para ser coerente com essa última tradução a área deveria se chamar tolerância a faltas, pois failures não podem ser toleradas (WEBER, s.d., p. 9). Entendidos os conceitos de defeito, falta e falha. Outro conceito importante é o de latência de falha, que é o período de tempo desde a ocorrência da falha até a manifestação do erro causado por aquela falha. Latência de erro é o período de tempo entre a ocorrência do erro até a manifestação do defeito devido ao erro. O período que compreende a falha até o aparecimento do defeito é a soma de latência de falhas. Entender também os conceitos de redundância e de diversidade é fundamental. Tais conceitos contribuem significativamente para a confiabilidade do sistema. Redundância e diversidade são estratégias utilizadas para que se consiga proteger o sistema e evitar falhas. Podemos encontrar alguns exemplos simples em nosso dia a dia. Vejamos alguns: • Investimento em bolsa de valores: se você está investindo em uma única empresa, poderá perder tudo, pois não há diversidade no investimento; • Pilhas e lâmpadas: muitas pessoas costumam armazenar esses itens para evitar falhas (redundância); • Back-up: fazemos, geralmente, back-up, pois ficamos seguros, mesmo tendo que fazer diversas vezes (redundância); • Fechadura: muitas pessoas costumam utilizar diversos tipos de fechadura (diversidade) em uma única porta, de modo a tentar impedir um possível assalto. Já em casos de sistemas críticos, também há possibilidade de inclusão de componentes que irão replicar a funcionalidade de outros componentes (redundância), ou de códigoadicional que não é exatamente fundamental para que o sistema funcione (redundância). Os defeitos poderão ser sanados antes de causar falhas e o sistema poderá continuar funcionando. Caso os componentes redundantes não forem os mesmos que outros componentes (diversidade), uma determinada falha não irá resultar, necessariamente, em falha completa do sistema. Servidores redundantes são muito comuns em sistemas nos quais a disponibilidade seja um requisito crítico. Eles começam a operar assim que o servidor designado falhe. Muitas vezes, os servidores podem ser de tipos diferentes e executar diferentes sistemas operacionais. Quando isso acontece, há um exemplo claro de redundância e de diversidade de software. A diversidade e a redundância são utilizadas também quando se quer obter um processo confiável. Pode-se testar um programa, ou, ainda, utilizar inspeções de programa e de análise como técnicas e metodologias para descoberta de defeitos. Uma mesma atividade de processo pode ser efetuada por diversos membros da equipe, pois, uma pessoa utiliza um método diferente da outra. Contudo, incluir diversidade e redundância ao sistema irá torná-lo mais complexo e mais difícil de ser compreendido. Assim, o mais comum é que os programadores cometam erros. Um software é desenvolvido, muitas vezes, priorizando um sistema simples, com procedimentos de verificação e de validação muito complexos. Tanto uma alternativa quanto outra são bastante usuais. Quando falamos de falhas, é necessário termos técnicas e mecanismos para evitá-las, tendo em vista que, como já vimos, elas podem causar riscos e prejuízos. Há, comumente, três situações de risco a serem avaliadas devido a sua gravidade. São elas: Possibilidade de o disco quebrar: Se uma unidade de disco quebrar, haverá perda de tempo até que ele seja substituído. Haverá também mais perda de tempo até que o sistema operacional e os dados sejam restaurados. Caso o backup não seja atualizado, também haverá perda desses dados. A empresa sofrerá perda de tempo até que a unidade de disco seja substituída, mais perda de tempo até que o sistema operacional e os dados sejam restaurados, perda dos dados desde o último backup e problemas se o backup não puder ser restaurado. Para a Internacional Data Corporation [IDC 95], 9,4% dos discos rígidos vendidos falham, e 8,6% das placas mãe e fontes também falham, considerando um tempo de vida útil de dez anos para os equipamentos. Na mesma publicação, é possível perceber que a confiabilidade do hardware, serviços e suporte técnico são os fatores mais críticos para os usuários quando da aquisição de um equipamento. Atualmente, eles dão mais importância a tais fatores do que ao preço, características e reputação do fabricante. Uma medida para evitar problemas desse tipo é o espelhamento de disco. Essa medida previne perda de tempo e de dados, tendo em vista que protegem os dados. No espelhamento, os discos ficam conectados a uma mesma controladora de discos. Assim, os dados são atualizados em ambos simultaneamente, pois a controladora os trata como uma única unidade lógica. Quando ocorre uma falha no disco primário, o secundário assume o lugar deste e passa a ser o disco primário. Esse processo fica transparente ao usuário, uma vez que o disco secundário assume automaticamente as ações de disco primário. Quando o disco defeituoso for retornado, ele passará a ser o secundário. Os dois discos precisam ter características físicas semelhantes, como, por exemplo, precisam ter a capacidade de armazenamento similar. Figura 2. Espelhamento de disco. <https://www.controle.net/faq/raid-1-espelha- mento-de-hd-ou-raid-mirroring>. Acesso em: 6 jul. 2017. 44Engenharia de software II O custo de serviço de emergência também deve ser considerado, bem como o custo de recuperação ode dados, a perda imediata de produtividade, a perda de vendas e a redução de publicidade. O custo mais significativo é a perda de vendas por um período longo de tempo, pois isso provoca impactos sérios na organização. Em uma grande aplicação, onde qualquer tempo de manutenção de sistema é extremamente caro, é completamente justificada uma combinação de espelhamento de disco e software de tolerância a falhas de servidor. O software de espelhamento de disco previne o tempo de manutenção ou perda de dados se um disco rígido falhar. Se o computador “explodir”? O computador pode queimar por inúmeros motivos: queima da fonte, queima do chip de memória, queima de outros componentes e bug’s de programa. Mesmo em sistemas caros, há componentes como fontes de alimentação, cujas partes são de origem desconhecida. Isso pode gerar possibilidades de paradas súbitas do computador mesmo que essas fontes tenham sido testadas anteriormente, pois estão sujeitas a instabilidades da rede elétrica e outros fatores imprevistos. Certamente, é difícil fazer com que todos os componentes internos das fontes de alimentação funcionem perfeitamente por um longo período de tempo. Quando há uma falha no sistema, a empresa fica condicionada a perda de vendas imediatamente, pois os gastos com serviços emergenciais e o tempo de recuperação ocasionará, muitas vezes, em perda de vendas em longo prazo. Sistema de eliminação de falhas Para tentar evitar falhas, há o recurso watchdog line (linha cão de guarda), em que dois servidores ficam conectados entre si e o sistema secundário observa o estado atual do sistema primário. Caso o primeiro falhe, o segundo, imediatamente, irá assumir o controle. Figura 3. Fonte: <https://www.google.com.br/imghp?hl=pt-br&gws_rd=ssl>. Acesso em: 7 jul. 2017. O sistema primário (ou servidor backup) é conectado ao sistema primário através de rede. Periféricos, como terminais, redes e outros canais de I/O são conectados também nas duas máquinas. Isso possibilita que a máquina do sistema secundário se comunique com os usuários e periféricos quando esta assumir o controle. O software para gerenciar a eliminação de falhas é instalado em ambas as máquinas. O software (sendo executado no sistema secundário) assiste a máquina primária continuamente (pela watchdog line) para detectar se a máquina primária falhou. Depois de uma falha no sistema Caso haja uma falha no sistema, o sistema secundário assume. Todos os periféricos são conectados automaticamente e toda a base de dados estará disponível. Quando o primeiro servidor falha, há o seguinte processo de watchdog: O software intercepta automaticamente os dispositivos periféricos (como terminais, redes e outros canais de I/O) conectando-os ao sistema secundário. O mais importante é que o servidor secundário tem acesso ao mesmo banco de dados que o servidor primário. Isso permite aos usuários começar novamente de onde quer que eles tenham parado. Nenhum dado estará perdido (exceto as transações mais recentes que não tinham sido gravadas em disco no momento da falha). Esse procedimento de conexão do servidor secundário e disponibilização dos dados gasta de 5 a 90 segundos. Portanto, os usuários perceberão, por alguns segundos, que o sistema parou de funcionar, no entanto, esta demora é tão pequena que, quando eles começarem a pensar no que pode ter acontecido, o sistema já estará funcionando. Para que se tenha um sistema eliminador de falhas do servidor, é preciso que se adquira um segundo computador, conexões de hardware e um software para gerenciar as falhas e os custos da instalação. O computador é a parte mais cara dessa aquisição. O custo da conexão de hardware depende do produto de eliminação de falhas usado. O custo dos equipamentos e da instalação dependerá do preço de mercado para os equipamentos usados como: cabos, conectores etc. Se o edifício incendiar? Computadores não são itens muito resistentes a grandes terremotos,a incêndios, a inundações, entre outros. São extremamente vulneráveis, também, a sabotagem, vandalismo, roubo etc. Quando se perde todos os computadores, há um dano extremamente significativo. A organização pode estar há dias sem o sistema, com consequências como perda de negócios e relações de clientes permanentemente danificadas. É necessário, então, que se armazenem os dados em um local remoto, com possibilidade de retornar os dados de forma rápida para o novo computador. Os sistemas de backup são soluções eficazes para tanto, pois executam suas aplicações em um local distinto do primeiro local, permitindo que se normalizem as atividades o mais rápido possível. Caros(as), Chegamos ao final de nossa sétima aula. Como vimos, as técnicas que discutimos são parte da tentativa para prevenir erros e tornar a empresa tolerante a falhas nos sistemas computacionais. Empresas fabricantes de hardware de todo o mundo estão se preparando para a produção de equipamentos com melhor qualidade para atrair, principalmente, as empresas menores que não têm condições de investir na tecnologia de tolerância a falhas, e por esse motivo, acabam escolhendo o equipamento que lhe oferece maior confiabilidade com empresas que fornecem melhor suporte, muitas vezes, não importando se este equipamento é mais caro que outros no mercado. 45 Retomando a aula Vamos recordar os assuntos discutidos? Vale a pena Disponível em: <http://www.inf.ufrgs.br/~taisy/ disciplinas/textos/ConceitosDependabilidade.PDF>. Vale a pena acessar 1 - Tolerância, defeito, erro e falha Nesta seção, discutimos os quatro conceitos essenciais ao tópico. Como vimos, houve a popularização do termo segurança computacional devido à necessidade de se proteger de invasões ou de mal-intencionados. Esse processo envolve autenticação, criptografia, além de outros tipos de proteção. De modo geral, o termo segurança de funcionamento está relacionado à tolerância a falhas e vem sendo cada vez menos usado nos meios acadêmicos. Pouco a pouco, vem sendo substituído pelo termo dependabilidade. 2 - Redundância e diversidade Vimos os conceitos de redundância e diversidade, que contribuem significativamente para a confiabilidade do sistema. Redundância e diversidade são estratégias utilizadas para que se consiga proteger o sistema e evitar falhas. 3 - Técnicas e mecanismos de tolerância a falhas Quando falamos de falhas, é necessário termos técnicas e mecanismos para evitá-las, tendo em vista que, como já vimos, elas podem causar riscos e prejuízos. Há, comumente, três situações de risco a serem avaliadas devido a sua gravidade. São elas: possibilidade de o disco quebrar; possibilidade de o computador explodir e possibilidade de o edifício incendiar. Minhas anotações