Um sistema de gestão comercial com uma falha crítica é um dos maiores pesadelos que uma equipe de tecnologia pode enfrentar.
Sejam erros de software ou queda de uma aplicação em cloud, é importante que a equipe de TI e os parceiros prevejam problemas e tracem planos de recuperação que permitam garantir níveis satisfatórios de serviço (ou SLA, do inglês Service Level Agreement).
Segundo um estudo global feito pela Vanson Bourne, 60% das companhias não avaliam os custos de uma eventual indisponibilidade de serviço na nuvem para os negócios, ou seja, não estão preparadas para possíveis impactos. Ironicamente, quase um terço (31%) dos 1.200 tomadores de decisão ouvidos experimentaram tempos de indisponibilidade maiores do que meia hora por mês.
Além disso, devido à natureza mutável dos sistemas de gestão comercial e da constante necessidade de evoluções, como novas determinações fiscais do governo ou demandas internas do próprio negócio, existe um elemento intrínseco à operação do sistema e que pode ocasionar falhas.
LEIA MAIS: Desenvolvimento interno vs fornecedores de TI: vantagens e desvantagens
“No que diz respeito a customizações de software, existem estatísticas que mostram que a cada mil linhas de código costuma haver entre 15 e 50 erros”, diz Guilherme Utrabo, da área de desenvolvimento da Gera, citando o livro Code Complete, de Steve McConnell.
“Tentar acabar com essas falhas é uma noção defasada no desenvolvimento de software. Na visão do DevOps, o rumo a ser perseguido é que essas falhas ocorram, mas que sejam detectadas o quanto antes no processo de desenvolvimento. A pergunta correta é: quanto meu sistema de gestão comercial está preparado para lidar com os problemas que vão eventualmente acontecer?”
Reduzindo falhas de código no sistema de gestão comercial
No caso de um sistema de gestão comercial, que precisa estar disponível para os diferentes usuários a todo momento e local, as consequências de uma falha crítica podem ser variadas. Um cenário bastante problemático para um sistema indisponível é quando isso acontece justamente em época de pico de vendas, por exemplo em fechamento de campanhas. Existem sérias consequências, como a desistência de fazer pedidos, afetando diretamente a geração de receita da companhia.
Mas imagine um erro de apuração no comissionamento de uma rede de vendas multinível. São centenas, talvez milhares, de revendedores interligados, e uma falha pode afetar grande parte da rede e será percebida por muitos revendedores. Nesse cenário, será preciso refazer o cálculo da comissão para toda a rede, de baixo para cima, afetando a remuneração de toda a cadeia hierárquica. Isto pode culminar em atrasos na remuneração e, em casos extremos, questionamentos judiciais.
“Mesmo que haja uma única falha, ela será percebida por diversos revendedores, que por consequência irão relatar tickets no suporte interno da empresa. Para dar conta da demanda, a empresa pode inclusive ter que inflar a estrutura de suporte interno, gerando um custo direto”, pondera Utrabo. “No caso de um problema com a remuneração, todos os valores vão passar a ser questionados dali para frente, ou seja, há uma perda de credibilidade da marca. Cria-se um estado de desconfiança.”
LEIA MAIS: Como a computação em nuvem pode ajudar a expandir os negócios
Para o especialista, e considerando o ponto de vista de DevOps – abordagem que unifica equipes de desenvolvimento e operação de softwares – erros de programação e código são inevitáveis. Assim, é preciso trabalhar a resiliência do sistema e a maneira de responder a estes erros.
As estratégias de combate ao problema passam por testes automatizados e outros controles de qualidade, incluindo o uso de robôs que simulam usuários reais para detectar falhas rapidamente. É preciso ainda ter um monitoramento ativo do ambiente e do sistema, configurando alertas para situações críticas. Equipes devem estar sempre de prontidão (24×7) para resolver problemas o mais rápido possível e evitar consequências mais graves.
Mantendo uma infraestrutura resiliente
O segundo aspecto importante de ser tratado para evitar problemas em um sistema é justamente o da disponibilidade. Para o especialista da Gera, é importante adotar uma estratégia assíncrona em grandes aplicações, como sistemas de gestão comercial. Isso implica ter servidores separados para aplicação e processos. Os primeiros registram as solicitações dos usuários enquanto os segundos processam as ações decorrentes destas requisições.
Mas o que isso significa na prática? “Quando uma revendedora faz um pedido, pode ser necessário, por exemplo, recalcular o crédito. Mas o processamento do pedido e o processamento do recálculo não precisam acontecer no mesmo momento. É possível registrar a requisição para ser processada em separado, para que o serviço principal permaneça no ar com a melhor performance possível”, explica Utrabo.