5. DevOps: desenvolvendo e orquestrando
=======================================
5.1 - O que é DevOps
--------------------
* Aproximação da administração de sistemas (sysadmin) com o desenvolvimento.
* Entregas constantes em ambientes de alta disponibilidade.
* Foco na automação.
Imagens:
* https://upload.wikimedia.org/wikipedia/commons/b/b5/Devops.svg
5.2 Ambientes reprodutíveis
---------------------------
5.2 - Ambientes
~~~~~~~~~~~~~~~
* Um software depende do seu ambiente para funcionar.
* Se o ambiente muda, o software pode parar de operar corretamente.
* O primeiro princípio DevOps é manter um ambiente de hospedagem reprodutível.
5.2 - Reprodutibilidade
~~~~~~~~~~~~~~~~~~~~~~~
* Automação básica para criar um ambiente de hospedagem a partir de elementos básicos: máquinas virtuais, repositório do código, etc.
* Provision (provisionamento): criação do ambiente de hospedagem.
* Deploy (disponibilização): envio do software para o ambiente.
5.2 - Estágios
~~~~~~~~~~~~~~
No caso de uma arquitetura de serviços, temos os seguintes ambientes:
* Desenvolvimento: em geral na máquina do(a) desenvolvedor(a).
* Testes e estágio (staging): onde versões do software são hospedadas antes de irem ao ar.
* Produção: onde o software está realmente hospedado.
5.3 - Máquinas virtuais
-----------------------
5.3 - Paradigmas
~~~~~~~~~~~~~~~~
* Um computador é uma máquina de Turing, podendo simular qualquer máquina, inclusive uma máquina de Turing.
* Uma máquina virtual nada mais do que um software simulando o comportamento parcial ou integral de um computador.
5.3 - Implementações
--------------------
* Contêiners: chroot, Linux-VServer, OpenVZ, docker.
* Paravirtualizadores: Xen.
* Virtualizadores: KVM, VirtualBox.
* Gestores de nuvem: OpenStack.
5.4 - Vagrant
-------------
Roteiro do screencast:
::
# Instalando o vagrant
sudo apt-get install vagrant
cd ~/projetos/blogatico
vagrant init
5.5 - Integração contínua
-------------------------
- Integração contínua usando o `Travis CI `_.
5.6 - Fazendo o deploy
----------------------
- SSH e rsync.
- Deploy via git.
5.7 Atividades
--------------
#. Instale o vagrant.
#. Crie uma máquina virtual para desenvolver o seu projeto.
#. Crie uma conta no Travis CI.
5.8 - Referências
-----------------
- `Trilha sonora: Daft Punk - TRON Legacy `_.
- `Automatizando a instalação (deploy) e atualização de sites com Git `_.
- `Deploy estilo Heroku usando Git – Elton Minetto `_.
- `Deploy fácil com git - Dan Jesus `_.
- `PuPHPet - Online GUI configurator for Puppet & Vagrant `_.
- https://github.com/juancarlospaco/css-html-js-minify
- https://packages.debian.org/stable/tidy