0

Criando sistemas resilientes

Rosemeire Deconti
Rosemeire Deconti

Criando sistemas resilientes


Durante a Aceleração Global Dev #10 GFT ouvi falar sobre Resiliência. Mas afinal o que é resiliência, o que ser resiliente no trabalho? Em minhas pesquisas encontrei material sobre o assunto e criei este artigo:


Digital Innovation One - Ser resiliente


Porém encontrei também outro assunto muito interessante: CRIAR SISTEMAS RESILIENTES e este artigo é exatamente sobre este tema!


Como de costume ao final deste artigo estão as referências que utilizei para criar este texto.


Bons estudos e persistência para que o sucesso ser alcançado!


Neste link vocês encontram todos os artigos que publiquei na Digital Innovation One


Digital Innovation One - Lista de artigos publicados na DIO


Significado de “Sistemas resilientes!

Basicamente, um sistema resiliente é aquele capaz de cumprir sua missão mesmo diante de crises e adversidades. Isto é, fornecer os recursos necessários e continuar operante, apesar do estresse excessivo da operação.


A resiliência, no entanto, não se aplica somente às situações extremas. Ela é a resposta para uma série de situações corriqueiras, como defeitos residuais no software ou hardware, falhas de segurança, capacidade de armazenamento ou processamento etc.


É importante observar que é praticamente impossível ter um sistema 100% resiliente a todo tipo de adversidade. No entanto, as empresas podem e devem contar com sistemas com alto grau de resiliência, que permitam detecção de eventos adversos, respostas adequadas a eles e rápida recuperação.


Exemplo de Sistema Resiliente

Por exemplo, com a pandemia causada pelo novo coronavírus, muitas empresas tiveram que adotar o trabalho remoto para atender aos protocolos novos de saúde. Nesse sentido, as empresas que contam com muita resiliência de sistemas foram capazes de se adaptar a essa nova realidade de forma rápida, sem gerar interrupções significativas.


Como desenvolver sistemas resilientes?

O primeiro passo para alcançar a resiliência consiste em entender o escopo do que significa para um sistema resistir às adversidades. Para isso, é preciso responder às seguintes questões:

  • Quais recursos/serviços críticos o sistema precisa continuar a fornecer sem interrupções?
  • Que tipos de adversidades podem atrapalhar o fornecimento desses recursos críticos (ou seja, quais eventos e condições adversas o sistema deve suportar)?
  • Quais são os tipos e níveis de danos que podem causar essas interrupções?


Fatores que contribuem com a resiliência


Ferramentas de trabalho flexíveis: aplicações em nuvem, aplicativos empresariais para dispositivos móveis etc.


Soluções que permitam o trabalho remoto:  o Home Office, além de uma solução em períodos de crise sanitária, também é uma importante tendência do mercado de trabalho.


Infraestrutura escalável: permite o aumento da carga de trabalho, do número de usuários e a incorporação de novas soluções tecnológicas de forma rápida e prática. A Computação em Nuvem é uma ótima aliada nesse sentido.


Cibersegurança: ataques cibernéticos são alguns dos principais causadores de interrupções nas empresas. Por isso é necessário possuir soluções de segurança capazes de detectar ameaças para proteger os ativos.


Aceleração e otimização da Nuvem: adoção de sistemas híbridos e Multicloud, possibilita a otimização de custos e a adoção de estratégias mais eficazes para as empresas.


Replicação de dados: a replicação de dados é essencial para as empresas que buscam a rápida recuperação, após um episódio de fatalidade. Esse tipo de método é usado, em grande parte dos casos, por corporações que possuem mais de uma estrutura de datacenter.

Dessa forma, caso ocorra algum intercorrência em um deles, existe a possibilidade de continuidade das operações, a partir do outro datacenter.


Como o desenvolvedor constrói aplicação resiliente?


O desenvolvedor pensa em todos os problemas que podem acontecer no fluxo

Quando você vai escrever um código, você sempre tem premissas:

·       Existe um arquivo de configuração.

·       Há uma classe que implementa essa interface.

·       O servidor está de pé.

·       Etc…


E se uma premissa dessas não for verdadeira? Seu código irá funcionar? Ou pelo menos irá mostrar o erro correto? Então: pense nos problemas e quais as solução para cada um deles.


O desenvolvedor cria um  software que é resistente a desenvolvedores

O software foi desenvolvido e está em produção. Depois disto em algum momento esse software poderá ser atualizado. Podem ser necessários corrigir os bugs que ainda não foram encontrados, ou poderá ser adicionada alguma funcionalidade. Qualquer alteração, em qualquer lugar, tem o potencial de alterar a lógica do seu software. Como podemos validar que tudo está funcionando corretamente?


Aplique TDD e se preocupe com:

·       Qual a cobertura de testes do sistema?

·       Os testes foram feitos só para passar pela cobertura de testes e agradar o arquiteto?

·       Os testes estão realmente validando o output?

·       Os testes são executados no processo de build?

Então: crie testes unitários com todos os pressupostos.


O desenvolvedor investiga possíveis erros

Um possível erro intermitente em um teste pode ser um erro intermitente em produção. Pode ser custoso investigar antes do deploy? Pode! Mas será mais barato do que investigar depois do deploy, não?


Conclusão

Ser resiliente é aceitar que falhas irão acontecer e tratá-las da melhor maneira.


Referências

Criando Aplicações Resilientes: uma visão geral | iMasters

Resiliência de Sistemas de TI: Como operar em uma nova realidade? (netcenter.com.br)

Coisas que todo Sênior deve saber: Construindo softwares resilientes (vepo.github.io)

Pensando e arquitetando aplicações resilientes (infoq.com)

Tornando a aplicação resiliente - Douglas Picolotto

Estratégias para aplicativos resilientes (ibm.com)

Coisas que todo Sênior deve saber: Construindo softwares resilientes (vepo.github.io)

0
0

Comentários (2)

0
Rosemeire Deconti

Rosemeire Deconti

26/06/2021 12:29

Tawara Martins! Muito grata!


0
Tawara Martins

Tawara Martins

24/06/2021 12:41

Excelente artigo!

Apaixonada por tecnologia e informação. Na área desde 1.984 e sem previsão de parada.

Brasil