Fala, pessoal! Se você já se perdeu no labirinto de migrações de banco de dados ou ficou com aquele frio na barriga ao atualizar esquemas em produção, seus problemas acabaram! Hoje vamos explorar o Atlas, uma ferramenta que vai revolucionar a forma como você lida com bancos de dados. Vamos mergulhar nos comandos, vantagens e como ele pode ser seu melhor amigo no CI/CD. Bora lá?
O Que é o Atlas?
O Atlas é uma ferramenta open-source para gerenciamento de esquemas de banco de dados. Ele permite que você defina, migre e inspecione seus esquemas de forma declarativa. Imagine ter controle total sobre as mudanças do seu banco, evitando surpresas desagradáveis. Legal, né? Mas sabemos que existe N ferramentas nesse sentido, no entanto eu conheci essa ferramenta através do canal DevOps ToolKit e ele trouxe um insight muito interessante do por que ela pode ser uma boa opção,
Resumindo: existe o liquibase que é um cara antigo, tão antigo que sua declarativa de schema é em XML, depois temos o Flyway que ja evoluiu um pouco com versionamento não em XML mas no próprio .SQL. Já o atlas trás a abordagem declarativa na linguagem de configuração da hashicorp o HCL (kubernetes, helm chart temos? sim rs), isso significa a vantagem com o terraform, independe do modulo. Mas vamos lá além disso por que usar o Atlas?
- Simplicidade: Com comandos intuitivos, você gerencia seu banco sem complicações.
- Automação: Integrado facilmente em pipelines CI/CD.
- Confiabilidade: Minimiza erros humanos em migrações manuais.
- Flexibilidade: Suporta diversos bancos de dados como MySQL, PostgreSQL e SQL
- Diversidade de comandos: comparar o estado atual do seu HCL com o banco e ver as diferenças, versionamento de functions, exportar todo schema (até relacionamentos) para um HCL, enfim vou mostrar no decorrer aqui do artigo.
Principais Comandos do Atlas
Vamos dar uma olhada nos comandos que fazem essa mágica acontecer.
1. atlas init
O que faz? Inicializa um novo projeto Atlas no diretório atual.
atlas init
O que acontece? Cria um arquivo atlas.hcl de configuração, onde você define informações sobre seu banco de dados.
Initializing a new Atlas project...
Project initialized successfully!
Created configuration file: atlas.hcl
2. atlas migrate diff
O que faz? Gera uma nova migração com base nas diferenças entre o esquema desejado e o atual.
atlas migrate diff --dir atlasmigrations --to schema.hcl
O que acontece? Cria um arquivo de migração contendo as alterações necessárias para atualizar o esquema.
Analyzing migration differences...
Detected changes:
- Added table "users"
- Modified table "orders"
Generated new migration: atlasmigrations/20211005123000_add_users_table.sql
3. atlas migrate apply
O que faz? Aplica as migrações pendentes ao banco de dados.
atlas migrate apply --dir atlasmigrations
O que acontece? Executa as migrações, atualizando o esquema do seu banco de dados.
Applying migrations from atlasmigrations...
Applying migration 20211005123000_add_users_table.sql... Success!
All migrations applied successfully.
4. atlas schema inspect
O que faz? Inspeciona o esquema atual do banco de dados.
atlas schema inspect -u "mysql://user:pass@tcp(localhost:3306)/dbname"
O que acontece? Mostra a estrutura atual do banco, útil para verificar o estado antes e depois das migrações.
Inspecting database schema...
Schema for "dbname":
table "users" {
column "id" int [primary key]
column "name" varchar(255)
column "email" varchar(255)
}
table "orders" {
column "id" int [primary key]
column "user_id" int [foreign key references users(id)]
column "amount" decimal(10,2)
}
Schema inspection completed.
5. atlas schema apply
O que faz? Aplica o esquema definido ao banco de dados, sincronizando as diferenças.
atlas schema apply -u "postgres://user:pass@localhost:5432/dbname" -f schema.hcl
O que acontece? Atualiza o banco de dados para que corresponda ao esquema definido no arquivo schema.hcl.
Applying schema changes...
Found differences:
- Create table "products"
- Alter table "users" add column "phone" varchar(20)
Do you want to proceed? [y/N]: y
Schema changes applied successfully!
Exemplos Práticos
Cenário 1: Atualizando o Esquema em Desenvolvimento
Você adicionou novas tabelas e colunas ao seu arquivo schema.hcl e quer atualizar seu banco local.
Passo a passo:
- Gerar Migração:
atlas migrate diff --dir atlasmigrations --to schema.hcl
Analyzing migration differences...
Detected changes:
- Added table "customers"
- Modified table "orders"
Generated new migration: atlasmigrations/20211005124500_add_customers_table.sql
2. Aplicar Migração:
atlas migrate apply --dir atlasmigrations
Applying migrations from atlasmigrations...
Applying migration 20211005124500_add_customers_table.sql... Success!
All migrations applied successfully.
Resultado: Seu banco de dados local está atualizado com as novas mudanças, sem precisar escrever SQL manualmente.
Vantagens no CI/CD
- Consistência: Garante que todos os ambientes estejam com o mesmo esquema.
- Automação: Reduz o trabalho manual e erros humanos.
- Rollback Fácil: Se algo der errado, é simples reverter.
O Que Esperar dos Retornos dos Comandos?
- Mensagens Claras: O Atlas fornece feedback detalhado sobre o que está fazendo.
- Logs Detalhados: Em caso de erros, você recebe informações úteis para depuração.
- Saídas Personalizáveis: Use flags como –verbose para mais detalhes.
Exemplo de retorno em caso de erro:
Applying migrations...
Error applying migration 20211005124500_add_customers_table.sql:
- Column "email" already exists in table "customers"
Migration failed. Rolled back changes.
Dicas de Uso
- Pré-visualização: Use atlas migrate plan para ver o que será alterado antes de aplicar.
atlas migrate plan --dir atlasmigrations --to schema.hcl
Exemplo de retorno do comando:
Planned changes:
- Create table "invoices"
- Add column "due_date" to table "orders"
O Atlas é uma ferramenta poderosa que simplifica o gerenciamento de esquemas de banco de dados. Com comandos intuitivos e integração fácil em pipelines CI/CD, ele é essencial para equipes que buscam eficiência e confiabilidade.
Então, que tal dar uma chance ao Atlas e levar o gerenciamento de bancos de dados para o próximo nível? Seu futuro “eu” vai agradecer! 😎
Fontes: https://www.youtube.com/watch?v=JLvHpXJ1hHk&t=472s (How To Inspect, Plan, Migrate DB Schemas With Atlas)
https://atlasgo.io/getting-started/ (Oficial documentation)
Espero que tenha curtido este guia sobre o Atlas! Se tiver alguma dúvida ou quiser compartilhar suas experiências, deixe um comentário. Até a próxima! 👋