Instabilidade na plataforma da Clicksign
Incident Report for Clicksign
Postmortem

Resumo do incidente

Na última quinta-feira, 04/08/2022, registramos uma instabilidade ocasionada por um conjunto de fatores que causou um pico de utilização da Clicksign. O fato gerou a indisponibilidade parcial da plataforma no período entre 11:53 e 17:09, no horário de Brasília.Este incidente ocasionou instabilidades no envio de documentos para assinatura, no processo de assinatura dos signatários, além do atraso para recebimento de e-mails.

Como contingência, aumentamos a capacidade de processamento, porém a situação demorou a se normalizar.

Foi o incidente de maior duração da nossa plataforma e se trata de uma exceção. Confira o histórico de disponibilidade em nossa Página de Status (https://status.clicksign.com/uptime).

Por mais que instabilidade e quedas são passíveis de ocorrer, pedimos desculpas pelo ocorrido e sabemos como a Clicksign é fundamental para o funcionamento de muitos negócios. Reafirmamos nosso compromisso em fornecer estabilidade ímpar na plataforma.

Cronograma

Recebemos o primeiro alarme às 11:53 do dia 04/08/2022, informando que havia fila em nosso sistema. Esse alarme é normal e temos procedimentos “in place” quando esse tipo de situação ocorre. Na maioria das vezes, o sistema escala automaticamente e a fila é zerada em alguns instantes.

Após 9 minutos do alarme inicial, recebemos um alarme com a informação de pico de CPU em um dos nossos bancos de dados e neste momento, seguimos o protocolo padrão, onde realizamos o rollback dos últimos deploys e desativamos as últimas funcionalidades que entraram em produção, eliminando assim a hipótese de algum novo código com bug ter entrado em produção com problemas.

O time de DBA identificou que as consultas que estavam sendo realizadas no banco de dados naquele momento não tinham problemas de performance e, sim, de quantidade de consultas simultâneas.

O ambiente foi escalado para o nível máximo configurado no autoscaling e, mesmo assim, continuava cada vez mais lento e as filas de processamento acumulando mais jobs.

Nesse momento, identificamos que o tempo de resposta de um fornecedor de autenticação estava muito elevado, o que também ocasionava em maior tempo de espera para concretização das assinaturas.

Aqui fizemos um upgrade no broker que armazena as filas, pois a quantidade de conexões e requisições (throughput) estava perto de atingir seus limites. Começou, então, um ciclo vicioso: quanto mais demorava para o problema ser solucionado, mais solicitações eram geradas, maior ficava a fila de processamento e maior era o tempo de espera dos usuários.

Para sanar esta situação, às 13:49, desabilitamos o módulo de assinatura de documentos. Com isso, derrubamos a quantidade de requisições e os números começaram a melhorar. Às 15:21, a fila foi zerada, possibilitando o recebimento da assinatura dos signatários.

Após 20 minutos, a mesma situação voltou a ocorrer. A fila começou a aumentar novamente e chegamos a 50% do tamanho da fila anterior. Voltamos a bloquear o serviço de assinatura às 15:45.

Fizemos um novo upgrade do broker, que gerencia as filas, e também bloqueamos usuários que estavam fazendo uso abusivo da aplicação durante o incidente.

Às 16:38, o processamento voltou a zerar e liberamos novamente o módulo de assinatura. O monitoramento ativo continuou até o final do dia.

Alguns eventos precisaram ser reprocessados, como o disparo de alguns Webhooks, e isso foi feito na manhã do dia seguinte, 05/08.

Causa raiz:

O que ocorreu foi a conjunção dos seguintes fatores:

  • Fornecedor com alto tempo de resposta travou workers;
  • Workers travados gerou fila de jobs;
  • Módulo de assinatura gerava muitas requisições aguardando jobs travados;
  • Alto consumo de memória, processamento e uso do banco de dados;
  • Uso abusivo da aplicação por usuários.

Medidas Corretivas e Preventivas

  • Observabilidade: Criamos novos alarmes de Observabilidade nos pontos identificados e mais profundos. Assim, saberemos com antecedência se essa situação voltar a ocorrer.
  • Broker de filas: Nos próximos dias, passaremos a utilizar os brokers em formato diferente do atual, de forma que suporte maior número de conexões e requests.
  • Fila de processamento: Vamos utilizar outra fila de processamento para realizar as chamadas para fornecedores, de forma que blinde o ambiente para que não ocorra mais os gargalos nas demandas.
  • Módulo de assinatura de documentos: O aumento de signatários tentando realizar a assinatura de documentos cresceu de forma exponencial durante o incidente. Vamos passar a utilizar cache e outros mecanismos nessa parte da aplicação para garantir que um aumento de volume de requisições seja melhor suportado.
Posted Aug 05, 2022 - 16:20 GMT-03:00

Resolved
A instabilidade foi solucionada.

A plataforma e a API estão operando normalmente.
Posted Aug 04, 2022 - 17:19 GMT-03:00
Monitoring
Seguimos investigando a instabilidade na Plataforma da Clicksign.

Esse comportamento pode afetar tanto a interface como a API.

Em aproximadamente 30 minutos retornamos com uma nova atualização.
Posted Aug 04, 2022 - 16:40 GMT-03:00
Update
Seguimos investigando a instabilidade na Plataforma da Clicksign.

Esse comportamento pode afetar tanto a interface como a API.

Em aproximadamente 30 minutos retornamos com uma nova atualização.
Posted Aug 04, 2022 - 16:16 GMT-03:00
Identified
Identificamos uma instabilidade na Plataforma da Clicksign.

Esse comportamento pode afetar tanto a interface como a API.

Em aproximadamente 30 minutos retornamos com uma atualização.
Posted Aug 04, 2022 - 15:35 GMT-03:00
This incident affected: Clicksign (app.clicksign.com) (Aplicação, API).