Build The Seam On Day One

Costruire una piattaforma per dati ad alto volume impone una scelta.

Hai bisogno di un database veloce per l'archiviazione a lungo termine. Ma configurare un sistema complesso fin dal primo giorno è difficile. Potresti non conoscere ancora i pattern dei tuoi dati. La scelta sicura è un database relazionale standard che già utilizzi.

L'errore è legare il tuo codice direttamente a quel primo database. Se ogni parte della tua applicazione chiama il database direttamente, crei una trappola. Passare a un database migliore in seguito richiederà un refactoring massiccio.

La mossa giusta è costruire una cucitura.

Una cucitura è un contratto. Definisce cosa fa il sistema senza dire come lo fa.

  • Crea un'interfaccia per il compito.
  • Scrivi un driver di base utilizzando il tuo database attuale.
  • Collega quel driver all'interfaccia.

Ogni altra parte della tua applicazione comunica solo con l'interfaccia. Nessuno sa quale database stia girando in background.

Quando i tuoi dati crescono e hai bisogno di un sistema più veloce, il lavoro è semplice. Scrivi un nuovo driver, cambi una riga di codice e lo rilasci. Nessuna dashboard si rompe. Nessuna pipeline si ferma.

Alcuni chiamano questa astrazione prematura. Dicono che non ne hai ancora bisogno.

Non sono d'accordo. Un'interfaccia ti costa un file in più. Saltarla significa solo spostare il costo a una data successiva. Quando finalmente dovrai cambiare, avrai centinaia di file da sistemare sotto pressione. Un'interfaccia è un'assicurazione economica.

Usa queste tre abitudini per rendere le tue cuciture più solide:

  • Usa identificatori doppi. Usa interi veloci per le join interne del database. Usa gli UUID per tutto ciò che esce dal tuo sistema. Questo mantiene i tuoi dati sicuri e le tue join veloci.

  • Usa gli Enum per un vocabolario condiviso. Non usare stringhe casuali per stati o gravità. Usa un singolo Enum in modo che ogni parte della tua applicazione parli la stessa lingua.

  • Usa involucri versionati per i dati. Se il tuo sistema riceve dati da molte fonti, usa uno schema rigoroso. Aggiungi solo nuovi campi. Non rimuoverli o rinominarli mai senza una nuova versione. Questo permette ai vecchi client di continuare a funzionare mentre migliori il sistema.

Trova il confine. Nominalo con un contratto. Riempilo con un'implementazione semplice.

Il contratto è la tua promessa. Il driver è solo il modo in cui mantieni quella promessa oggi.

Fonte: https://dev.to/nasrulhazim/build-the-seam-on-day-one-the-second-driver-on-day-ninety-26b