Slide 1

Slide 1 text

DEPLOY COMPLETO DE UMA APLICAÇÃO DJANGO Allisson Azevedo Monday, May 13, 13

Slide 2

Slide 2 text

ALLISSON AZEVEDO Graduado em Licenciatura em Computação Desenvolvedor Web http://speakerdeck.com/allisson http://slideshare.net/allisson http://github.com/allisson http://youtube.com/user/allissonazevedo Monday, May 13, 13

Slide 3

Slide 3 text

Monday, May 13, 13

Slide 4

Slide 4 text

Monday, May 13, 13

Slide 5

Slide 5 text

DEPLOY Colocar sua aplicação em produção “Botar o bicho para funcionar” Monday, May 13, 13

Slide 6

Slide 6 text

MAS EU SOU APENAS UM DESENVOLVEDOR... Desenvolvedores devem saber como funciona o processo de deploy de sua aplicação Provavelmente será sua responsabilidade Simular o ambiente de produção localmente Apenas em empresas grandes você vai ter um time especializado em infra Monday, May 13, 13

Slide 7

Slide 7 text

NÃO QUERO ESQUENTAR A CABEÇA COM DEPLOY Use um PAAS (Platform as a Service - Plataforma como Serviço) Heroku AWS Elastic Beanstalk EngineYard (sem suporte a python) Google Appengine Monday, May 13, 13

Slide 8

Slide 8 text

ONDE HOSPEDAR? Não use servidores compartilhados (shared hosting) Linode 1 Gb de ram, 24 Gb storage, 2 Tb transferência $20 AWS EC2 Rackspace Monday, May 13, 13

Slide 9

Slide 9 text

QUAL SISTEMA OPERACIONAL? Linux (GNU/Linux para não ofender ninguém) Prefira distribuições com longo tempo de suporte Ubuntu Server LTS (5 anos) RHEL e CentOS (7 anos) Monday, May 13, 13

Slide 10

Slide 10 text

PORQUE NGINX E NÃO APACHE? Apache process-based (forking or threaded) Nginx asynchronous (event-driven) http://daverecycles.com/post/3104767110/explain- event-driven-web-servers-to-your-grandma Monday, May 13, 13

Slide 11

Slide 11 text

POSTGRESQL OU MYSQL? Dois ótimos servidores Se for usar o MySQL, use a engine innodb nas tabelas Monday, May 13, 13

Slide 12

Slide 12 text

CONECTANDO SUA APLICAÇÃO FastCGI Geralmente a opção disponível em servidores compartilhados WSGI Padrão do python (PEP 333) http://allissonazevedo.com/2011/08/25/introducao- ao-wsgi/ Monday, May 13, 13

Slide 13

Slide 13 text

GUNICORN (GREEN UNICORN) Port do Unicorn (ruby) para python Servidor HTTP que suporta WSGI nativamente “Python WSGI HTTP Server for UNIX. It's a pre-fork worker model ported from Ruby's Unicorn project.” Monday, May 13, 13

Slide 14

Slide 14 text

SUPERVISOR É um sistema cliente/servidor que permite que os usuários monitorem e controlem processos em sistemas Unix like. Não é executado para substituir o init padrão do sistema operacional Monday, May 13, 13

Slide 15

Slide 15 text

SENTRY Plataforma para monitorar erros em uma aplicação web Escrito em Django O cliente raven enviam as informações para o servidor Substituir o comportamento padrão de enviar um e- mail no caso de exceção não tratada no Django Monday, May 13, 13

Slide 16

Slide 16 text

OBJETIVO Fazer o deploy da aplicação shortener http://github.com/allisson/django-shortener-example Monday, May 13, 13

Slide 17

Slide 17 text

O QUE VAMOS USAR? Nginx para servir conteúdo estático e redirecionar as requisições para o gunicorn Gunicorn como servidor de aplicação Supervisor para gerenciar os processos do gunicorn Postgresql como banco de dados Sentry para gerenciar possíveis erros em produção Monday, May 13, 13

Slide 18

Slide 18 text

MÃO NA MASSA! Monday, May 13, 13

Slide 19

Slide 19 text

PERGUNTAS? Monday, May 13, 13