SlideShare uma empresa Scribd logo
São Paulo
Rua Fidêncio Ramos, 308, 10º andar, Vila Olímpia
CEP: 04551-902
Rio de Janeiro
Av. General Justo, 375, 9º andar, Centro CEP: 20021-130
www.mundipagg.com
Utilizando a virtualização para simplificar o desenvolvimento front-end
Charles Carrari
Charles Carrari
Front-End Developer - https://about.me/charlescarrari
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvimento front-end
Uma plataforma que
gera negócios através
da tecnologia
em pagamentos
4
Falaremos sobre:
1. Disclaimers
2. Retrospectiva
3. Evolução
4. Principais problemas
5. Soluções parciais e
“individuais”
6. Virtualizar
7. Vagrant
8. Docker
9. O que usar e quando usar?
10. Dúvidas? 
1.1. Disclaimer I
Disclaimer I
1. Não é um curso de
virtualização.
2. Não é um curso de Vagrant.
3. Não é um curso de Docker.
4. É uma proposta de
utilização dessas
ferramentas.
5. Não sou especialista em
nenhuma dessas soluções!
Sou apenas um “frontzinho”,
buscando menos trabalho e
ganhos na minha
produtividade.
Resumindo...
8
1.2. Disclaimer II
Disclaimer II
1. Atualmente a MundiPagg
possui muitas soluções que
utilizam ferramentas da
Microsoft. Logo é natural
que a maioria das máquinas
tenha o Windows instalado.
Por isso, os exemplos serão
sempre no Windows.
2. Além disso, utilizar
Windows torna o cenário do
que falaremos ainda mais
difícil, tornando nossos
exemplos mais ricos.
Portanto...
11
1.3. Disclaimer III
Lembrem-se sempre...
13
2. Retrospectiva
Do sobrinho ao WebMaster
O que fazíamos?
1. Não existia muita coisa
além do HTML, de “folhas
de estilo” e bem pouco de
javascript.
2. table, table, table...
3. Páginas com visuais
problemáticos e péssima
usabilidade
4. Versionamento? Ah sim...
bkp-1, bkp-novo, bkp-
ultimo...
5. FTP 
16
+ +
=
O que usávamos?
Conclusão
1. O mercado web estava
nascendo ainda
2. Naturalmente éramos
sobrinhos
3. E no fim tudo era simples!
Ou não...
3. Evolução
Do “HTMELER” ao FullStack
O que fazemos?
1. Sites responsivos
2. SPAs (#old)
3. PWAs (#gold)
4. CMSs (Hehehe)
5. Acessibilidade,
Usabilidade
6. Versionamento
7. CI/CD (ou pelo menos
deveríamos...)
20
O que usamos?
21
Hoje somos muito profissionais, mas o desenvolvimento
front-end se tornou confuso demais para os não iniciados
22
Conclusão
https://woliveiras.com.br/posts/guia-de-estudos-
desenvolvedor-front-end-iniciante/
23
https://willianjusten.com.br/como-se-tornar-um-
desenvolvedor-front-end/
24
https://leandrooriente.com/guia-de-estudo-front-end/
25
https://www.felipefialho.com/blog/2016/do-zero-a-
heroi-do-front-end-parte-1
26
https://www.casadocodigo.com.br/products/livro-guia-
frontend
27
E o que torna a vida do front-end ainda mais penosa, é
montar um ambiente completo para desenvolvimento
28
29
+ +
=
Podemos categorizar os “front-enders” em basicamente
4 tipos:
30
Front-end: Web Designer
• Photoshop
• Editor de Texto ou IDE (Dreamweaver é você?! )
• Browsers diversos (mentira, só o Chrome mesmo ;) )
• Bibliotecas (lê-se jQuery e associados)
Front-end: CMS (MENTIRA, WORDPRESS!!! )
• Photoshop
• Editor de Texto ou IDE (Dreamweaver é você?! )
• Browsers diversos (mentira, só o Chrome mesmo ;) )
• Bibliotecas (lê-se jQuery e associados)
• Normalmente PHP
• Servidores: Apache, NGINX, IIS
• Banco de dados: MySql, MongoDB
Front-end: SPA
• Photoshop
• Editor de Texto ou IDE
• Browsers diversos (mentira, só o Chrome mesmo ;) )
• Libs e frameworks (AngularJS, React, SASS)
• NodeJS
• As vezes Ruby, Python
• As vezes MongoDB
Front-end: TUDÃO
4. Principais problemas do Mundo Moderno
Ou do mundinho front-end mesmo...
Principais problemas
1. Linha de comando: a famosa
tela preta.
2. Dificuldades para
reinstalação ou replicação
de máquinas.
3. Compatibilidade entre libs e
projetos.
4. Lentidão para iniciar um
novo projeto.
5. Diferenças entre o ambiente
de desenvolvimento e
produção.
5. Soluções parciais e “individuais”

1. Não ter um bash decente no ambiente de desenvolvimento
limita o “front-ender”
Quem usa Linux, MacOS ou UNIX, tira de letra esse ponto. Mas a
galera de Windows...
40
Contudo, porém, todavia, não obstante...
http://www.msys2.org/
42
http://www.mingw.org/
43
https://git-scm.com/
44
2. A instalação e a replicação do ambiente não deve tomar
todo seu tempo e atenção
Facilidades do mundo open source:
GERENCIADORES DE PACOTES
• APT: Debian, Ubuntu, Mint
• RPM: RedHat, Fedora, CentOS
• PACMAN: Arch Linux
Mas o Windows não tem nada disso nativamente... 
Contudo, porém, todavia, não obstante...
https://chocolatey.org/
48
49
50
3. Manter a compatibilidade entre as linguagens e libs
utilizadas é fundamental!
Facilidades do mundo open source:
GERENCIADORES DE VERSÃO
• phpenv
• rbenv
• rvm
• pyenv
• nvm
Mas o Windows não tem nada disso... 
É MENTIRA!!! Tem sim... ;)
54
55
Mas isso traz mais coisas para instalar... 
57
58
4. Iniciar um novo projeto não pode ser só o momento de
experimentar, temos que manter a solidez e a velocidade
SCRIPTS, SCRIPTS, SCRIPTS
60
http://yeoman.io/
61
62
63
5. Temos que erradicar a expressão: “na minha máquina
funciona!”
Vamos montar uma máquina local “idêntica” em
Hardware e Software ao ambiente de produção?
66
6. Virtualizar
É a solução... Será?
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvimento front-end
Windows 10 trouxe a possibilidade de rodar o Ubuntu
Server nativamente
lxrun /install /y
Nada como o bash original! 
https://msdn.microsoft.com/pt-
br/commandline/wsl/reference
70
https://www.howtogeek.com/249966/how-to-install-
and-use-the-linux-bash-shell-on-windows-10/
71
E se você combinar todas as soluções anteriores + a
possibilidade de rodar o Ubuntu no Windows, você já será
bem mais feliz! Apesar de nada prático... 
O problema 5 praticamente continua... 
7. Vagrant
O Vagrant é uma ferramenta que permite que criemos
rapidamente ambientes virtuais para fazermos testes,
desenvolvimento ou provisionamento de ambientes utilizando
as soluções de virtualização mais comuns como o Virtualbox e o
VMWare, sendo também compatível com os principais
provedores cloud como AWS, Rackspace e Digitalocean. Além
disto, tem suporte a várias tecnologias de provisionamento
como Puppet, Chef, Salt, Ansible e CFEngine, com isto, você já
cria e configura o ambiente em um único processo, é realmente
mágico.
http://gutocarvalho.net/octopress/2014/05/09/entenda-o-vagrant/
Algumas terminologias importantes:
• Box - É um pacote que contém a base da sua VM. Basicamente é uma imagem do S.O.
Se você não sabe o que é uma imagem é como se fosse um clone do seu Sistema
Operacional que pode ser executado pra subir exatamente a mesma configuração
em outro computador. :)
• Vagrantfile - arquivo que contém as definições para executar a Box. Como serviços
que serão executados, arquivos compartilhados, programas que serão instalados,
etc.
• Guest - É a máquina que foi levantada. Em meios menos técnicos é sua VM.
• Provider - O Software de virtualização(Virtualbox ou VMWare).
• Provisioner - É o software que vai configurar a máquina na hora em que você ligar
ela pela primeira vez e ele também vai verificar se está tudo OK quando iniciar ela de
novo. As opções mais comuns são: Shell Script, Puppet e Chef.
Depêndencias:
• VirtualBox ou VMware (pago )
• Vagrant

Exemplos
Escolha um box e seja feliz! Se não encontrar um que te
atenda, CRIE!
https://atlas.hashicorp.com/boxes/search?_ga=2.130519375.177686634.1497
330572-684445749.1497330572
https://github.com/anasshekhamis/vagrant-frontend-
dev
79
https://github.com/willmendesneto/vagrant-frontend-
mobile-box
80
Mas nada é perfeito!
O Vagrant “levanta” todo o
sistema operacional. E
apesar de mais fácil para
configurar e mais leve que
simplesmente virtualizar,
pode ser um problema em
alguns casos.
Links
• http://gutocarvalho.net/octopress/2014/05/09/entenda-o-vagrant/
• https://nandovieira.com.br/usando-o-vagrant-como-ambiente-de-
desenvolvimento-no-windows
• https://woliveiras.com.br/posts/vagrant-introducao-instalacao/
• https://woliveiras.com.br/posts/configurar-vagrant/
• http://www.akitaonrails.com/2013/10/25/iniciante-criando-um-ambiente-de-
desenvolvimento-com-vagrant-e-chef-solo#.U-_1H_ldX2M
• http://www.erikaheidi.com/vagrant-cookbook/
• https://imasters.com.br/front-end/front-end-ops-
vagrant/?trace=1519021197&source=single
• http://php-pb.net/2014/06/04/vagrant-e-provisionadores/
8. Docker
Primeiro temos que definir o que não é Docker. Docker
não é um sistema de virtualização tradicional. Enquanto
em um ambiente de virtualização tradicional nós temos
um S.O. completo e isolado, dentro do Docker nós temos
recursos isolados que utilizam bibliotecas de kernel em
comum (entre host e container).
http://www.mundodocker.com.br/o-que-e-docker/
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvimento front-end
Algumas terminologias importantes:
• Images - Base para os containers. Como se fossem os “boxes” do Vagrant.
• Dockerfile - Arquivo que contém as definições para automatizar a criação de
images.
• Containers - São criados por Docker Images e rodam as aplicações.
• Docker Daemon - Serviço em background que roda no host e gerencia a
construção, execução e distribuição.
• Docker Client - Linha de comando que permite que o usuário interaja com o
Daemon.
• Docker Compose - Ferramenta para definir e rodar múltiplos containers.
• Docker Hub - Repositório para docker images.
Depêndencias:
• Docker Toolbox

Exemplos
Escolha uma imagem e seja feliz! Se não encontrar uma
que te atenda, CRIE!
https://hub.docker.com/explore/
https://hub.docker.com/r/uwegerdes/frontend-
development/
90
Mas nada é perfeito!
Gerenciar vários containers
pode tornar sua vida um
“Deus nos acuda”.
Links
• https://www.docker.com/products/docker-toolbox
• http://www.mundodocker.com.br/o-que-e-docker/
• https://woliveiras.com.br/posts/uma-rapida-introducao-ao-docker-e-instalacao-
no-ubuntu/
• https://woliveiras.com.br/posts/imagem-docker-ou-um-container-docker/
• https://woliveiras.com.br/posts/comandos-mais-utilizados-no-docker/
• http://stefanteixeira.com.br/2015/03/17/comandos-essenciais-docker-
monitoramento-containers/
• http://trodrigues.net/articles/2015/02/front-end-development-with-docker.html
• https://www.bryanbraun.com/2014/07/15/the-frontend-developers-guide-to-
docker/
• https://fjorgemota.com/docker-containers-para-a-vida-ou-nao/
9. Quando virtualizar, quando usar Vagrant e quando usar
Docker?
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvimento front-end
10. Dúvidas
Ajuda o tio Charles vai. Pergunta não... Tô com fome e sede...
Bora aplaudir e tá de boa... 
TEMOS VAGAS!
https://mundipagg.com/vagas
São Paulo
Rua Fidêncio Ramos, 308, 10º andar, Vila Olímpia
CEP: 04551-902
Rio de Janeiro
Av. General Justo, 375, 9º andar, Centro CEP: 20021-130
www.mundipagg.com
Charles Carrari
ccarrari@mundipagg.com

Mais conteúdo relacionado

PDF
Desenvolvimento PHP com Vagrant - 7Masters PHP
PDF
Programando php com mais segurança
PDF
Async/Await Pattern in C#
PDF
Trabalhando de forma profissional com silex
PDF
Uma breve introdução ao Terraform
PDF
A mágica por trás dos aplicativos ( Api com o Laravel )
PDF
Testando uma aplicação AngularJS utilizando o Karma
ODP
Construindo uma API, Client e Documentação usando Silex, Angular e Swagger
Desenvolvimento PHP com Vagrant - 7Masters PHP
Programando php com mais segurança
Async/Await Pattern in C#
Trabalhando de forma profissional com silex
Uma breve introdução ao Terraform
A mágica por trás dos aplicativos ( Api com o Laravel )
Testando uma aplicação AngularJS utilizando o Karma
Construindo uma API, Client e Documentação usando Silex, Angular e Swagger

Mais procurados (20)

PPTX
APIs do Jeito Certo
PPTX
Evitando a fadiga com Laravel Homestead
PDF
Por que jenkins se posso usar deployer php
PPTX
Laravel 5: Entenda o ambiente e a estrutura MVC
PDF
Dez dicas para_acompanhamento_de_bugs
PDF
Cya grunt.js, hello gulp.js
PDF
Boas Práticas de programação WordPress
PDF
Os 10 maus hábitos dos desenvolvedores JSF
PDF
Lab python django - parte 2 - python + virtualenv
PDF
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
PDF
Curso de ReactJS
PDF
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
PDF
Migrations for Java (Javou #4 - JavaCE)
PPT
Minicurso Play Framework - Tão fácil que nem parece Java
PDF
Usando vitual box parte 2
PDF
Burlando Waf 2.0
PPTX
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
PDF
Oficina de infraestrutura como código (apresentando o Puppet)
PDF
burlando um WAF
PDF
Vivendo de hacking
APIs do Jeito Certo
Evitando a fadiga com Laravel Homestead
Por que jenkins se posso usar deployer php
Laravel 5: Entenda o ambiente e a estrutura MVC
Dez dicas para_acompanhamento_de_bugs
Cya grunt.js, hello gulp.js
Boas Práticas de programação WordPress
Os 10 maus hábitos dos desenvolvedores JSF
Lab python django - parte 2 - python + virtualenv
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Curso de ReactJS
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Migrations for Java (Javou #4 - JavaCE)
Minicurso Play Framework - Tão fácil que nem parece Java
Usando vitual box parte 2
Burlando Waf 2.0
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Oficina de infraestrutura como código (apresentando o Puppet)
burlando um WAF
Vivendo de hacking
Anúncio

Semelhante a JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvimento front-end (20)

PDF
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
PDF
Vagrant uma ferramenta realmente útil e versátil
PDF
Vagrant - ambiente de desenvolvimento virtualizado
PPT
PDF
Vagrant + Puppet
PDF
Vagrant sti
PDF
O que move a web atualmente?
PPTX
IntroduçãO Ao Desenvolvimento Web 2
PPTX
PHP Conference 2016
PPTX
Introdução ao desenvolvimento web - 2 - iDez 2010
PDF
Introdução ao docker
PPTX
OmbrosDeGigantes-TDC2014
PDF
DevOps Primeiros Passos
PPTX
Novas Fronteiras
PDF
OpenShift : TaSafoConf 2012
PPTX
Desmistificando um Ambiente de Desenvolvimento WEB com Vagrant
PDF
Vagrant + chef cookbooks ambiente de desenvolvimento como o de produção em ...
PDF
Hands on para (web)Developers Docker vs Vagrant
PDF
Construção e provisionamento de ambientes de desenvolvimento virtualizados
PDF
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Vagrant uma ferramenta realmente útil e versátil
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant + Puppet
Vagrant sti
O que move a web atualmente?
IntroduçãO Ao Desenvolvimento Web 2
PHP Conference 2016
Introdução ao desenvolvimento web - 2 - iDez 2010
Introdução ao docker
OmbrosDeGigantes-TDC2014
DevOps Primeiros Passos
Novas Fronteiras
OpenShift : TaSafoConf 2012
Desmistificando um Ambiente de Desenvolvimento WEB com Vagrant
Vagrant + chef cookbooks ambiente de desenvolvimento como o de produção em ...
Hands on para (web)Developers Docker vs Vagrant
Construção e provisionamento de ambientes de desenvolvimento virtualizados
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
Anúncio

Mais de iMasters (20)

PPTX
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
PDF
Postgres: wanted, beloved or dreaded? - Fabio Telles
PPTX
Por que minha query esta lenta? - Suellen Moraes
PPTX
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
PDF
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
PPTX
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
PDF
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
PDF
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
PDF
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
PDF
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
PDF
Entendendo os porquês do seu servidor - Talita Bernardes
PDF
Backend performático além do "coloca mais máquina lá" - Diana Arnos
PPTX
Dicas para uma maior performance em APIs REST - Renato Groffe
PPTX
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
PDF
Quem se importa com acessibilidade Web? - Mauricio Maujor
PDF
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
PDF
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
PDF
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
PDF
Construindo aplicações mais confiantes - Carolina Karklis
PDF
Monitoramento de Aplicações - Felipe Regalgo
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
Postgres: wanted, beloved or dreaded? - Fabio Telles
Por que minha query esta lenta? - Suellen Moraes
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Entendendo os porquês do seu servidor - Talita Bernardes
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Dicas para uma maior performance em APIs REST - Renato Groffe
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
Quem se importa com acessibilidade Web? - Mauricio Maujor
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Construindo aplicações mais confiantes - Carolina Karklis
Monitoramento de Aplicações - Felipe Regalgo

Último (12)

PDF
A teoria como arma da luta_ unidade, luta e cultura no pensamento político de...
PDF
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
PPTX
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
PDF
A sua pontuação aumenta ao escolher uma categoria, preencher uma descrição lo...
PDF
Certificado de Conclusão Jornada Inteligência Artificial
PPTX
Classifirrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrcação_IPAQ.pptx
PPTX
TURMA modelo de modelo apresentação 4DE.pptx
PDF
Metodologias ágeis - Slides - aulas 1 a 5.pdf
PDF
Apostila_de_Laboratorio_de_Quimica_Inorg.pdf
PDF
CORPO, ALMA E ESPÍRITO cura inteiror.pdf
PDF
A teoria como arma da luta_ unidade, luta e cultura no pensamento político de...
PPTX
AULA DE HTML E CSS PARA INICIANTES EM INFORMÁTICA
A teoria como arma da luta_ unidade, luta e cultura no pensamento político de...
Agosto-Lilas-Conscientizacao-e-Combate-a-Violencia-contra-a-Mulher.pdf
Fundamentos do Desenvolvimento Web. Fundamentos do Desenvolvimento Web.Fundam...
A sua pontuação aumenta ao escolher uma categoria, preencher uma descrição lo...
Certificado de Conclusão Jornada Inteligência Artificial
Classifirrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrcação_IPAQ.pptx
TURMA modelo de modelo apresentação 4DE.pptx
Metodologias ágeis - Slides - aulas 1 a 5.pdf
Apostila_de_Laboratorio_de_Quimica_Inorg.pdf
CORPO, ALMA E ESPÍRITO cura inteiror.pdf
A teoria como arma da luta_ unidade, luta e cultura no pensamento político de...
AULA DE HTML E CSS PARA INICIANTES EM INFORMÁTICA

JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvimento front-end