Higor Barbosa
Posted on June 30, 2020
Falar sobre DevOps e sua cultura é chover no molhado. Hoje, os times já estão adotando, mesmo que lentamente, a cultura DevOps no seu dia a dia.
Mas e o seu banco de dados? Ele está integrado na sua esteira de entrega continua? O Continuous Delivery envolve o seu banco de dados? Pois, se ainda não está, nesta série quero mostrar para vocês, passo a passo, como podemos adicionar o nosso banco de dados relacional no seu pipeline com a ajuda de 2 poderosas ferramentas: Azure DevOps e Flyway. Vamos lá!?
Tópicos
- Requisitos
- C.I. / C.D. para seu Banco de Dados
- Flyway
- Breve Histórico e Versões do Flyway
- Como funciona o Flyway
- Comandos Flyway
- Instalando Flyway Community
Requisitos
- Conta no Azure DevOps (podemos utilizar a versão gratuita);
- Conta no Azure (usaremos para criar o nosso banco Azure SQL Database);
C.I. / C.D. para seu Banco de Dados
Continuous Delivery, ou simplesmente, Entrega Contínua engloba publicar, de forma automática e usando ferramentas, o nosso código fonte até o destino final. E isso, deve também englobar o nosso banco de dados.
Mas infelizmente, boa parte de projetos não adicionam o banco de dados na sua esteira de deploy. E isso pode gerar transtornos no C.I./C.D. da sua aplicação. No momento em que você não adicionar o script do banco no seu release, e mantem interação humana para atualização do banco, e possibilidade de falha torna-se grande, e grave!
Mas não é surpreendente, pois existem menos ferramentas para oferecer suporte ao DevOps para o banco de dados do que para deploy da sua aplicação.
Mas não significa que essas ferramentas não existam. E nesse artigo, quero falar sobre o Flyway. Com ele, podemos commitar o código do banco de dados para um sistema de controle de versão como GIT, adicionar a Integração Contínua, e claro, realizar a entrega contínua do seus scripts para banco de dados, passando pelos seus ambientes Staging ate chegar em Produção.
Flyway
Flyway DB é uma ferramenta para controle da versão do nosso banco de dados relacional, e apesar de ser bem simples, ela é uma solução robusta e suporta os principais banco de dados baseados em SQL do mercado como Oracle, MySQL, MariaDB, SQL Server, PostgreSQL, DB2, SQLite e muitos outros.
Na nossa demo, iremos usar o Azure SQL Database. Mas o procedimento para a maioria dos outros bancos suportados é o mesmo.
Breve Histórico e Versões do Flyway
O Flyway é uma ferramenta de migração de banco de dados de código aberto e foi adquirido pela empresa Redgate em julho de 2019.
E a partir disso, temos a versão community , PRO e a versão enterprise.
Neste link podemos ver as diferenças entre as versões.
A versão community suporta todas as versões atuais dos bancos de dados relacionais. Mas temos um "porém". Por exemplo, o banco SQL Server 2014 é apenas suportado na versão Enterprise. Fique atento sobre essas restrições na versão Community.
Como funciona o Flyway
SIMPLES, FOCO NA SOLUÇÃO e PODEROSO
Essa é a promessa do Flyway e ela é cumprida com maestria.
Sua utilização é muito simples.
Podemos rodar scrips via Java API, Maven e Gradle.
Além disso, podemos rodar a partir de comandos. E sera assim que iremos executá-lo.
Um único comando e seu script SQL é migrado em segundos.
O primeiro passo é criar um script SQL. E pode usar essa nomenclatura:
V1__MeuPrimeiroScript.sql
V2__MeuSegundoScript.sql
Onde V1__ e V2__ indica a versão crescente de execução do script. Com isso, você controla o que está migrando através do nome dos seus scripts SQL.
Comandos Flyway
flyway info
Usamos esse comando para verificar o status do seus scripts e principalmente, obter informações do que será migrado antes de efetuar a migração.
flyway migrate
Esse é o comando que executa os scripts SQL, por ordem crescendo da versão indicada no nome do arquivo.
flyway clean
Esse comando limpa o nosso banco de dados. Todos os objetos como tabelas, views, procedures e triggers serão droppadas.
Esse comando nunca deve ser executado em produção. Utilize apenas quando você precisar limpar bases de desenvolvimento ou testes.
flyway validate
Esse comando valida se as migrações a serem aplicadas no nosso banco de dados estão de acordo com o que aplicamos no nosso banco local.
flyway undo
Podemos adicionar tags nas nossas migrações. E através delas, podemos reverter scripts incorporados posteriormente.
flyway repair
Esse comando corrige problemas que podemos ter na nossa tabela de histórico do schema (flyway_schema_history).
flyway baseline
Usamos esse comando em banco de dados existentes, atualizando com uma versão especifica.
Instalando Flyway Community
Podemos instalar o Flyway no Windows, Linux e MacOs sem problemas. Irei mostrar passo a passo como instalar no Windows 10, mas nesse link, você pode ver como é simples a instalação também no Linux e MacOs.
E primeiro, precisamos acessar esse link
E vamos baixar! Atualmente esta na versão 6.5.0 e esta com o tamanho de 87.7MB.
Depois de finalizado o download, vamos descomprimir o arquivo no diretório de sua escolhe. Por exemplo, na raiz do C:/
.
Podemos inclusive ter 2 ou mais versões do Flyway na mesma máquina, conforme imagem abaixo.
Dentro do Flyway, temos essas pastas e arquivos:
Para o flyway.cmd, iremos enviar os nossos comandos desejados.
Na pasta conf, temos o arquivo flyway.conf.
Abrindo ele, vemos diversas de configurações.
Os principais parâmetros para configuração:
flyway.url: devemos indicar o JDBC que queremos conectar. Temos uma lista de exemplos no arquivo, como SQL Server, MySQL, Oraclee MariaDB.
flyway.user e flyway.passwork: usuário e senha do nosso banco de dados.
flyway.table: nome da tabela que será criada para controle das versões (histórico) de scripts executados no banco. Se não for preenchido, assumirá o valor padrão que é flyway_schema_history.
Por enquanto, não iremos alterar nada.
Vamos abrir o command do Windows, navegar até a pasta onde instalamos o flyway e executar o comando flyway info
.
E ele nos avisa que não foi possível conectar ao banco porque não configuramos a URL do nosso JDBC, usuário e senha. E isso faremos no próximo post dessa serie.
:)
Posted on June 30, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.