Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(correlationID): improve documentation #768

Merged
merged 1 commit into from
Jan 2, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 27 additions & 6 deletions docs/concepts/correlation-id.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,35 @@ tags:
- idempotencia
---

## Correlation ID
Ao lidar com a comunicação entre sistemas distribuídos e serviços em uma aplicação, um aspecto crítico é a identificação e o rastreamento de transações específicas. O Correlation ID (ID de Correlação) desempenha um papel fundamental nesse processo. Vamos explorar a formatação adequada do Correlation ID e fornecer um exemplo prático para ilustrar sua implementação.

Correlation ID é o ID do seu sistema.
## O que é um Correlation ID?

Ele garante que uma requisição não seja processada mais de uma vez.
Um Correlation ID é um identificador exclusivo associado a uma transação ou solicitação específica que percorre todo o ciclo de vida da operação, desde a entrada até a saída do sistema. Isso é essencial para rastrear e correlacionar eventos e logs relacionados a uma determinada transação, facilitando a depuração e o monitoramento de sistemas complexos.

Ao criar uma cobrança Pix você deve enviar um ID único para cada requisição.
## Formato Recomendado

Garantindo que você não cria 2 cobranças para o seu mesmo pedido.
O formato do Correlation ID deve ser consistente e fácil de gerar, interpretar e comparar. Recomenda-se o uso de uma sequência alfanumérica única, como um UUID (Universally Unique Identifier) ou um GUID (Globally Unique Identifier). Esses formatos geralmente possuem uma estrutura semelhante a:

Mesmo que uma cobrança esteja removida, não é possível utilizar o seu correlationID em uma nova cobrança.
Exemplos:
123e4567-e89b-12d3-a456-426655440000

Onde cada caractere é uma representação hexadecimal.

## Exemplo Prático

Vamos considerar um cenário em que estamos desenvolvendo um serviço de pagamento em um ambiente de microserviços, onde várias solicitações são processadas simultaneamente. Ao receber uma solicitação de pagamento, geramos um Correlation ID único para essa transação. Aqui está um exemplo de implementação em Python:

```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing python flag on the codeblock for syntax highlighting

import uuid

def process_payment(request):
correlation_id = str(uuid.uuid4())
# Restante do processamento da solicitação com o uso do Correlation ID
```

Neste exemplo, a biblioteca UUID do Python é usada para criar um ID de Correlação único sempre que uma solicitação de pagamento é recebida. Esse ID pode ser incluído em registros de log, cabeçalhos de solicitação e respostas, permitindo o rastreamento da transação em todo o sistema.

## Conclusão

O Correlation ID desempenha um papel crucial na rastreabilidade e no monitoramento de sistemas distribuídos. Ao adotar um formato consistente, como UUID ou GUID, os desenvolvedores podem garantir a eficácia do rastreamento de transações na plataforma da OpenPix, simplificando a depuração e melhorando a visibilidade operacional. Certifique-se de seguir as melhores práticas ao implementar o Correlation ID em sua aplicação.