Nas nuvens com Python, Docker e Aws

By Rondineli Gomes
Tópicos
- Quem é Rondineli ?
- Desmitificando um DevOps
- O que é “deploy” ?
- Por quê tanto cuidado com o “deploy” ?
- O que é Docker ?
- O que é Docker Hub ?
- O que é AWS, Scaling, Ec2, Multi-AZ e ElasticBeanstalk
- Como monitorar meu deploy ?
- Hands-On
- Quem é Rondineli ?
- O cara feio da foto ai do lado
- Atualmente DevOps numa startup de empréstimos online
- Tem 8 anos de experiência com ambientes de alta disponibilidade
- Pythonista de paixão, amante de tecnologia e trabalha ~15h por dia
- Já trabalhou com grandes portais de e-commerce

2. Desmitificando um DevOps





2. Desmitificando um DevOps
- “Pau pra toda obra” - Wikipédia
- Iniciou em 2009, através do trabalho “10+ Deploys Per Day – Flickr”, apresentado no evento velocity – O'Really
- Concebido de um encontro “DevOpsDay” - Patrick Debois
- Desenvolvedor de operações
- DevOps ~ SysAdmin
- InfraEstrutura sob demanda e a nível de código
- Ágile Sysadmin
- Deploy 24x7
- InfraEstrutura e Devs – Protegendo o negocio e evoluindo o negócio
- Deploy do código e da infra de forma estruturada
- Orquestradores, configuration management, provisionamento
2. Desmitificando um DevOps
- InfraEstrutura Ágil != DevOps
- DevOps depende de InfraEstrutura Ágil
- DevOps é uma CULTURA
- DevOps é AUTOMAÇÃO
- DevOps é Avaliação
- DevOps é Compartilhamento
- DevOps é Infra, Dev, Versionamento, Backup, Monitoramento, Deploy… TDD, Gerenciamento … Entrega continua … Continua … Continua … Continua ...
2. Desmitificando um DevOps
-
Conclusão ...
DevOps não é nada novo, as boas práticas defendidas pelo DevOps sempre existiram. Logo, esse 'juntado' de skills, é algo trivial pra muitas pessoas. Mas, para alguns, essas referências são utilizadas pra aplicar as mudanças necessárias.
3. O que é “deploy” ?
-
Você disse Deploy ?
Deploy, nada mais é que “implementar” atualizações, novas versões, novos sistemas, novas funcionalidades, correções e etc … na sua aplicação em produção
4. Por quê tanto cuidado com o “deploy” ?
- Preocupação antiga de infra…
- Garantir o uptime (SLA)
- Garantir o crescimento de valor contínuo do produto
- Garantir o cliente satisfeito
- Garantir a infra segura
- E …
- Manter Dev, Infra, Negócio, Cliente, P.O, PMO, CTO … todos felizes e satisfeitos
5. O que é Docker ?
- “MAQUINA”, “SERVIDOR”, “HOST” ...ARGHHHHH
- O termo máquina, quando falado de docker, sempre será usado de forma “sacas?”.
- Este termo virá entre aspas, por conta que o docker engine, é um isolamento do kernel onde está “hospedado”
- Utiliza tecnologias LXC, Aufs, Btrfs
- Imagens e Containers
- Imagem é uma camada somente leitura e compartilhada por N “máquinas”, uma vez alterada, todas as N “maquinas”, receberão a alteração feita pela a imagem
- Containers, são as camadas montadas com leitura e escrita, são onde ocorrem de fato a alteração e execução da “máquina”. Onde as alterações da imagem são executadas.
5. O que é Docker ?

6. O que é Docker Hub ?
Esse treco parece o GitHub!!!
- Repositorio de imagens versionadas
- Onde “salvo” as alterações de minhas imagens
- Pull, Push, Commit, Run, Config …
- O DockerHub é um cloud para distribuição, descoberta e gerenciamento de mudanças efetuadas nessas imagens
7. O que é AWS, Scaling, Ec2, Multi-AZ e ElasticBeanstalk



7. O que é AWS, Scaling, Ec2, Multi-AZ e ElasticBeanstalk
-
AWS – Amazon Web Services
- Cloud, Nuvem, InfraEstrutura sob demanda, Infra em código
- Fundada em 2006
- MarketPlace de serviços e produtos
- “pay-as-you-go pricing”
- Agilidade, Instantâneo, Seguro, flexível …
7. O que é AWS, Scaling, Ec2, Multi-AZ e ElasticBeanstalk
-
Scaling … Everest ??
- Ajuda a atender a demanda, mantendo a disponibilidade
- Pode aumentar e diminuir sua infra ...lembre-se: “pay-as-you-go pricing”
- Mantenha sua mente aberta: “Sob demanda”
- Cite um case? Netflix!
- Pague barato e deixe seu cliente final feliz
- Servidor lotado de conexões, alto consumo de rede e cpus
7. O que é AWS, Scaling, Ec2, Multi-AZ e ElasticBeanstalk
-
Elastic Compute Cloud …. What??
- Aluguel de servidores, com recursos optimizados de acordo com sua necessidade
- Sob Demanda ou somente minha? O que é OnDemand e Instancias reservadas?
- Use créditos, use T2 … e tenha um site no ar de graça

7. O que é AWS, Scaling, Ec2, Multi-AZ e ElasticBeanstalk
-
Disponível em todas as letras do alfabeto
- No ar em diferentes Zonas de disponibilidades
- Rede local em diferentes datacenters
- Sem perdas de pacotes
- Mas nem tudo são flores, cada um no seu quadrado (EBS, Instancia, subnets e snapshots não se misturam entre as zonas de disponibilidades)
- Balanceadores e DNS Failovers
7. O que é AWS, Scaling, Ec2, Multi-AZ e ElasticBeanstalk
-
Não faço nada, ele faz tudo … e eu confio!
- Orquestrando a infra
- Fazendo deploy, rollback sem downtime
- Deploy progressivo
- Elastic Load Balancer, Auto Scaling, Ec2, DNS, VPC, Configuration Management eeeeee… Health Check.
- Camadas de aplicação no mesmo ambiente
- Monitoração de alto nível

8. Como monitorar meu deploy ?
-
OK, ok … Como vejo se meu deploy está ok ?
- Green, Red, Yellow
- Eventos em real-time
- Gerenciamento de monitoramentos externos (NewRelic, Zabbix, Nagios, SLACK!!)
- LifeCycle Hooks … Uma mão na roda!!




9. Hands-On
-
A hora do lanche é a hora mais feliz…
- Conhecendo o Console dos itens que vimos
- Ok...Show me the Code!
- Conhecendo o eb-cli
- Fazendo um deploy com docker, django e elastic beanstalk
9. Hands-On
-
Ok ... Show me the Code!!

9. Hands-On
-
Ok ... Show me the Code!!

Projeto Django
9. Hands-On
-
Ok ... Show me the Code!!

Elastic Beanstalk configurations
9. Hands-On
-
Ok ... Show me the Code!!

Docker Container Files
9. Hands-On
-
Ok ... Show me the Code!!

Pacote deploy
9. Hands-On
-
Ok ... Show me the Code!!

9. Hands-On
-
Ok ... Show me the Code!!

9. Hands-On
-
Montando o ambiente…
- Criando os .ebconfigurations e .ebextensions
- Criando o Dockerfile
- Montando o Procfile
- Criando as variaveis de ambiente
9. Hands-On
-
Acessando o ambiente…
- Clonando o ambiente
- Instalando o eb-cli
- Acessando o container
- Buildando um container
- Olhando os logs da aplicação
9. Hands-On
-
Clonando o ambiente
- git clone git@github.com:Rondineli/pybr11_tutorial.git /opt/pybr11_tutorial
9. Hands-On
-
pip install awsebcli
- eb init
- Virginia
- Create a new Application
- tuto_pybr11_django
- pybr11_keypair
- eb create pybr11
- eb deploy pybr11
9. Hands-On
-
Comandos do docker
- $sudo /opt/elasticbeanstalk/containerfiles/support/generate_env > env.txt
- docker run -i -t --env-file=env.txt aws_beanstalk/staging-app /bin/bash
- docker build -t aws_beanstalk/staging-app .
- docker ps -a | docker kill | docker logs |docker rm
Obrigado !!!
https://br.linkedin.com/in/rondineliaraujo
https://twitter.com/RondineliGomes
rondineli.gomes.araujo@gmail.com
rondineli.gomes.araujo



