Pular para o conteúdo principal

tutorial: Fluxo de trabalho de desenvolvimento baseado em branch

info

Beta

O Lakebase Postgres (beta com escalonamento automático) é a próxima versão do Lakebase, disponível apenas para avaliação. Para cargas de trabalho de produção, utilize a versão de pré-visualização pública do Lakebase. Consulte a seção "Como escolher entre as versões" para entender qual versão é a mais adequada para você.

Aprenda a usar branches de banco de dados como branches Git , dando a cada desenvolvedor um branch de banco de dados isolado para trabalho independente e, em seguida, reinicie para manter a sincronização.

Pré-requisitos

  • Um projeto Lakebase (vem com branches production e development )
  • Conhecimento básico de SQL e Postgres

Configure seu esquema inicial

Antes de criar sua ramificação de desenvolvedor, configure um esquema simples nessa ramificação. Isso serve como ponto de partida comum a partir do qual todos os desenvolvedores irão criar versões derivadas. Ao criar sua ramificação pessoal, ela herda instantaneamente esse esquema por meio do recurso de cópia em gravação (copy-on-write).

  1. Navegue até sua ramificação de desenvolvimento na interface do usuário do Lakebase.
  2. Abra o Editor SQL.
  3. Crie uma tabela básica de usuários com dados de exemplo:
SQL
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT NOW()
);

INSERT INTO users (email) VALUES
('alice@example.com'),
('bob@example.com'),
('charlie@example.com');

Crie sua ramificação de desenvolvedor.

Cada desenvolvedor da sua equipe pode ter uma branch de longa duração para trabalhos em andamento. Reset periodicamente para manter a sincronização com o dispositivo principal.

Na lista de ramificações do seu projeto, selecione a ramificação de desenvolvimento e clique em Criar ramificação filha . Dê o nome de dev/alex (seguindo o padrão dev/<your-name>) e clique em Criar .

A ramificação é criada instantaneamente e inclui todos os esquemas e dados, desde o desenvolvimento até a cópia em gravação.

Sua hierarquia de ramificações:

production (root)
└── development (has users table + data)
└── dev/alex (instantly inherits users table + data)

Desenvolva seu recurso

Aponte sua aplicação para sua branch de desenvolvimento atualizando as strings de conexão em seu arquivo .env , então desenvolva seu recurso usando seu fluxo de trabalho normal.

Por exemplo, adicionar acompanhamento de preferências do usuário ao seu aplicativo envolveria atualizar seu modelo de usuário, gerar uma migração com seu framework (Prisma, Alembic, Django, etc.) e executá-la em seu branch dev/alex . Seu arquivo de migração pode conter:

SQL
ALTER TABLE users ADD COLUMN preferences JSONB DEFAULT '{}';
CREATE INDEX idx_users_preferences ON users USING GIN (preferences);

Após executar a migração, desenvolva o recurso de preferências no código do seu aplicativo e teste o fluxo completo localmente. Seu branch está completamente isolado — as alterações não afetam a produção nem outros desenvolvedores.

Analise as suas alterações.

Antes de promover para outros ambientes, use a ferramenta de comparação de esquemas (schema diff) para verificar exatamente o que mudou. Navegue até a visão geral do seu branch dev/alex , clique em Diferença de esquema e compare com development.

A comparação lado a lado mostra sua nova coluna preferences e índice em verde:

Diferença de esquema mostrando a coluna de preferências e o índice adicionado ao branch dev/alex

Essa verificação passo a passo ajuda a detectar alterações não intencionais antes que elas cheguem à produção. Para obter documentação completa sobre a comparação de esquemas, consulte Comparar esquemas de ramificação.

Divulgue suas mudanças

Quando você estiver confiante em suas alterações, promova-as para os branches upstream. Aplique as mesmas alterações de esquema que você validou em dev/alex ao seu branch development e, em seguida, implante o código do seu aplicativo. Esse fluxo de trabalho garante que as alterações de esquema sejam testadas isoladamente antes de chegarem a ambientes compartilhados.

Reset e comece do zero.

Quando você estiver pronto para começar um novo trabalho, redefina seu branch pessoal para permanecer sincronizado com development, que pode ter sofrido alterações de outros desenvolvedores. Isso lhe dá um novo ponto de partida a partir da linha de base compartilhada atual.

Navegue até o seu branch dev/alex e clique em Reset do pai . O modal de reinicialização confirma que todos os bancos de dados e funções serão substituídos pelos dados mais recentes de development. Essa ação é irreversível, portanto, certifique-se de ter promovido todas as alterações que deseja manter antes de confirmar.

Modal de confirmação de Reset de dados

Seu ramo agora corresponde exatamente development , pronto para sua próxima tarefa.

Melhores práticas

  • Use uma nomenclatura consistente: siga o padrão dev/<name> para branches de desenvolvimento.
  • Reset regularmente: Mantenha seu branch sincronizado com development para evitar desvios.
  • Proteja a produção: Utilize ramos protegidos para evitar alterações acidentais.