O departamento de TI do VTB enfrentou várias situações inesperadas no funcionamento dos sistemas, quando a carga sobre eles aumentava drasticamente. Por isso, surgiu a necessidade de desenvolver e testar um modelo que previsse a carga máxima em sistemas críticos. Para isso, os especialistas de TI do banco configuraram o monitoramento, analisaram os dados e aprenderam a automatizar previsões. Quais ferramentas ajudaram a prever a carga e se foi possível otimizar o trabalho com sua ajuda, nós contaremos em um breve artigo.

Problemas com serviços de alta carga surgem praticamente em todos os setores, mas para a área financeira, eles são críticos. No momento X, todas as unidades operacionais devem estar prontas, por isso era necessário saber de antemão o que poderia acontecer e até mesmo determinar um dia em que a carga aumentaria, e quais sistemas enfrentariam isso. É necessário combater e prevenir falhas, portanto, a necessidade de implementar um sistema de análise preditiva nem foi discutida. Era preciso modernizar os sistemas com base nos dados de monitoramento.
Análise improvisada
O projeto de pagamento é um dos mais sensíveis em caso de falha. Além disso, é o mais compreensível para previsões, portanto, decidimos começar por ele. Devido à alta interconexão, em momentos de pico, outros subsistemas, incluindo o serviço bancário remoto (DBO), poderiam enfrentar problemas. Por exemplo, clientes, animados com SMS sobre a chegada de dinheiro, começavam a utilizá-lo ativamente. A carga, nesse caso, poderia subir mais de uma ordem de magnitude.
O primeiro modelo de previsão foi criado manualmente. Pegamos os dados do último ano e calculamos em que dias se esperavam os picos máximos: como no dia 1, 15 e 25, além dos últimos dias do mês. Esse modelo exigia um sério esforço de trabalho e não fornecia previsões precisas. No entanto, ele identificou pontos críticos onde precisávamos adicionar "hardware" e permitiu otimizar o processo de transferência de dinheiro, negociando com clientes âncora: para não realizar pagamentos "em massa", as transações de diferentes regiões foram espaçadas ao longo do tempo. Agora, as processamos em partes que a infraestrutura de TI do banco pode "digerir" sem falhas.
Após obter o primeiro resultado positivo, passamos à automação da previsão. Um outro punhado de áreas críticas estava esperando a sua vez.
Abordagem abrangente
No VTB, foi implementado um sistema de monitoramento da empresa MicroFocus. Dali, obtivemos a coleta de dados para previsão, sistema de armazenamento e sistema de geração de relatórios. Na prática, o monitoramento já existia, restando apenas adicionar métricas, um módulo preditivo e criar novos relatórios. Este projeto é suportado por um contratado externo, a 'Tekhnoserv', portanto, as principais responsabilidades de implementação recaíram sobre seus especialistas, mas nós construímos o modelo de forma independente. O sistema de previsão foi feito com base no Prophet — esse produto de código aberto desenvolvido no Facebook. É fácil de usar e se integra bem com as ferramentas de monitoramento e Vertica que temos instaladas. Simplificando, o sistema analisa o gráfico de carga e, com base nos conjuntos de Fourier, faz a sua extrapolação. Também há a possibilidade de adicionar alguns coeficientes diários, baseados em nosso modelo. As métricas são capturadas sem a intervenção humana, uma vez por semana a previsão é recalculada automaticamente, e novos relatórios são enviados aos destinatários.
Essa abordagem identifica as principais cíclicas, como anuais, mensais, trimestrais e semanais. Pagamentos de salários e adiantamentos, períodos de férias, feriados e promoções — tudo isso afeta o volume de solicitações aos sistemas. Descobriu-se, por exemplo, que alguns ciclos se sobrepõem, e a maior carga (75%) nos sistemas vem da região federal central. Pessoas jurídicas e físicas se comportam de maneiras diferentes. Enquanto a carga de 'físicos' é relativamente uniformemente distribuída ao longo da semana (muitas pequenas transações), nas empresas 99,9% ocorrem durante o horário de trabalho, com transações que podem ser curtas ou levar vários minutos e até horas para serem processadas.

Com base nos dados obtidos, são determinados tendências de longo prazo. O novo sistema revelou que as pessoas estão se afastando em massa do atendimento bancário presencial. Isso é amplamente conhecido, mas não esperávamos tal magnitude e inicialmente não acreditamos: o número de solicitações nas agências do banco está diminuindo rapidamente, enquanto cresce proporcionalmente o número de transações remotas. Assim, a carga sobre os sistemas também aumenta e continuará a aumentar. Atualmente, prevemos a carga até fevereiro de 2020. É possível prever dias normais com uma margem de erro de 3% e picos com uma margem de 10%. Este é um bom resultado.
Pontos críticos
Como é de se esperar, não faltaram dificuldades. O mecanismo de extrapolação usando séries de Fourier não se comporta bem ao cruzar a zero - sabemos que nos fins de semana, pessoas jurídicas geram poucas transações, mas o módulo de previsão fornece valores distantes de zero. Seria possível corrigi-los manualmente, mas gambiarras não são nosso método. Além disso, tivemos que resolver o problema de extração indolor de dados de sistemas fonte. A coleta regular de informações requer recursos computacionais sérios, então construímos caches rápidos usando replicação, já obtendo dados de negócios a partir das réplicas. A ausência de carga adicional nos sistemas principais, nesses casos, é uma exigência bloqueadora.
Novos desafios
A tarefa proposta de prever picos foi resolvida: não houve falhas relacionadas a sobrecargas no banco desde maio deste ano, e o novo sistema de previsão desempenhou um papel importante nisso. Sim, mostrou-se insuficiente, e agora o banco quer entender quão perigosos esses picos são para ele. Precisamos de previsões usando métricas de testes de carga, e isso já funciona para cerca de 30% dos sistemas críticos, enquanto os demais estão em processo de obtenção de previsões. Na próxima etapa, planejamos prever a carga não em transações comerciais, mas em termos de infraestrutura de TI, ou seja, iremos descer um nível. Além disso, precisamos automatizar completamente a coleta de métricas e a construção de previsões com base nelas, para não precisarmos fazer extrações manuais. Não há nada de extraordinário nisso - estamos apenas cruzando monitoramento com testes de carga de acordo com as melhores práticas globais.
Fonte: habr.com
