Construye la costura desde el primer día
Construir una plataforma para datos de alto volumen obliga a tomar una decisión.
Necesitas una base de datos rápida para el almacenamiento a largo plazo. Pero configurar un sistema complejo desde el primer día es difícil. Es posible que ni siquiera conozcas aún tus patrones de datos. La opción segura es una base de datos relacional estándar que ya utilices.
El error es vincular tu código directamente a esa primera base de datos. Si cada parte de tu aplicación llama a la base de datos directamente, creas una trampa. Cambiar a una mejor base de datos más adelante requerirá una refactorización masiva.
El movimiento correcto es construir una costura.
Una costura es un contrato. Define qué hace el sistema sin decir cómo lo hace.
- Crea una interfaz para la tarea.
- Escribe un driver básico utilizando tu base de datos actual.
- Vincula ese driver a la interfaz.
Todas las demás partes de tu aplicación se comunican únicamente con la interfaz. Nadie sabe qué base de datos se está ejecutando en segundo plano.
Cuando tus datos crezcan y necesites un sistema más rápido, el trabajo será sencillo. Escribes un nuevo driver, cambias una línea de código y lo lanzas. Ningún dashboard se rompe. Ningún pipeline se detiene.
Algunas personas llaman a esto abstracción prematura. Dicen que aún no la necesitas.
No estoy de acuerdo. Una interfaz te cuesta un archivo adicional. Saltártela solo traslada el coste a una fecha posterior. Cuando finalmente necesites realizar el cambio, tendrás cientos de archivos que arreglar bajo presión. Una interfaz es un seguro económico.
Utiliza estos tres hábitos para fortalecer tus costuras:
Usa identificadores duales. Usa enteros rápidos para los joins internos de la base de datos. Usa UUIDs para cualquier cosa que salga de tu sistema. Esto mantiene tus datos seguros y tus joins rápidos.
Usa Enums para un vocabulario compartido. No uses strings aleatorios para estados o severidades. Usa un único Enum para que cada parte de tu aplicación hable el mismo idioma.
Usa envoltorios (envelopes) versionados para los datos. Si tu sistema recibe datos de muchas fuentes, utiliza un esquema estricto. Solo añade campos nuevos. Nunca los elimines ni los renombres sin una nueva versión. Esto permite que los clientes antiguos sigan funcionando mientras mejoras el sistema.
Encuentra el límite. Nómbralo con un contrato. Llénalo con una implementación sencilla.
El contrato es tu promesa. El driver es simplemente la forma en que cumples esa promesa hoy.
Fuente: https://dev.to/nasrulhazim/build-the-seam-on-day-one-the-second-driver-on-day-ninety-26b
