Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modernizando Aplicações Legadas com Terraform e Vault

psevestre
December 02, 2020

Modernizando Aplicações Legadas com Terraform e Vault

psevestre

December 02, 2020
Tweet

Other Decks in Technology

Transcript

  1. CTO, LightHouse Tecnologia Analista Sr, Token Services Modernizando Aplicações Legadas

    com Terraform & Vault Philippe Sevestre Richard Sens Analista Sr, Token Services Carlos Bof
  2. Quem Somos ? ▪ TOKEN Services – Empresa de prestação

    de serviços de outsourcing de processos B2B fundada em 1993 – Principais clientes: Clientes Mercado Financeiro e Cartões ▪ LightHouse Tecnologia – Consultoria em Arquitetura e Engenharia de Sistemas fundada em 1991 – Principais clientes: Instituições e prestadoras de serviço ligadas ao mercado financeiro
  3. Cenário Original ▪ EDINET – Portal B2B ▪ Implementação: Rotinas

    batch implementadas em PHP executadas via cronjobs – Coordenação centralizada: processo master acionado via cronjob rodando sub-processos via exec() – Persistência: MySQL
  4. Cenário Original - Limitações ▪ Escalabilidade Vertical ▪ Evolução do

    framework PHP ▪ Gestão de configuração/mudanças manual ▪ Disaster Recovery ▪ PCI Compliance
  5. Nova Arquitetura ▪ Plataforma de Execução: Rancher ▪ Execução distribuída

    – Processo master dispara ordens de execução via mensageria – Workers rodando em containers consomem ordens de processamento e disparam sub-processos via exec() ▪ Requisito não-negociável: Suportar a implantação gradual !!!
  6. Nova Arquitetura - Desafios ▪ Automação de Build & Deploy

    ▪ Segurança ▪ Capacitação da equipe
  7. Automação de Builds ▪ Workflow: – App Dev envia código

    para repositório (git commit/push) – Gitlab pipeline é executada (on-prem, Community Edition) – Imagem é enviada para o Registry
  8. Automação de Builds ▪ CD  Fora de escopo ▪

    Motivos: – Cobertura parcial dos testes automatizados – Reuso de rotinas legadas – Dependências entre componentes rodando na plataforma legada e Rancher
  9. Automação de Deploy ▪ Workflow: – Dev TF atualiza projeto

    Terraform no GitLab ▪ 1 projeto TF por sistema ▪ Sistema = múltiplos componentes reunidos em um stack – Ops executa Terraform ▪ Providers Utilizados: – Vault  KV & Database – Rancher – Built-in (null, random, tls)
  10. Desafio: Configurações ▪ Modelo original: arquivos “ini” em diretórios compartilhados

    ▪ Problemas/Limitações: – Credenciais estáticas nos arquivos. – Credenciais compartilhadas por múltiplas aplicações – Publicação de alterações via GMUD manual
  11. Desafio: Configurações (cont.) ▪ Solução – Modificar aplicações para externalização

    de configurações (ex: PHP “dotenv”) – Uso do Vault KV secret engine  Sidekick ou acesso direto (ex: Spring Boot) – Terraform Workspaces  Um workspace por ambiente – State Backend: Postgres ▪ Portabilidade on-prem/cloud ▪ Modelo de gestão conhecido/previsível (monitoração/backup/hardening) ▪ Credenciais de acesso obtidas via Vault/Vault-agent ▪ Ponto de atenção: schema owner & vault
  12. Desafio: Segurança ▪ Objetivo: Geração e distribuição segura de credenciais

    ▪ Exemplos: – Credenciais conexão MySQL – Chaves de API ▪ Solução: Vault Everywhere ▪ Implementação: – Rancher Sidekick – Spring Cloud Vault
  13. Desafio: Capacitação ▪ Objetivo: Equalização dos skills entre os membros

    do time ▪ Solução: – Base de conhecimento + treinamentos ▪ Implementação: – Documize (https://www.documize.com/) – Sessões de treinamento “clássicas” – “Aprender fazendo”
  14. O que Conseguimos ? ▪ Maior velocidade e assertividade nas

    implantações – Tempo típico: horas  minutos – Deploy deixou de ser um “evento” ▪ Maior segurança no ambiente – Credenciais dinâmicas ou armazenadas no Vault eliminaram segredos estáticos/compartilhados  Rastreamento de acessos e monitoração – Infra as code  Mudanças auditáveis e reproduzíveis ▪ Incorporação do “modelo operacional de nuvem”, capacitando equipe para futura adoção de nuvem pública
  15. Lições Aprendidas ▪ Automação do deploy é mais trabalhoso do

    que se imagina, mas compensa! ▪ A primeira versão NÃO será a ideal. Assuma que sera refeita… ▪ Atenção ao excesso de configurações. A aplicação deve rodar bem com valores default ! ▪ Atenção às dependências “ocultas” das aplicações ▪ Atenção às pessoas. O modo de trabalho será afetado, com atuação mais integrada Dev + Ops  Difundir os skills é fundamental
  16. Roadmap ▪ Expandir a adoção do Vault para outras soluções

    da Token ▪ Explorar o Boundary para execução do Terraform ▪ Pipeline para execução do Terraform (via Atlantis ?) ▪ Service Mesh (Consul ?)