Construa a Costura no Primeiro Dia
Construir uma plataforma para dados de alto volume força uma escolha.
Você precisa de um banco de dados rápido para armazenamento de longo prazo. Mas configurar um sistema complexo no primeiro dia é difícil. Você pode nem conhecer seus padrões de dados ainda. A escolha segura é um banco de dados relacional padrão que você já utiliza.
O erro é vincular seu código diretamente a esse primeiro banco de dados. Se cada parte do seu aplicativo chamar o banco de dados diretamente, você criará uma armadilha. Mudar para um banco de dados melhor mais tarde exigirá uma refatoração massiva.
O movimento correto é construir uma costura.
Uma costura é um contrato. Ela define o que o sistema faz sem dizer como ele faz.
- Crie uma interface para a tarefa.
- Escreva um driver básico usando seu banco de dados atual.
- Vincule esse driver à interface.
Todas as outras partes do seu aplicativo conversam apenas com a interface. Ninguém sabe qual banco de dados está rodando em segundo plano.
Quando seus dados crescerem e você precisar de um sistema mais rápido, o trabalho será simples. Você escreve um novo driver, altera uma linha de código e o envia. Nenhum dashboard quebra. Nenhum pipeline para.
Algumas pessoas chamam isso de abstração prematura. Elas dizem que você ainda não precisa disso.
Eu discordo. Uma interface custa apenas um arquivo extra. Pulá-la apenas transfere o custo para uma data posterior. Quando você finalmente precisar mudar, terá centenas de arquivos para corrigir sob pressão. Uma interface é um seguro barato.
Use estes três hábitos para tornar suas costuras mais fortes:
Use identificadores duplos. Use inteiros rápidos para joins internos de banco de dados. Use UUIDs para qualquer coisa que saia do seu sistema. Isso mantém seus dados seguros e seus joins rápidos.
Use Enums para vocabulário compartilhado. Não use strings aleatórias para status ou severidades. Use um único Enum para que cada parte do seu aplicativo fale a mesma língua.
Use envelopes versionados para dados. Se o seu sistema recebe dados de muitas fontes, use um schema rigoroso. Adicione apenas novos campos. Nunca os remova ou renomeie sem uma nova versão. Isso mantém os clientes antigos funcionando enquanto você melhora o sistema.
Encontre o limite. Nomeie-o com um contrato. Preencha-o com uma implementação simples.
O contrato é a sua promessa. O driver é apenas como você mantém essa promessa hoje.
Fonte: https://dev.to/nasrulhazim/build-the-seam-on-day-one-the-second-driver-on-day-ninety-26b
