[Python floripa 29]
- Python como linguagem de produtividade com Flask micro-framework
- Deploy de aplicação em ambiente de cloud computing utilizando Docker
1. Copyright 2015 Google Inc
Python Floripa 29
Flask e Docker
Rumo à AWS!
Ryan Padilha (ryan.padilha@gmail.com)
Os desafios da entrega no mundo em cloud
2. Copyright 2015 Google Inc
Simply in love with technology.
JavaEE expert, SOA specialist and technical writer.
Experience of 13+ years in solution design and development software.
Working on Software Architecture, DevOps Culture and Cloud Computing.
http://ryanpadilha.com.br
http://br.linkedin.com/in/ryanpadilha
Ryan Padilha
3. Copyright 2015 Google Inc
Agenda
Introdução
Python com Flask
1
2
Empacotamento com Docker3
• Descritivo
• Python como linguagem de produtividade com Flask micro-framework
• Deploy de aplicação em ambiente de cloud computing utilizando Docker
O mundo mudou, e agora?4
4. Copyright 2015 Google Inc
Introdução
• Desenvolvimento rápido de aplicações web
• Flask Framework como vantagem competitiva
• Produtividade baseada em arquitetura funcional
• Estrutura de infraestrutura com load balance e workers
• Configuração e organização de infraestrutura para deploy
• Empacotamento de aplicações com Docker
• Pensamento inicial da cultura de DevOps
5. Copyright 2015 Google Inc
Python com Flask
• Flask é um microframework baseado em WSGI
• Possui um vasto conjunto maduro de extensões
• Características principais:
• Servidor werkzeug de desenvolvimento e debug integrado
• RESTful request dispatching
• Template engine baseado em Jinja2
• Suporte a cookies seguros (client session)
• Documentação extensa
• Comunidade presente e ativa!
6. Copyright 2015 Google Inc
Arquitetura em Flask
• Confusão ou liberdade para arquitetar aplicações?
• Application Factory
• Blueprints
• Gerenciamento de rotas
• Environment Configuration
• Error Handlers
• Logging e Debugging
• Webservices RESTful
• Renderização de templates
• Conexão com Base de Dados
• Modelo de autenticação e autorização
7. Copyright 2015 Google Inc
Arquitetura em Flask
• Blueprint é usado para organizar o projeto entre componentes distintos
• Escolha seu modelo de acordo com o projeto:
• Estrutura Funcional - flask-website github
• Organização baseada em responsabilidades
• Agrupa arquivos semelhantes
• Estrutura Divisional
• Organização baseada em módulos
• Empacotamento
• http://exploreflask.com/en/latest/index.html
8. Copyright 2015 Google Inc
Empacotamento - Introdução
• Ambiente de execução bare-metal ou cloud computing ?
• Configuração de load balance
• Configuração de banco de dados
• Instalação do Python e gerenciamento de dependências - venv
• Escolha do servidor de WSGI - Gunicorn ou uWSGI
• Modelo de empacotamento - Distutils ou Setuptools
• Modelo tradicional de deploy
• O que podemos fazer para levar para produção a aplicação?
10. Copyright 2015 Google Inc
Conhecendo o Docker
• Apresentado na PyCon US em 2013
• Plataforma para “develop, deploy and run”
• Camada adicional de abstração e automação de virtualização
• Containers como serviços e integração contínua
• Automatização por scripts no estilo “Infraestrutura como Código”
• Características principais:
• Baseado em LXC (LinuX Containers)
• Isolamento de recursos do kernel com cgroups e namespaces
• Sistema de arquivos baseado em camadas - UnionFS
• Idempotente e agnóstico em relação a cloud computing
12. Copyright 2015 Google Inc
• Pré-requisitos:
• Instalação do Docker CE Runtime - AWS e Azure
• Instalação do Docker Compose
• Familiaridade com repositório de container - Docker Hub
• Passos - exemplo gist:
• Arquivo dockerfile para build de imagem **
• Dockerfile na raiz do projeto
• Docker Compose descritivo de ambiente de infraestrutura
Empacotando com Docker
13. Copyright 2015 Google Inc
Empacotando com Docker
• Modelo simplificado de infraestrutura