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

Escalando o ambiente de desenvolvimento com CLI...

Avatar for Radamés Roriz Radamés Roriz
December 04, 2020
2

Escalando o ambiente de desenvolvimento com CLI em Ruby

Avatar for Radamés Roriz

Radamés Roriz

December 04, 2020
Tweet

Transcript

  1. 2 Apresentação Radamés Roriz Dev na Revelo Desenvolvedor há 9

    anos e atualmente como desenvolvedor na Revelo. Apaixonado por solucionar problemas reais e criar produtos que impactam positivamente a vida das pessoas.
  2. 5 Antigos problemas Ambientes diferentes de prod Onboarding + 20

    serviços e crescendo Ambiente heterogêneos
  3. 6 Ambiente heterogêneos Script de criação do ambiente Scripts de

    setup permitiram gerar um processo único de setup. Scripts eram normalmente em shell e ruby. Docker & docker-compose Docker permitiu padronizar e isolar cada sistema. Docker-compose permitiu centralizarmos as dependências entre sistemas e variáveis de ambiente. Readme Instruções de criação do ambiente e instruções para rodar deveriam estar no readme do projeto. Criamos alguns readme exemplares para serem seguidos.
  4. 7 Forma única de inicialização e centralização de configurações de

    pastas e variáveis. Único docker-compose + 20 serviços e crescendo Centralizar o orquestramento permitiu eficiência e agilidade na criação e manutenção dos serviços. Deixou pontos da infraestrutura explícitos e padronizados entre os times. Novo repositório Reutilização de recursos e padronização entre ambientes de dev, staging e produção. Documentação
  5. 9 Onboarding ./install Uma única vez para instalar a ferramenta.

    Processo de instalação de dependências do sistema operacional e ferramentas. revelo-cli setup Uma única vez por serviço. Processo de criação do ambiente por serviço. Nesse processo contempla: clone do repositório, criação/download do container, download/criação do(s) banco(s) de dados revelo-cli docker up Rodar sempre que for subir um novo serviço. Processo para iniciar um ou mais serviços e suas dependências.
  6. 10 Novo dominio: dev.revelo.io Subdominios padronizado: servico.produto.dominio-do-ambiente Domínios Ambientes diferentes

    de prod A aplicação principal precisava de um proxy para funcionar ou durante a navegação precisava mudar a url manualmente. Proxy
  7. 13 Ambiente seletivo Setup/Inicialização seletiva Setup baseado na seleção de

    serviços e inicialização baseado na seleção de serviços. Configuração pessoal Dentro do processo de setup, contempla: o setup do ambiente, seleção dos serviços e inserção das credenciais necessárias Local <> Container Utilização do host.docker.internal como padrão, permitindo o uso dentro e fora do docker.
  8. 14 Processo integrado com o shell, permitindo o autocomplete e

    busca de comandos. autocomplete Ambientes desatualizados Processo de detecção de atualizações do revelo-cli e notificação de serviço desatualizado. autoupdate
  9. 15 Docker para o mac Tipos de volumes O MAC

    tem um conflito com o formato que o docker utiliza para gerenciamento de arquivos. Para resolver isso existe uma conversão para cada alteração de arquivo e isso gera um problema de performance. Tamanho das imagens As imagens do docker estavam crescendo e ficando cada vez maiores, realizamos uma limpeza nas dependências e aumentamos a utilização de alpine quando possível. Reutilização de volumes Volumes que podem ser compartilhados, como por exemplo pasta do bundle, reduz o tamanho total dos volumes e aumenta a velocidade de inicialização das aplicações. Instalação inteligente Criamos um processo de instalação para mac e linux com a mesma interface. Sendo possível criar um processo para windows se necessário.
  10. 17 Nova realidade git clone [email protected]:revelo-cli.git cd revelo-cli ./install ./revelo-cli

    setup ./revelo-cli docker up ruby docker heroku docker-compose bundle revelo_cli repositories docker import_database elasticsearch rabbitmq
  11. 18 Propagação de processos Ganhamos uma forma fácil e auditável

    de propagar processos/scripts entre os times. Geradores de código, templates, scripts de setup tem um lugar para morar agora. Infrastructure as Code (IaC) Agora com o ambiente documentado e replicável, podemos seguir para o próximo nível de complexidade e colocarmos infraestrutura como código. Podemos agora com facilidade migrar para kubernetes ou qualquer outra ferramenta que tenhamos interesse. Nova realidade Ambiente pronto Ambiente pronto para uso, permitindo que o foco vá para o que realmente importa que é o produto. Mas ao mesmo tempo permite que possamos evoluir a infra e facilita mudanças.