Nas nuvens com Python, Docker e Aws

By Rondineli Gomes

Tópicos

  1. Quem é Rondineli ?
  2. Desmitificando um DevOps
  3. O que é “deploy” ?
  4. Por quê tanto cuidado com o “deploy” ?
  5. O que é Docker ?
  6. O que é Docker Hub ?
  7. O que é AWS, Scaling, Ec2, Multi-AZ e ElasticBeanstalk
  8. Como monitorar meu deploy ?  
  9. Hands-On
  1. 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