Resiliência e Disponibilidade
- Existe um SLA (acordo de nível de serviço) para a plataforma Carol?
- Onde acompanho a disponibilidade da plataforma?
- Como a plataforma evita a perda de registros recebidos pela API?
- O que acontece se a plataforma estiver indisponível no momento do envio?
- Quais mecanismos de redundância e backup a plataforma possui?
- Como os serviços e dados são recuperados em caso de incidente?
- Qual a responsabilidade dos aplicativos que enviam dados para a Carol?
1. Existe um SLA (acordo de nível de serviço) para a plataforma Carol?
A plataforma Carol é hospedada no Google Cloud Platform (GCP), que é o provedor de infraestrutura da Carol. Dessa forma, os níveis de serviço adotados pela plataforma seguem os SLAs publicados pelo Google Cloud para os serviços utilizados.
→ Veja os SLAs do Google Cloud.
Entre os principais serviços do Google Cloud utilizados pela plataforma Carol estão:
2. Onde acompanho a disponibilidade da plataforma?
A disponibilidade dos principais recursos da plataforma (Carol API, Carol APP, Data Ingestion, Data Processing, Data Subscription e serviços do Google Cloud) é publicada em https://status.carol.ai/, com histórico diário dos últimos 90 dias, métricas de tempo de resposta e taxa de erro, e o histórico de incidentes.
→ Veja mais informações na seção Status da Carol.
3. Como a plataforma evita a perda de registros recebidos pela API?
O fluxo de ingestão foi desenhado para que um registro só seja confirmado ao cliente depois de estar armazenado de forma persistente:
- Confirmação somente após persistência na fila: a API de ingestão só retorna sucesso após o registro ser aceito por uma fila de mensagens persistente. Caso a fila não confirme o recebimento, a API retorna erro ao cliente.
- Entrega garantida no processamento: um registro só é removido da fila depois de ter sido encaminhado com sucesso para a etapa seguinte (Google Pub/Sub). Se ocorrer uma falha ou reinício de serviço antes disso, o registro permanece na fila e é processado novamente de forma automática.
- Armazenamento na Staging Area: os registros são gravados na Staging Area, armazenada no BigQuery.
- Dados imutáveis: os registros armazenados na Carol são imutáveis. Quando um registro é atualizado, a plataforma preserva as versões anteriores até que o processo de consolidação seja executado.
A API de ingestão é assíncrona: o retorno HTTP 200 indica que o registro foi recebido e persistido na fila de ingestão, mas alguns segundos podem ser necessários até que ele esteja disponível na staging table ou no data model.
→ Veja mais detalhes em Enviando dados.
4. O que acontece se a plataforma estiver indisponível no momento do envio?
Se a plataforma não conseguir persistir o registro, a API de ingestão retorna um erro (por exemplo, HTTP 5xx) e o registro não é considerado recebido. Da mesma forma, quando o limite de requisições é excedido, a API retorna HTTP 429 com o cabeçalho Retry-After.
Nesses cenários, o aplicativo ou conector de origem deve manter o registro e reenviá-lo posteriormente. Veja a pergunta 7.
5. Quais mecanismos de redundância e backup a plataforma possui?
- Infraestrutura em nuvem: a plataforma é hospedada no Google Cloud Platform (GCP), com dados e servidores localizados nos Estados Unidos, utilizando serviços gerenciados que armazenam os dados de forma redundante (BigQuery e Pub/Sub).
- Criptografia: os backups são armazenados em buckets do Google com criptografia na camada de armazenamento.
6. Como os serviços e dados são recuperados em caso de incidente?
- Serviços: os serviços da plataforma possuem verificações de saúde (health checks), reinício automático de processos e retentativas com backoff nas integrações com os serviços do Google Cloud.
- Registros em processamento: registros que estavam sendo processados durante uma falha ou reinício de serviço permanecem na fila e são processados novamente de forma automática.
- Reenvio de registros: a plataforma dispõe de mecanismo para reenviar registros recebidos pela camada de ingestão, com retentativas e controle de ponto de retomada (checkpoint).
- Comunicação: incidentes e ações tomadas são publicados em https://status.carol.ai/ e no Histórico de Comunicados.
7. Qual a responsabilidade dos aplicativos que enviam dados para a Carol?
A garantia de não perda de registros de ponta a ponta é compartilhada entre a plataforma e o aplicativo que envia os dados. Recomenda-se que os aplicativos e conectores:
- Considerem um registro como entregue somente após receber retorno de sucesso (HTTP 2xx) da API de ingestão.
- Armazenem localmente os registros não confirmados e os reenviem em caso de erro, timeout ou indisponibilidade de rede.
- Implementem retentativas com backoff exponencial e respeitem o cabeçalho
Retry-Afterem respostas HTTP 429. - Utilizem um crosswalk estável, garantindo que reenvios atualizem o mesmo registro em vez de gerar duplicidade.