Django Docker e Amazon Container Services Nilo Menezes

  • Slides: 18
Download presentation
Django, Docker e Amazon Container Services Nilo Menezes pythonnilo@gmail. com

Django, Docker e Amazon Container Services Nilo Menezes pythonnilo@gmail. com

Plano • Django • Docker • Amazon Container Services

Plano • Django • Docker • Amazon Container Services

Django • Web framework • Desenvolvimento rápido • Execução não é a coisa mais

Django • Web framework • Desenvolvimento rápido • Execução não é a coisa mais rápida do mundo

Django workers uwsgi db workers nginx

Django workers uwsgi db workers nginx

Docker • Gerenciador de containers • Containers: – VM-s leves – Tem sua própria

Docker • Gerenciador de containers • Containers: – VM-s leves – Tem sua própria rede – Sistema de arquivos próprio • Excelente para desenvolvimento • E para deploy

Django e Docker • Container para nginx • Container para uwsgi • Container para

Django e Docker • Container para nginx • Container para uwsgi • Container para o banco de dados

Escalabilidade • Aumentar o número de instâncias em função da carga/volume de acesso •

Escalabilidade • Aumentar o número de instâncias em função da carga/volume de acesso • Idealmente sem modificar a aplicação • Entram os load balancers

Load Balancer • • • Balanceador de Carga Recebe conexões em nome de um

Load Balancer • • • Balanceador de Carga Recebe conexões em nome de um serviço E as repassa para instancias reais Age como um proxy Auxilia a escalar os serviços, permitindo que mais instâncias sejam adicionadas de forma transparente

Balanceador de Carga workers db uwsgi Load balancer workers workers uwsgi nginx

Balanceador de Carga workers db uwsgi Load balancer workers workers uwsgi nginx

Amazon • • Object Storage – s 3 RDS – Relational Database Services EC

Amazon • • Object Storage – s 3 RDS – Relational Database Services EC 2 – Elastic Computer Cloud ECS – EC 2 Container Services ECR – EC 2 Container Registry Route 53 ELB – Elastic Load Balancer

Amazon workers db (RDS) uwsgi workers uwsgi Load balancer (ELB) workers nginx

Amazon workers db (RDS) uwsgi workers uwsgi Load balancer (ELB) workers nginx

ECS • Gerencia um cluster capaz de rodar instâncias de serviços • Configurável pela

ECS • Gerencia um cluster capaz de rodar instâncias de serviços • Configurável pela web ou via api • Reutiliza a configuração do docker • Permite parar e iniciar os serviços progressivamente • Fácil de alterar o número de instâncias

ECS • • Toda configuração nos containers Máquinas do cluster rodam apenas containers Gerencia

ECS • • Toda configuração nos containers Máquinas do cluster rodam apenas containers Gerencia onde cada container vai rodar Registra novas instâncias no ELB

ECS Uwsgi +workers nginx Load balancer (ELB) db (RDS) Load balancer (ELB) Uwsgi +workers

ECS Uwsgi +workers nginx Load balancer (ELB) db (RDS) Load balancer (ELB) Uwsgi +workers nginx

ECS • Com vários níveis de ELB, os serviços podem ser escalados independentemente •

ECS • Com vários níveis de ELB, os serviços podem ser escalados independentemente • Várias instâncias permitem o deploy de novas versões, sem parar a versão corrente • Novas máquinas podem ser acrescentadas ao cluster facilmente

Gargalos • Banco de dados! Difícieis de escalar! • Soluções: – Read replicas –

Gargalos • Banco de dados! Difícieis de escalar! • Soluções: – Read replicas – modificam a aplicação – Sharding – modificam a aplicação – No. SQL – modificam a aplicação

A observar • Não abusar de templates • Manter o código enxuto • Mover

A observar • Não abusar de templates • Manter o código enxuto • Mover as tarefas de longa duração para uma fila de mensagens (celery + rabbitmq) • Usar cache onde for possível • Nunca servir arquivos estáticos pelo Django • Frameworks com suporte a Amazon Lambda (Zappa, Chalice, etc)

Obrigado

Obrigado