Top Posts

Solucionado ROLE_ Spring Security

Continue lendo

Automatizando seu DB com FlyWay Plugin – MySql

Posted by camilolopes | Posted in BD, Java | Posted on 07-02-2014

1

Olá Pessoal,

No post de hoje vou mostrar para vocês como podemos automatizar a criação de um banco de dados usando o plugin flyway. Aqui na ITS temos usado o plugin para aumentar a produtividade e sempre manter a integridade dos ambientes.

Lets go…

O problema

Há várias ferramentas e formas de automatizar a criação das tabelas do banco com cenários já prontos ou até vazios.  Aqui na ITS, para os projetos Java temos usado o flyway, apesar de que testamos outras como o DBMaintain, mas optamos pelo plugin flyway, já que em termos de resultado final era semelhante ao dbmaintain, porém a curva de aprendizado e configuração  era mais rápida.  Para projetos Ruby, estamos vendo outra solução.

O problema que tínhamos aqui era a criação da base de dados para cada ambiente, desde local até ambiente de INT, DEV e PROD. A modelagem do banco pode mudar (e certamente vai) e quando isso acontece, o problema está feito. Como atualizar cada ambiente rapidamente?

Opção 1

Criar um dump do banco e rodar o .sql em cada ambiente manualmente.

Opção 2

Automatizar esse processo de update.

Nesse post vamos nos limitar apenas em como gerar a base de dados rapidamente. Em outro post veremos como atualizar outros ambientes através de uma ferramenta de build continuous como o Jenkins. 

A opção 1 funciona, mas não é a ideal, pois é preciso logar em cada ambiente e rodar o .sql. Isso consome tempo e é chato de fazer, ninguém gosta de fazer esse trabalho repetitivo. E se o banco durante o dia mudar 3 ou 4 vezes? Quantas vezes você vai executar a opção 1? Se você tem 3 ambientes para atualizar será preciso fazer isso 3 vezes a cada mudança. Péssimo, não? 

A opção 2

Você pode automatizar. Há ferramentas que ajudam a fazer isso usando um Servidor de Build como o Jenkins ou até como plugin maven.  Já usei o dbmaintain, mas analisando outras opções encontrei o flyway, até porque o desenvolvedor pode rodar o plugin local e se tiver o banco de dados rodando em segundos ele tem o ambiente local atualizado.

Configurando o FlyWay  via Maven

Antes de tudo você precisa ter um arquivo .sql que irá criar as tabelas e ele deve estar nessa estrutura: src/main/resources/db/migration

flywaysql

E o nome do arquivo tem que ser V1__QUALQUERNOME.sql

São 2 underscore. Se seu banco mudou você precisa ter um V2 e assim por diante. O flyway faz um tracking disso e salva em uma tabela schema_version. Se você tem mais de um ambiente, sugiro dar uma lida nesse post:

http://lwandersonmusings.blogspot.com/2012/07/using-maven-to-integrate-flyway.html

Vamos ver na prática um simples exemplo. Vou considerar que você já tem um projeto Maven

Step 1

Abra o pom e adicione:

 

 Step 2

Garanta que o banco foi inicializado.

Step 3

Garanta que o database exista, caso contrário o flyway não vai conseguir conectar.

flywaydatabase

Step 4

via command line (se preferir pode usar o Eclipse) digite o seguinte comando:

flywaycommandmigrate

Step 5

Veja o resultado:

flywaycommandmigrateresult

 

flywaytablecreated

Observe que as tabelas foram criadas. Tive que ocultar os nomes das tabelas. 

Simples não?

Alguns comandos básicos

 

Limpar o Database, ou seja, todas tables são apagadas.

 

Mostra quando o último script foi rodado e o status.

 

Faz a migração, ou melhor, executa o .sql em si.

Note: Você pode usar o recurso de profiles e ter diferentes execuções para o flyway.

O flyway tem se mostrado um plugin muito bom no dia a dia e atendendo aos requisitos que precisamos, sem falar que tem uma boa documentação e os posts no blog deles tem sido bem mão na massa. 

Abraços, see ya!! 

Fazendo Deploy de sua aplicação JEE no OpenShift

Posted by camilolopes | Posted in Java | Posted on 23-09-2013

0

Olá Pessoal

O post de hoje é para quem deseja fazer deploy de sua app na nuvem e sem custo. O openShift é uma plataforma de cloud da RedHat que permite fazer isso de forma gratuita, até 1 GB de Storage. Show, heim? Nunca tinha usado o OpenShift, e daí resolvi fazer o deploy da app I4JSFDemo, que é um exemplo de uso da API I4JSF.

Lets go…

Primeiro passo

Ter uma conta no OpenShift. Abra sua conta, it is very easy.

Segundo Passo

Você precisa  gerar o SSH. Se você usa o Git com o GitHub certamente vai ter um id_rsa e id_rsa.pub  em .ssh. Portanto abra o arquivo .id_rsa.pub e deixe aberto por enquanto.

Terceiro Passo

Clique em create application e siga os passos

openshiftcreateapp

Escolha em browser by tag a opção Java. Assim teremos os servers Java:

 

openshifttagjavaappserver

No meu caso vou escolher TomCat .

Quarto Passo

Após ter criado a app vá em My Application e veja que ela está lá. Clique na setinha que está apontando para a direita e assim teremos detalhes da app. Veja:

 

openshiftgitrepo

Observe que você tem o url do repositório. Faça o clone desse repositório.

Quinto Passo

git rm -r src/ pom.xml

Assim vamos remover os arquivos default criado pelo OpenShift.

Sexto Passo

Coloque seu .war em webapps

Sétimo Passo

Faça um commit  e push

 git commit –am “my first commit openshift”  git push

Aguarde o push terminar e observe que o openshift vai fazer build da sua aplicação e o deploy. 

 

openshiftpush

 

openshiftbuildsucess

Aqui eles explicam o que acontece quando faz um push:

https://www.openshift.com/developers/deploying-and-building-applications

Outro link legal:

https://github.com/openshift/origin-server/blob/master/cartridges/openshift-origin-cartridge-jbossews/README.md

Resultado:

openshiftresultapp

 

Link da APP

http://i4jsfdemo-camilolopes.rhcloud.com/i4jsfdemo/

Conclusão

  • – Deploy muito fácil;
  • – Boa documentação;
  • – Podemos logar na aplicação via command line com o Putty por exemplo;
  • – É grátis até 1GB de Storage;

Se você pretende fazer uma POC a versão free atende bem.

No mais é isso. Espero que tenham gostado do post.

See ya!!

Abraços