22
Meu cliente não permite DevOps. E agora?

TDC2016SP - Trilha DevOps Java

Embed Size (px)

Citation preview

Page 1: TDC2016SP - Trilha DevOps Java

Meu cliente não permite DevOps. E agora?

Page 2: TDC2016SP - Trilha DevOps Java

Everton Emilio Tavares

Developer

Page 3: TDC2016SP - Trilha DevOps Java

Cenário ideal

• Builds automatizados;

• Alta cobertura de testes;

• Entrega ou deploy continuo;

• Criação do ambiente automatizado;

Page 4: TDC2016SP - Trilha DevOps Java

Possíveis barreiras.

• Infraestrutura;

• Restrição de Segurança;

• Processos / Politicas;

• Implantação em terceiros;

• Falta de interesse (ou falta de conhecimento);

Page 5: TDC2016SP - Trilha DevOps Java

O que pode ser automatizado?

• Produção;

• Homologação;

• Desenvolvimento;

Page 6: TDC2016SP - Trilha DevOps Java

Nossas Barreiras...

• Servidor interno;• Produção;

• Homologação;

• Restrições de segurança;

Page 7: TDC2016SP - Trilha DevOps Java

... e nossa infra

• Servidor Central• WebLogic;

• Banco de Dados – Oracle;

• Servidor Filial• Weblogic:

• Fila de Sincronização;

• Fila de tratamento de erros;

• Banco de Dados – Mysql• 3 instâncias: Gravação, Leitura, Leitura – Espelho;

• Com configurações específicas;

Page 8: TDC2016SP - Trilha DevOps Java

Problemas com desenvolvimento

• Conexão com o cliente instável (VPN);

• Banco de Dados concorrente;

• Tempo para configuração de ambiente;

• Manter histórico de atualizações do Banco de Dados;

Page 9: TDC2016SP - Trilha DevOps Java

Solução:

• Docker• 2 Weblogic;

• Oracle;

• Mysql;

• Flyway:• Banco Mysql (legado);

• Banco Oracle;

Page 10: TDC2016SP - Trilha DevOps Java

O que foi automatizado:

• Weblogic (central e filial)• Filas JMS;

• DataSources;

• Oracle• Migrations;

• Mysql• Migrations (apenas tabelas relevantes);

• Dados de teste;

• Jenkins• Integração continua;

Page 11: TDC2016SP - Trilha DevOps Java

O que ganhamos?

• Acabou problema com VPN;

• Tempo de configuração de ambiente caiu;

• Cliente adotou as migrations;

• Configuração do Weblogic ficou documentada (Python);

• Outras aplicações do mesmo cliente adotaram o Docker;

• Cliente tem a infra configurada caso desejar adotar adotar;

Page 12: TDC2016SP - Trilha DevOps Java

Por que não Vagrant?

Page 13: TDC2016SP - Trilha DevOps Java

Próximos passos

Page 14: TDC2016SP - Trilha DevOps Java

Cenário

• Equipe de TI e Devs isoladas;

• Equipes aprendendo “por conta”;

• Equipes com ambiente de dev nas nuvens;

• Algumas equipes sem nenhum tipo de automatização;

• Inclusive algumas equipes sem teste automatizado;

Page 15: TDC2016SP - Trilha DevOps Java

Mudança na equipe de Ops

• Disseminar a cultura de DevOps

• Construção de uma nuvem privada;• CloudStack + Chef;

• Utilização de ambientes dev, hom e QA;

• Aproximação dos Ops dos Devs;• Equipe de Ops “circulando” entre as equipes de dev;

• Estreitar laços entre as equipes;

• Devs aprender um pouco de ops;

Page 16: TDC2016SP - Trilha DevOps Java

Mudança na equipe de Devs

• Equipe apoiando o monitoramento das aplicações;• Zabbix, NewRelic, etc...

• Definição de um responsável por apoiar as equipes em automatização;• Disseminar conhecimento entre as equipes;

• Automatizar tudo o que for possível;

• Tornar as equipes responsáveis pelas suas automatizações;

• Meta: 100% das equipes automatizadas;

Page 17: TDC2016SP - Trilha DevOps Java

Dicas

Não apanhe como a gente apanhou...

Page 18: TDC2016SP - Trilha DevOps Java

Organização

Page 19: TDC2016SP - Trilha DevOps Java

Fragmentação Flyway

• 1__estrutura_inicial.sql

• 2__enderecos_funcionarios.sql

• 3__financeiro.sql

• 4__compras.sql

Page 20: TDC2016SP - Trilha DevOps Java

Fragmentação Flyway

• 1_1_1__estrutura_funcionarios.sql

• 1_1_2__dados_funcionarios.sql

• 1_2_1__estrutura_funcionario_endereco.sql

• 1_2_2__dados_funcionario_endereco.sql

• 1_3_1__estrutura_financeiro_contas.sql

• 1_3_2__dados_financeiro_contas.sql

• 1_4_1__nova_coluna_cep_funcionario_endereco.sql

• 1_4_2__dados_cep_funcionario_endereco.sql

Page 21: TDC2016SP - Trilha DevOps Java

Docker compose

• Disponível no Windows a partir da versão 1.9.0-rc3 (30/10/2015);

• Facilita levantar as maquinas em conjunto;

• Antes o projeto usava um arquivo .sh;