SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
1
Escalando o
ambiente de
dev
Em Ruby
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.
3
Agenda
Antigos
problemas
01
revelo-
cli
02
Novos
problemas
03 04
Nova
realidade
4
Antigos
problemas
5
Antigos
problemas
Ambientes diferentes de prod
Onboarding
+ 20 serviços e crescendo
Ambiente heterogêneos
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.
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
8
revelo-cli
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.
10
Novo dominio: dev.revelo.io
Subdominios padronizado: servico.produto.dominio-do-ambienteDomí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
11
Novos
problemas
12
Novos
problemas
Ambientes desatualizados
Ambiente seletivo
Docker para o mac
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.
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
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.
16
Nova
realidade
17
Nova realidade
git clone git@github.com: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
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.
87% 100% 529
Em ruby do time com
contribuição
Commits
20
Dúvidas
Radamés Roriz
Dev na Revelo

Mais conteúdo relacionado

Mais procurados

Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoTobias Sette
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linhamatheuscmpm
 
São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2Azuki
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerLuís Bianchin
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerRafael Gomes
 
Docker para quem tem preguica
Docker para quem tem preguicaDocker para quem tem preguica
Docker para quem tem preguicaCristiano Cunha
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting dockerRafael Gomes
 
Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Marcel Cattaneo
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVCBenicio Ávila
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersFrancisco Gonçalves
 

Mais procurados (20)

Docker
DockerDocker
Docker
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
Docker - Básico
Docker - BásicoDocker - Básico
Docker - Básico
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 
Orchestrando na linha
Orchestrando na linhaOrchestrando na linha
Orchestrando na linha
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
São paulo docker meetup #2
São paulo docker meetup #2São paulo docker meetup #2
São paulo docker meetup #2
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre Docker
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop docker
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
Docker para quem tem preguica
Docker para quem tem preguicaDocker para quem tem preguica
Docker para quem tem preguica
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
Desvendando o Docker
Desvendando o DockerDesvendando o Docker
Desvendando o Docker
 
Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.Docker: Introdução à Conteinerização de Apps e Nuvem.
Docker: Introdução à Conteinerização de Apps e Nuvem.
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
 

Semelhante a Escalando o ambiente de dev com revelo-cli

Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)TechCobli
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerAécio Pires
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker BásicoAndré Justi
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Renato Groff
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaMatheus Fidelis
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes Rhuan Karlus Silva
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Renato Groff
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Renato Groff
 
Docker: Uso no dia a dia de desenvolvimento
Docker: Uso no dia a dia de desenvolvimentoDocker: Uso no dia a dia de desenvolvimento
Docker: Uso no dia a dia de desenvolvimentoMarcela Carvalho
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogCesar Augusto Nogueira
 

Semelhante a Escalando o ambiente de dev com revelo-cli (20)

Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
 
Conheça o Docker
Conheça o DockerConheça o Docker
Conheça o Docker
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Usando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NETUsando Docker no desenvolvimento .NET
Usando Docker no desenvolvimento .NET
 
Workshop Docker
Workshop DockerWorkshop Docker
Workshop Docker
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com Docker
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Docker para iniciantes
Docker para iniciantesDocker para iniciantes
Docker para iniciantes
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Docker
DockerDocker
Docker
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
 
Docker: Uso no dia a dia de desenvolvimento
Docker: Uso no dia a dia de desenvolvimentoDocker: Uso no dia a dia de desenvolvimento
Docker: Uso no dia a dia de desenvolvimento
 
Docker e suas tecnologias
Docker e suas tecnologiasDocker e suas tecnologias
Docker e suas tecnologias
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnog
 

Escalando o ambiente de dev com revelo-cli

  • 2. 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.
  • 5. 5 Antigos problemas Ambientes diferentes de prod Onboarding + 20 serviços e crescendo Ambiente heterogêneos
  • 6. 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.
  • 7. 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
  • 9. 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.
  • 10. 10 Novo dominio: dev.revelo.io Subdominios padronizado: servico.produto.dominio-do-ambienteDomí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
  • 13. 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.
  • 14. 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
  • 15. 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.
  • 17. 17 Nova realidade git clone git@github.com: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
  • 18. 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.
  • 19. 87% 100% 529 Em ruby do time com contribuição Commits