Sincronizar dados do Stripe: por que é difícil....
Data sync entre Stripe e seus sistemas não é cópia bobinha: modelos diferentes, REST vs relacional e o desafio real de manter estado coerente.
Resposta direta
Sync com Stripe dói porque o modelo de dados da API não mapeia 1:1 para o seu schema — e duplicatas/streaming complicam. E é usado em fortuna 500 empresas eu peço milhares de visitantes no site todos os meses hum sim, então é pagado por uh você sabe desenvolver outras ferramentas e me suportou por alguns anos então é realmente especial para mim sim,.
Por que sync Stripe ≠ sync SQL↔SQL
Então, Cal, nós nos conhecemos em um encontro, nós tivemos uma conversa interessante sobre data syncing, que é um assunto que eu tenho muito paixão nos últimos anos, mas você tem um background interessante em data. Sim, eu também tenho um interesse surpreendente em data syncing e quando você deu aquela apresentação, eu estava realmente animado porque eu sempre estou procurando para desafios de dados para resolver. O primeiro produto que eu criei foi chamado SQL Pipe e esse também é o nome da minha empresa.
Um botão de movimento de dados, mas, eventualmente, eu descobri que as pessoas estavam usando isso para fazer migrações de dados e isso requer um live de data syncing se você quiser mover um database sem desacordo. Você e clientes de Stripe estão tentando resolver, que é sincar dados de diferentes sistemas com modelos de dados diferentes, como uma REST API e uma database relacional. Então por que sincar dados de Stripe é mais difícil do que parece quando você está tentando sincar com seus próprios sistemas?
REST vs relacional na prática
A melhor prática recomendada por você e o time da Stripe para sincronizar entre um database e seu account Stripe. Porque o que acontece, eu não tenho que te dizer, mas só para o vídeo, se você fazer uma mudança no seu database, ele será replicado para Stripe através desses sistemas, mas então Stripe vai reportar uma mudança. E Stripe tem essa coisa chamada item potency key em sua API, mas não todos os sistemas tem isso.
Então, se você quiser se conectar com o Stripe e sua database e algo mais, que eventualmente você vai chegar, isso se torna um desafio. Então, a menos que você tenha a inteligência incrível de chamar o preço do seu produto de quantidade de unidades em sua database, então você vai ter que lembrar disso e se apreciar por isso para sempre, em múltiplos lugares, onde quer que você esteja fazendo essa transformação. Então, voltando um pouco para a SQL Pipe, você é o fundador disso, mas para aqueles que não estão familiarizados com o que é, dê-nos um pouco de background sobre o que você construiu e quais os problemas que ele resolve.
Na prática
Sync com Stripe dói porque o modelo de dados da API não mapeia 1:1 para o seu schema — e duplicatas/streaming complicam.
Duplicatas e streaming no caminho
Eu sou originalmente de Boston e eu continuo a entrar nesse mesmo problema que essas empresas estavam fazendo trabalhos de ETL de grande quantidade todas as noites, basicamente, completamente reforçando seu caixa de dados. E não havia nada que parecia fazer um bom trabalho nisso, pelo menos não algo pequeno, eficiente, meio que como a filosofia do Unix de um pequeno ferramenta que faz uma coisa bem. E é usado em fortuna 500 empresas eu peço milhares de visitantes no site todos os meses hum sim, então é pagado por uh você sabe desenvolver outras ferramentas e me suportou por alguns anos então é realmente especial para mim sim, do meu ponto de vista eu consigo entender o valor disso eu vi esse problema em praticamente todos os roles que eu já tive agora remix é algo novo, claro, então nos diga sobre isso Bem, o Remix começou quando eu assisti a sua apresentação no Stripe London.
E Albatross nunca realmente saiu do jeito que eu queria, mas eu aprendi a replicar dados entre dois sistemas e verificar que eles estão em sincronização enquanto eu estava fazendo isso. Quando eu estava construindo Remix, ele continuava a ficar mais e mais longe da base de código original, que eventualmente eu estava tipo, sabe o que, eu vou copiar tudo para um novo repositório e simplesmente deletar todo o código da old sql pipe, porque é tão diferente. Provavelmente a coisa mais comum ainda até hoje, mesmo que haja um monte de ferramentas que tentaram resolver esse problema, é que você é uma grande empresa com um monte de databases e você só seleciona a estrela das suas mesas todas as noites e as põe em alguns centrais centralizados.
O que times de billing aprendem na dor
Eu quero dizer, há plataformas de streaming de dados lá fora, mas eu acho que muitas empresas só se deducem a usar Kafka e a construir sua própria lista gigante de tópicos. Então é apenas um paradigma completamente diferente, onde ao invés de mover um monte de dados de vez em quando, de noite, ou algo assim, você está constantemente mantendo seus dados refrigidos em vários sistemas, mas isso cria muitos novos desafios. Então aqui você tem que expor algum endpoints de API externo, você tem que ter toda essa lógica, enquanto Remix é apenas uma ferramenta que você pode usar em Kubernetes.
E uma boa dica que eu gosto é que eu incluí no file docker o cli do Stripe com o listener do webhook. Então você não precisa nem configurar um endpoints externos para enviar os webhooks, que eu tenho certeza que falaremos sobre isso. Então, em um exemplo muito concreto, se você está tentando sincronizar algo como balanços de clientes ou dados de envio, o que isso parece?
Pontos de verificação antes de 'só um ETL'
Temos uma ID, temos uma ID Stripe, que pode ser a string que vem da API Stripe. E basicamente o que estamos dizendo a todos é que esta é a ideia de nossos negócios de como um registro de produto deveria parecer. Então, eu tenho certeza que você sabe, mas aqui é o que um Stripe, aqui é como Stripe modela um produto e um preço.
Então aqui temos um preço e poderíamos ter um o ID do preço e o produto e então temos o preço. E a Stripe precisa fazer isso porque seus clientes precisam vender coisas em diferentes países, com diferentes preços, com diferentes quarentenas, etc. Mas isso se torna realmente desafiador para alguma empresa que não tem o foresight para separar seus produtos e seus preços em tabelas separadas.
Sinais de que está funcionando
E muitas vezes eles só têm algum sistema de IT de legado onde não é realmente possível mudar a arquitetura inteira de um sistema como esse. Uma das razões pela qual eu acho que isso é um problema fascinante, e eu fiz a palestra originalmente, é que realmente é um problema de escala. Eu gostaria de separar a Q de funcionar no disco do server Remix para algo como Redis, que pode ser usado em um serviço managado na Amazon.
Então como funciona bem com sistemas internos que podem variar de Postgres para BigQuery para APIs internas e outras coisas? Para standardizar o dados que vem de cada um desses drivers e então o que você faz é marcar esse dados na forma de um dos modelos de dados canônicos que você definiu por exemplo, talvez uma database de Postgres esteja reportando alguns dados, você precisa transformá-lo em uma forma e nomes de campo que sejam assim com os próprios tipos então essa é a chave para escalar suas integrações é apenas Encontrar bons drivers e normalizar os dados que vem de dentro. Então, se você quisesse criar alguma solução de streaming de dados interno, você saberia que você teria que encontrar pessoas que conhecem Kafka, que conhecem o Kafka Connect para conectar com tudo.
O que evitar na primeira semana
Eles terão que escrever um código de transformação custom para enviar dados para e para Stripe e estou procurando pessoas que só querem fazer o trabalho feito, então digamos que você é uma startup de AI rapidamente crescente e você está achando que você tem que vender seu produto em um monte de países diferentes em um monte de diferentes criptomoedas e você não quer manter esse dados em vários lugares isso seria ideal para você sincronizar sua aplicação interna com todos os seus preços e você sabe Produtos que precisam viver em Stripe. Se você já tem Kafka, se você já está familiarizado com algo como Debezium e escreveu tópicos customizados, então, isso ainda pode ser útil para você, mas você pode só querer usar a ferramenta que você já está confortável com. Agora, colocando nossas mentes muito em frente ao que o futuro parece, o que você acha de alguns dos mudanças e evoluções e integrações futuras com os servidores de SaaS e Stripe?
E mesmo que cada um dos campos não esteja contido em cada um dos sistemas, seria ótimo olhar cada um desses sistemas e ver que os mesmos dados estão lá. Quero dizer, ter uma visão holística de seus dados é útil para literalmente cada parte de uma operação de um negócio hoje em dia, especialmente as mais avançadas. Mas, no próximo, vamos ter o Carl para nos dar uma demo de Remix, mas se você quiser dar uma olhada, vá para sqlpipe.com forward slash products forward slash remix.
Na prática
Próximo passo para «stripe-data-sync-cal-mitchell»: rode um experimento de 7 dias com uma métrica ligada a stripe data sync desafios integracao antes de escalar o padrão.
Perguntas frequentes
Se você atacar «REST vs relacional na prática» primeiro, o que muda em 48h?
Resposta direta do corpo: A melhor prática recomendada por você e o time da Stripe para sincronizar entre um database e seu account Stripe. Porque o que acontece, eu não tenho que te dizer, mas só para o vídeo, se você fazer uma mudança no seu database, ele será replicado para Stripe.
Como amarrar «Duplicatas e streaming no caminho» a uma métrica única?
Extraia só o mecanismo de «Duplicatas e streaming no caminho»: Eu sou originalmente de Boston e eu continuo a entrar nesse mesmo problema que essas empresas estavam fazendo trabalhos de ETL de grande quantidade todas as noites, basicamente, completamente reforçando seu caixa de dados. E não havia nada que parecia fazer um.
Qual erro de execução «O que times de billing aprendem na dor» tenta evitar?
Operação curta: Eu quero dizer, há plataformas de streaming de dados lá fora, mas eu acho que muitas empresas só se deducem a usar Kafka e a construir sua própria lista gigante de tópicos. Então é apenas um paradigma completamente diferente, onde ao invés de mover um monte de. Revise com evidência, não com feeling.
Como explicar «Pontos de verificação antes de 'só um ETL'» sem virar checklist motivacional?
Do texto: Temos uma ID, temos uma ID Stripe, que pode ser a string que vem da API Stripe. E basicamente o que estamos dizendo a todos é que esta é a ideia de nossos negócios de como um registro de produto deveria parecer. Então, eu tenho certeza que você sabe, mas aqui.