Data engineering

Dalla complessità alla chiarezza. Sostituire Debezium con Openflow per Snowflake

Di recente abbiamo iniziato a collaborare con un nuovo cliente del settore healthcare e life sciences che aveva investito in modo significativo in Debezium per la pipeline da SQL Server a Snowflake. Sulla carta, la scelta aveva senso: Debezium è lo standard di settore per la change data capture (CDC) distribuita. È open source e robusto e, soprattutto, non prevede costi di licenza.

Tuttavia, il prezzo “zero dollari” di Debezium si è rivelato più simile a un cucciolo regalato che a una birra gratis. Il risparmio iniziale è stato rapidamente superato dalla complessità operativa legata alla gestione dei cluster Kafka Connect e dall’attrito costante dovuto all’evoluzione degli schemi. Alla fine, le ore di lavoro richieste solo per “mantenere tutto operativo” hanno lasciato il cliente ricco di infrastruttura ma povero di dati.

Il cliente aveva bisogno di una soluzione near real-time che non richiedesse un team dedicato di ingegneri a fare da babysitter. Per questo ha deciso di migrare l’intera architettura a Snowflake Openflow.

L’obiettivo era apparentemente semplice: Sincronizzare i dati di SQL Server con Snowflake in near real-time. Con una finestra di latenza compresa tra uno e cinque minuti, non si trattava solo di velocità; la missione richiedeva una pipeline resiliente, scalabile e, soprattutto, gestibile.

Il contesto: Requisiti di scalabilità e performance

Per capire perché la manutenzione di Debezium fosse diventata insostenibile, è importante considerare il volume di dati in movimento. Non si trattava della sincronizzazione di una singola tabella, ma del cuore operativo dell’analisi del cliente.

Ecco una panoramica numerica delle dimensioni del progetto:

  • Totale istanze SQL Server: 19
  • Totale database: 540, distribuiti su 19 istanze
  • Totale tabelle: Circa 129600, poiché ogni database conteneva ~240 tabelle
  • Obiettivo di latenza: Una finestra rigorosa di uno-cinque minuti dal momento in cui una transazione raggiunge SQL Server a quando diventa interrogabile in Snowflake

A questa scala, anche un piccolo problema nel vecchio design causava un enorme backlog. Con il “vecchio approccio”, recuperare dopo un’interruzione di 30 minuti poteva richiedere ore di intervento manuale. Il cliente aveva bisogno di un sistema in grado di gestire questi volumi senza monitoraggio costante.

Il peso dell’eredità: Un’architettura Debezium multihop

Figure 1: Architecture diagram of SQL server ingestion using Debezium.
Figure 1: Architecture diagram of SQL server ingestion using Debezium.

L’architettura legacy: Un sistema a sette livelli di complessità

Prima della migrazione, i dati seguivano un percorso lungo e tortuoso dalla fonte alla dashboard finale degli analisti. Il workflow era il seguente:

  1. Il trigger: Debezium si collegava ai log CDC di SQL Server per intercettare le modifiche a livello di riga.
  2. L’intermediario: Questi eventi venivano serializzati e inviati a specifici Kafka Topics.
  3. Il ponte: Un cluster Kafka Connect separato era necessario per interrogare quei topic e tentare di inviare i dati nell’area di staging di Snowflake.
  4. L’atterraggio raw: I dati arrivavano in Snowflake come blob “raw JSON”, ovvero un insieme disordinato di metadati e payload annidati.
  5. La pulizia: Poiché gli eventi Debezium sono racchiusi in strutture complesse con stati before e after, era necessario scrivere e mantenere task personalizzati in Snowflake.
  6. L’appiattimento: Questi task venivano attivati periodicamente per analizzare il JSON e trasformare i dati in formato relazionale.
  7. Il merge finale: Solo allora i dati potevano essere uniti alle tabelle di produzione finali per l’utilizzo.

Perché questo rappresentava un “overhead operativo”

Ogni freccia nella Figura 1 rappresenta un potenziale punto di errore. Se il worker Kafka Connect era in ritardo, i dati arrivavano in ritardo. Se il task Snowflake falliva, la tabella raw si riempiva di dati non elaborati. Non stavamo solo spostando dati; stavamo gestendo un ecosistema complesso di servizi interdipendenti.

Semplificare lo stack: Il modello di ingestione diretta Openflow

Figure 2: Architecture diagram of SQL Server ingestion using Snowflake Openflow.
Figure 2: Architecture diagram of SQL Server ingestion using Snowflake Openflow.

L’evoluzione Openflow: Semplificare lo stack

Se la Figura 1 rappresenta un “overhead operativo”, la Figura 2 mostra un volo diretto. Quando abbiamo introdotto Openflow, il “rumore” architetturale è scomparso. Invece di una staffetta multihop con Debezium, MSK, Kafka Connect e task Snowflake manuali, siamo passati a un approccio diretto da SQL Server a Snowflake.

Come Openflow ha ridefinito la pipeline:

  • Tracciamento delle modifiche nativo: Invece della CDC, il connettore Openflow per SQL Server utilizza il change tracking nativo per individuare le transazioni con precisione chirurgica.
  • Evoluzione dello schema automatizzata: Uno dei maggiori problemi con Debezium, ovvero la deriva dello schema, è diventato irrilevante. Openflow rileva automaticamente le modifiche alla fonte e aggiorna le tabelle Snowflake in tempo reale. Niente più pipeline interrotte perché un DBA ha aggiunto una colonna.
  • Ingestione diretta in Snowflake: Abbiamo eliminato completamente Kafka. Openflow gestisce l’ingestione direttamente in Snowflake, eliminando la necessità di storage intermedi o cluster di calcolo esterni.
  • Eliminazione dei task personalizzati: Poiché Openflow fornisce i dati in un formato pronto all’uso, il cliente ha potuto eliminare la propria libreria di task complessi di flattening e script di merge in Snowflake.

Confronto

Confrontiamo Debezium e Openflow utilizzando metriche operative reali tratte dall’ambiente di produzione del cliente.

Aspetto Debezium Openflow
Meccanismo CDC CDC (pesante) Change tracking (leggero)
Overhead su SQL Server Maggiore Minore
Orchestrazione della pipeline Personalizzata/manuale Gestita da Snowflake
Complessità di deployment Molto alta Da bassa a moderata
Metadati dello schema Emette eventi CDC strutturali con metadati dello schema incorporati nei messaggi Kafka Gestisce automaticamente i metadati dello schema in Snowflake
Creazione delle tabelle in Snowflake Gestita manualmente Gestita automaticamente dal connettore
Evoluzione dello schema Le modifiche devono essere rilevate e applicate manualmente Gestita automaticamente dal connettore
Flusso dei dati SQL Server->Kafka Topics->Kafka Connect->tabelle raw->task di merge personalizzati->tabella finale SQL Server->tabella finale Snowflake
Merge e trasformazione Task Snowflake personalizzati necessari per appiattire il JSON e unire le righe CDC Gestita automaticamente dal connettore
Confine di responsabilità Debezium elabora solo gli eventi verso Kafka. L’elaborazione a valle deve essere progettata e mantenuta Pipeline end-to-end gestita da Openflow
Osservabilità Personalizzata Out of the box

Qui confrontiamo Debezium e Openflow anche in termini di costi reali basati su un ambiente di produzione.

Aspetto Debezium Openflow
Costo di licenza  Open source, nessun costo di licenza per il connettore Nessuna licenza di prodotto separata per Openflow
Costi infrastrutturali Richiede l’ecosistema Kafka: MSK/Kafka broker + worker Kafka Connect Richiede il deployment Openflow BYOC nel VPC del cliente. Automatizzato tramite CloudFormation.
Costi operativi Molto elevati, a causa di scalabilità, manutenzione e monitoraggio Kafka. È necessario un team di supporto L2 dedicato alla gestione. Inferiori. Il deployment Openflow BYOC è una responsabilità condivisa tra Snowflake e cliente, con Snowflake che automatizza tutti i passaggi.
Costo Snowflake Storage, warehouse, Snowpipe/Snowflake sink connector Storage, warehouse, Snowpipe Streaming, compute Openflow

Conclusione: È il momento di semplificare?

Passare da Debezium a Openflow non significa solo cambiare strumento, ma recuperare tempo di ingegneria. Eliminando l’intermediario Kafka, il cliente non ha solo ridotto i costi infrastrutturali, ma ha ottenuto una pipeline più resiliente e auto-ripristinante, che scala senza babysitting continuo.

Se il tuo team è attualmente “ricco di infrastruttura e povero di dati”, potrebbe essere il momento di semplificare lo stack.

semplifica l’ingestion in Snowflake

Ecco come fare il passo successivo:

  • Valuta il tuo overhead: Analizza le ore attualmente dedicate alla manutenzione di Debezium/Kafka. Se trascorri più di due ore a settimana a “sistemare l’infrastruttura”, sei un candidato ideale per Snowflake Openflow.
  • Guardalo in azione: Visita il nostro sito web per scoprire come Openflow gestisce nativamente il change tracking di SQL Server e automatizza l’evoluzione dello schema in Snowflake.
  • Avvia un pilot: Configura una proof of concept (POC) e confronta la stabilità della latenza uno-cinque minuti di Openflow con il tuo attuale setup Debezium.

Subscribe to our blog newsletter

Get the best, coolest and latest delivered to your inbox each week

Where Data Does More

  • prova gratuita di 30 giorni
  • nessuna carta di credito
  • annulli quando vuoi