A resiliência das aplicações se refere à capacidade dos softwares de manter sua funcionalidade central durante interrupções não planejadas, como falhas de componentes, interrupções ou picos repentinos de carga de trabalho. Aplicações resilientes ajudam a garantir a continuidade dos negócios, proteger a experiência do usuário e minimizar o downtime.
As aplicações alimentam praticamente todos os aspectos dos negócios modernos, desde o processamento de transações de clientes e o gerenciamento de cadeias de suprimentos até a colaboração dos funcionários e a análise de dados em tempo real.
Quando essas aplicações falham, o impacto pode ser grave. O downtime, ou seja, períodos em que uma aplicação está indisponível ou não consegue funcionar corretamente, pode resultar em danos à reputação, degradação da experiência do usuário e perdas financeiras significativas.
De fato, 98% das organizações relatam que os custos de downtime excedem USD 100 mil por hora, com um terço delas estimando perdas entre USD 1 milhão e USD 5 milhões.
Ao projetar e implementar aplicações resilientes, as organizações podem evitar e mitigar essas interrupções.
A resiliência das aplicações depende de dois princípios básicos:
Aplicações resilientes ajudam a reduzir as vulnerabilidades em sua arquitetura, melhorar a eficiência operacional e garantir uma experiência de usuário consistente, mesmo em face de interrupções inesperadas.
Boletim informativo do setor
Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.
Sua assinatura será entregue em inglês. Você pode encontrar um link para cancelar a assinatura em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.
Para criar e implementar aplicações resilientes, os desenvolvedores e as equipes de TI podem usar várias ferramentas e práticas durante todo o ciclo de vida da aplicação.
Componentes comuns de aplicações resilientes incluem:
Redundância significa ter versões de backup de sistemas críticos. Se um sistema falha, o backup assume o controle, ajudando a dar continuidade ao seu funcionamento.
Por exemplo, um serviço de processamento de pagamentos provavelmente terá várias cópias do serviço em execução em servidores diferentes. Se um servidor falhar, as cópias em outros servidores poderão assumir automaticamente o controle da carga de trabalho para que os clientes não percebam o problema.
As organizações geralmente criam redundância em áreas importantes:
O balanceamento de carga envolve a distribuição eficiente do tráfego de rede entre vários servidores para otimizar a disponibilidade das aplicações. É fundamental para a resiliência das aplicações, pois permite que os sistemas mantenham o desempenho e a disponibilidade mesmo quando componentes individuais falham ou ficam sobrecarregados.
Por exemplo, se um servidor deixar de responder, o balanceador de carga poderá redirecionar automaticamente o tráfego para outros servidores íntegros, mantendo a aplicação online.
A contenção de falhas é uma prática de design que isola componentes críticos em um sistema distribuído, evitando que problemas localizados se transformem em interrupções em todo o sistema.
A contenção é especialmente importante em arquiteturas de microsserviços, onde uma falha em um serviço pode afetar com rapidez muitas outras dependências se não for devidamente contida.
Malhas de serviço são particularmente úteis para conter erros. Essas camadas de infraestrutura ajudam a gerenciar a comunicação entre microsserviços em aplicações distribuídas, fornecendo:
Juntos, esses recursos ajudam a garantir que as falhas em um serviço não se espalhem para outros. Suponhamos, por exemplo, que um mecanismo de recomendação de produtos falhe em um site de comércio eletrônico. Uma malha de serviço pode detectar essa falha, impedir que as solicitações cheguem ao serviço com defeito e redirecionar o tráfego da maneira adequada. Os usuários podem continuar navegando e comprando sem interrupções.
A observabilidade permite que as equipes monitorem a integridade do sistema em tempo real usando três tipos principais de dados: métricas (indicadores de desempenho, como tempos de resposta), logs (registros de eventos, como erros ou travamentos) e rastreamentos (a jornada completa de uma solicitação por um sistema).
Ao capturar e analisar esses sinais, as equipes podem detectar anomalias, diagnosticar problemas com rapidez e reduzir o downtime. Por exemplo, se um cliente relatar uma página que está carregando lentamente, as ferramentas de observabilidade ajudam os engenheiros a rastrear a solicitação até o serviço que causou o atraso e corrigir o problema antes que ele afete mais usuários.
A automação desempenha um papel crítico na resiliência das aplicações, pois permite que os sistemas respondam a problemas sem a necessidade de intervenção manual.
Por exemplo, as ferramentas de observabilidade detectam problemas, enquanto a redundância fornece recursos de backup. A automação é o que conecta esses recursos, coordenando o processo de recuperação. Uma automação eficaz pode diminuir significativamente o tempo de recuperação, transformando longas horas de resolução manual de problemas em apenas alguns segundos de resposta automatizada.
Veja algumas das principais respostas automatizadas na resiliência das aplicações:
Ferramentas como o Kubernetes, sistema de código aberto para gerenciar aplicação em contêineres, demonstram como a automação une os componentes de resiliência. O Kubernetes pode detectar falhas por meio de verificações de integridade incorporadas, reagendar cargas de trabalho em nós íntegros e manter a continuidade do serviço por meio de fluxos de trabalho automatizados.
A degradação suave envolve a manutenção da funcionalidade principal e a eliminação de recursos não essenciais durante o estresse. Por exemplo, durante os picos de tráfego da Black Friday, um varejista pode desativar temporariamente as avaliações de clientes e as listas de desejos para permitir que o carrinho de compras e a finalização da compra permaneçam funcionais.
As aplicações escaláveis podem ajustar automaticamente os recursos de acordo com as demandas de carga de trabalho. Esse recurso ajuda a garantir o desempenho e a disponibilidade mesmo com as flutuações do tráfego.
A escalabilidade pode ser alcançada de várias maneiras. Por exemplo, as plataformas baseadas em nuvem oferecem escalabilidade por meio de recursos como balanceadores de carga integrados, ajuste de escala automático e replicação multirregional, ou seja, cópia de dados e serviços em várias localizações geográficas para melhorar o desempenho e a confiabilidade. Esses recursos permitem que os serviços distribuam o tráfego de forma inteligente, mantenham o tempo de atividade e minimizem o tempo de recuperação em resposta a mudanças nas condições.
Por exemplo, uma plataforma de streaming hospedada na nuvem normalmente pode operar em 100 servidores. No entanto, durante um evento global ao vivo, ela pode escalar automaticamente para 10 mil servidores em várias regiões, proporcionando uma reprodução fluida para milhões de espectadores simultâneos.
Como as aplicações de software se tornaram essenciais para as operações e para a vida cotidiana dos consumidores, é fundamental que elas resistam a interrupções inesperadas e permaneçam funcionais em quase todas as condições.
Quatro fatores em particular impulsionam a crescente ênfase na resiliência das aplicações.
Os clientes esperam que os serviços digitais sempre funcionem. De acordo com o Google, 53% dos visitantes abandonam uma página em dispositivos móveis se ela demorar mais de três segundos para carregar.
Seja um aplicativo bancário, plataforma de comércio eletrônico ou portal de saúde, o downtime pode desencadear deserções de clientes, reações adversas nas redes sociais e danos duradouros à marca. A disponibilidade de aplicações não é apenas uma métrica técnica, mas um requisito comercial fundamental.
Interrupções de aplicações podem custar caro para organizações de todos os tamanhos. Considere um cenário comum: uma marca de varejo lança um evento de vendas de alto tráfego, mas o serviço de finalização de compra falha devido à demanda adicional. Em poucos minutos, milhares de transações param, os clientes ficam frustrados e a empresa perde receita.
Além da perda de vendas, as interrupções podem desencadear uma cascata de custos secundários, desde despesas de remediação e violações de contratos de nível de serviço (SLA) até penalidades regulatórias, indenizações a clientes e danos de longo prazo à marca.
Incidentes recentes de grande visibilidade mostram o quão significativo pode ser o impacto:
As arquiteturas de aplicação modernas possuem muitas partes móveis: microsserviços, ambientes multinuvem, bibliotecas de códigos etc. Embora esses componentes modulares melhorem a escalabilidade, eles também aumentam o número de possíveis pontos de falha.
Sem projeto e implementação resilientes, até mesmo problemas menores podem escalar. Uma única falha de microsserviço pode se espalhar por dezenas de dependências. Por exemplo, se um serviço de banco de dados que armazena informações de produtos para de funcionar, isso pode interromper outros funcionalidades, como pesquisa, recomendações ou finalização de compra.
Interrupções de rede entre regiões de nuvem também podem fragmentar serviços e causar inconsistências de dados. Diferentemente de uma falha de microsserviço, em que um componente para de funcionar completamente, esses problemas de conectividade criam um cenário de “cérebro dividido”: diferentes partes da aplicação continuam em execução, mas não conseguem se comunicar entre si.
Por exemplo, o sistema de pedidos de um aplicativo de negociação financeira pode ficar desconectado dos dados de preços em tempo real, fazendo com que os usuários vejam cotações incorretas ou tenham negociações malsucedidas.
As interrupções em interfaces de programação de aplicativos (API) também podem interromper funcionalidades críticas. Embora as falhas de microsserviço afetem os componentes internos que a organização controla, as interrupções em APIs envolvem serviços de terceiros de que uma aplicação depende, mas não pode corrigir diretamente. Por exemplo, se o serviço de mapeamento de um aplicativo de entrega ficar fora do ar, os usuários não conseguirão rastrear os motoristas, e estes não conseguirão encontrar as rotas, prejudicando a experiência, mesmo que a aplicação principal permaneça funcionando.
Em determinados setores e locais, os órgãos reguladores estabeleceram requisitos rigorosos para disponibilidade de dados, recursos de recuperação de aplicativos, mitigação de perda de dados e tempo de atividade. Esses requisitos elevam a resiliência das aplicações de uma meta técnica para uma questão de conformidade.
Algumas leis de proteção de dados e de privacidade agora incluem normas de disponibilidade junto com exigências de segurança. Por exemplo, o Regulamento Geral de Proteção de Dados (RGPD) exige que os dados pessoais permaneçam protegidos e acessíveis. No caso de falha do sistema, espera-se que as organizações recuperem os dados perdidos.
Em particular, os setores altamente regulamentados enfrentam algumas das normas mais rigorosas.
Embora a Lei Sarbanes-Oxley (SOX) não exija explicitamente planos de recuperação de desastres, muitas organizações mantêm sistemas de backup e procedimentos formais de recuperação para ajudar a cumprir e comprovar a conformidade com a lei.
As instituições financeiras também enfrentam regulamentações e recomendações específicas do setor, de órgãos como o Federal Financial Institutions Examination Council (FFIEC), que fornece orientações detalhadas sobre o planejamento de continuidade de negócios e objetivos de tempo de recuperação.
De acordo com a Lei de portabilidade e responsabilidade de planos de saúde (HIPAA), as entidades cobertas devem implementar salvaguardas administrativas, físicas e técnicas para ajudar a garantir a disponibilidade e a integridade das informações de saúde protegidas (ePHI). Embora a HIPAA não exija acesso 24 horas por dia, 7 dias por semana, ela exige que as organizações de saúde mantenham o acesso aos dados do paciente quando necessário para o tratamento.
A regra de segurança da HIPAA exige planos de backup de dados, procedimentos de recuperação de desastres e operações em modo de emergência, o que leva muitas organizações a investir em estratégias avançadas de failover e replicação de dados.
Para permitir que os sistemas possam suportar interrupções do mundo real, as organizações validam a resiliência das aplicações por meio de uma combinação de medição contínua e testes proativos. Essas abordagens permitem que as equipes monitorem o desempenho, identifiquem vulnerabilidades e confirmem se as aplicações podem se recuperar de forma rápida e eficaz.
As equipes de DevOps, em particular, frequentemente integram práticas de resiliência em pipelines de integração/entrega contínua (pipelines de CI/CD). Isso permite que elas automatizem o teste dos procedimentos de failover, validem as alterações de configuração e revertam implementações instáveis para detectar problemas com antecedência e evitar que as interrupções cheguem aos usuários.
As organizações contam com várias métricas-chave para avaliar a resiliência das aplicações.
O RTO é o downtime máximo permitido antes que um sistema seja restaurado. O RTO ajuda a definir as expectativas de recuperação e apoia a recuperação de desastres e o planejamento de continuidade de negócios.
As organizações estabelecem RTOs com base na análise de impacto nos negócios, determinando quanto tempo cada sistema pode ficar inativo antes de causar danos inaceitáveis às operações, à receita ou à experiência do cliente.
Por exemplo, um sistema de processamento de pagamentos pode ter um RTO de 5 minutos, enquanto uma ferramenta de relatórios internos pode tolerar 24 horas.
O MTTR é o tempo necessário para restaurar o serviço após uma falha. As organizações medem o MTTR usando ferramentas de gerenciamento de incidentes e plataformas de monitoramento que rastreiam automaticamente o tempo entre a detecção de falhas e a restauração do serviço. Um MTTR mais baixo significa recuperação mais rápida e melhor experiência do usuário.
MTBF é o tempo operacional médio entre falhas do sistema. Oferece insights sobre a frequência das interrupções e é calculado dividindo-se o total de horas operacionais pelo número de falhas, normalmente rastreadas por meio de sistemas de monitoramento automatizados e logs de incidentes.
Orçamentos de erro referem-se ao nível aceitável de downtime dentro dos objetivos de nível de serviço. Os orçamentos de erro podem permitir as que equipes assumam riscos calculados. Se um serviço tiver usado apenas 20% de seu orçamento mensal de erros, as equipes poderão implementar novas funcionalidades de forma mais agressiva. Caso o orçamento esteja quase esgotado, elas se concentram em melhorias de estabilidade.
Os quadros de avaliação de resiliência são relatórios abrangentes que utilizam dados de redundância, latência e recuperação para comparar a resiliência das aplicações e identificar oportunidades de melhoria. Esses quadros de avaliação são normalmente gerados por plataformas de observabilidade que agregam métricas de várias ferramentas de monitoramento.
As organizações estão cada vez mais recorrendo a testes para ter uma perspectiva mais realista. Quando as métricas fornecem uma base, os testes ajudam as organizações a passar da prontidão teórica para a resiliência comprovada.
A engenharia do caos é a prática de introduzir falhas controladas, como desligar servidores, injetar latência ou forçar perdas de conectividade, para testar como as aplicações se recuperam sob estresse.
Por exemplo, ferramentas como o Chaos Monkey da Netflix encerram aleatoriamente instâncias de aplicações para testar se os serviços podem suportar interrupções inesperadas.
As simulações de desastres são cenários em grande escala que imitam grandes interrupções ou ataques para avaliar a recuperação técnica, a comunicação e a coordenação entre as equipes.
As simulações, como ataques de ransomware e falhas na região da nuvem, ajudam as organizações a testar a arquitetura das aplicações e identificar lacunas nos planos de recuperação de desastres.
A inteligência artificial (IA) e o aprendizado de máquina (ML) estão remodelando a forma como as organizações abordam a resiliência. Essas tecnologias trazem ferramentas novas e eficientes para evitar o downtime, mas também introduzem desafios singulares.
Um dos maiores desafios é que as cargas de trabalho de IA consomem muitos recursos. Muitos modelos dependem de unidades de processamento gráfico (GPUs), que são caras e difíceis de duplicar entre as regiões da nuvem. Isso torna a redundância (uma parte essencial da resiliência) mais difícil de alcançar.
Os sistemas de IA também podem falhar de maneiras inesperadas. Com o tempo, sua precisão pode se degradar, um problema conhecido como desvio do modelo. Ou eles podem encontrar inputs adversários, ou seja, dados maliciosos projetados para enganar o sistema. Esses tipos de falhas podem ser mais difíceis de prever e conter.
Além disso, quando as funcionalidades de IA ficam lentas ou param de funcionar, um problema comum em ambientes de nuvem devido a restrições de recursos ou latência, o restante da aplicação ainda precisa ter um desempenho confiável, colocando pressão adicional sobre estratégias de degradação suave.
Ao mesmo tempo, a IA tem casos de uso importantes para aumentar a resiliência:
Em resumo, embora a IA introduza nova complexidade, ela também pode permitir uma recuperação mais rápida, um monitoramento mais inteligente e aplicativos mais resilientes em geral, especialmente quando integrada a ambientes nativos da nuvem e pipelines de DevOps.
Simplifique o gerenciamento de aplicações e obtenha insights gerados por IA com base nos quais você pode agir, utilizando o IBM® Concert, uma plataforma de automação tecnológica orientada por IA generativa.
Una observabilidade full stack ao gerenciamento automatizado de recursos de aplicações para lidar com problemas de desempenho antes que eles afetem a experiência do cliente.
Descubra serviços altamente inovadores oferecidos pela IBM Consulting para gerenciar ambientes híbridos e de multinuvem complexos.