Arquitetura real · Sênior
Airbnb: evitando pagamento duplo (Orpheus)
Arquitetura real em produção. Pontos centrais: Operações Idempotentes e Transações Distribuídas.
Resposta curta
Arquitetura real em produção. Pontos centrais: Operações Idempotentes e Transações Distribuídas. O Airbnb vinha migrando sua infraestrutura para uma arquitetura orientada a serviços (SOA). A fonte lista ganhos, como especialização dos desenvolvedores e iteração mais rápida, e aponta que, para cobrança e pagamentos, ficou mais difícil manter a integridade dos dados.
01 · CONTEXTO
Pagamentos em uma arquitetura orientada a serviços
O Airbnb vinha migrando sua infraestrutura para uma arquitetura orientada a serviços (SOA). A fonte lista ganhos, como especialização dos desenvolvedores e iteração mais rápida, e aponta que, para cobrança e pagamentos, ficou mais difícil manter a integridade dos dados.
Uma chamada de API a um serviço que chama outros serviços a jusante, cada um mudando estado e possivelmente com efeitos colaterais, equivale a executar uma complexa transação distribuída.
Um cliente faz uma chamada de API a um serviço de pagamentos.
Esse serviço faz outras chamadas de API a serviços a jusante.
Cada serviço a jusante muda estado e pode ter efeitos colaterais.
O conjunto equivale a executar uma transação distribuída complexa.
02 · CONSISTÊNCIA
Consistência quando não há uma transação única
Para garantir consistência entre todos os serviços, a fonte menciona que protocolos como o commit em duas fases poderiam ser usados. Sem um protocolo desse tipo, as transações distribuídas dificultam manter a integridade dos dados, permitir degradação graciosa e alcançar consistência.
Além disso, requisições inevitavelmente falham em sistemas distribuídos: conexões caem e expiram em algum momento, sobretudo em transações que reúnem várias requisições de rede.
A fonte nomeia três técnicas comuns para alcançar consistência eventual: reparo na leitura, reparo na escrita e reparo assíncrono.
| Técnica | O que a fonte diz |
|---|---|
| Reparo na leitura | Citado como uma das três técnicas comuns, sem detalhe na parte pública do artigo |
| Reparo na escrita | Cada chamada de escrita do cliente ao servidor tenta reparar um estado inconsistente |
| Reparo assíncrono | O servidor roda verificações de consistência, como varreduras de tabela, funções lambda e cron jobs |
Notificações assíncronas do servidor ao cliente também são amplamente usadas na indústria de pagamentos para forçar a consistência no lado do cliente.
03 · A ESCOLHA
Reparo na escrita e idempotência
A solução descrita no post usa reparo na escrita: cada chamada de escrita do cliente ao servidor tenta reparar um estado inconsistente. A fonte observa que o reparo na escrita exige clientes mais inteligentes.
O subtítulo do artigo apresenta o resultado como um framework genérico de idempotência, construído para alcançar consistência eventual e correção na arquitetura de microsserviços de pagamentos.
Uma operação idempotente tem o mesmo efeito quando executada uma vez ou várias vezes.
Na estratégia de reparo na escrita, o cliente envia uma chamada de escrita ao servidor.
O serviço propaga a escrita a um serviço a jusante, que muda estado.
Conexões caem e expiram em algum momento, sobretudo em transações com várias requisições de rede.
Cada chamada de escrita do cliente ao servidor tenta reparar um estado inconsistente.
Verificações assíncronas rodadas pelo servidor funcionam como segunda linha de defesa.
04 · LIMITES DA FONTE
O que a parte pública cobre
A página marca o artigo como história exclusiva para membros, e o texto público se interrompe logo depois de afirmar que o reparo na escrita exige clientes mais inteligentes. Este caso se limita, portanto, ao problema e à estratégia de consistência apresentados nessa parte.
Perguntas frequentes
O que é Airbnb: evitando pagamento duplo (Orpheus)?
Arquitetura real em produção. Pontos centrais: Operações Idempotentes e Transações Distribuídas.
O que o design de Airbnb: evitando pagamento duplo (Orpheus) cobre?
Ele está organizado nestas seções: Pagamentos em uma arquitetura orientada a serviços, Consistência quando não há uma transação única, Reparo na escrita e idempotência e O que a parte pública cobre.
Quanto tempo leva Airbnb: evitando pagamento duplo (Orpheus) e qual é o nível?
Leva cerca de 17 minutos para ler e tem nível Sênior.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.