Flyway & Azure DevOps : Conhecendo o Flyway

higor

Higor Barbosa

Posted on June 30, 2020

Flyway & Azure DevOps : Conhecendo o Flyway

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

  • 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

Alt Text

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

Alt Text

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.

Alt Text

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.

Alt Text

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

Alt Text

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.

Alt Text

flyway migrate

Esse é o comando que executa os scripts SQL, por ordem crescendo da versão indicada no nome do arquivo.

Alt Text

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.

Alt Text

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.

Alt Text

flyway undo

Podemos adicionar tags nas nossas migrações. E através delas, podemos reverter scripts incorporados posteriormente.

Alt Text

flyway repair

Esse comando corrige problemas que podemos ter na nossa tabela de histórico do schema (flyway_schema_history).

Alt Text

flyway baseline

Usamos esse comando em banco de dados existentes, atualizando com uma versão especifica.

Alt Text

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

Alt Text

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.

Alt Text

Dentro do Flyway, temos essas pastas e arquivos:

Alt Text

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.

Alt Text

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.

Alt Text

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.

:)

💖 💪 🙅 🚩
higor
Higor Barbosa

Posted on June 30, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related