SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Criando e escalando uma
aplicação Python/Flask + MySQL
Mateus Caruccio - CEO
mateus.caruccio@getupcloud.com
@mateuscaruccio
Assista o video em http://goo.gl/wYylfj
Getup Cloud
● PaaS - Platform as a Service
● Camada de abstração sobre a Infra (IaaS)
● Foco em desenvolvimento
[ Aplicação ] ← Você
[ PaaS ] ← Nós
[ IaaS ] ← Amazon/Rackspace/Etc.
[ VM|HW ]
OpenShift Origin
● Open Source – sem lock-in
https://github.com/openshift/origin-server
https://github.com/getupcloud/origin-server
https://github.com/VOCÊ/origin-server !
● Padronização de componentes – Cartridges
● Agnóstico a linguagens – qualquer binário
● Isolamento total entre aplicações
SELinux, cgroups
Docker.io em breve!
OpenShift Origin (cont.)
● DNS e SSL built-in
● Git
$ git commit && git push
... e pronto (morte ao ftp!)
● Integração Contínua com Jenkins
Gear
● Gear: ambiente de execução
● Compartilha recursos do host
Fatia de CPU + 512 MB RAM + 1G Disco
Pense no gear como um servidor particular,
que você não precisará administrar
Cartridge
● Componente de código, executa no gear.
● Cartridges disponíveis
Linguagem: PHP, Python, Ruby, Nodejs, Java, Go...
Banco: MySQL/MariaDB, PostgreSQL, MongoDB...
Cache: Memcached, Redis...
WebServer: Apache, Nginx
● Do-It-Yourself (DIY) -> Template exemplo
● Onde procurar: https://github.com/search?q=openshift
Aplicação
● Gear(s) + Cartridge(s) = Aplicação
● Não escalável:
Um gear
● Escalável:
Múltiplos gears
Quickstart
● Aplicações prontas:
Wordpress, Drupal, Rails, Magento, Sinatra, Django, Tiny Tiny RSS...
● Provavelmente já existe o que você procura
https://github.com/search?q=openshift+quickstart&type=Repositories
Ferramentas - Console Web
● Prós
○ Fácil
○ Rápido
○ Next -> Next -> Finish
● Cons
○ Menor flexibilidade
https://broker.getupcoud.com
Ferramentas - RHC (terminal)
● Prós
○ Fácil
○ Mais rápido ainda
○ API completa
● Cons
○ Precisa instalar localmente
Linux/Mac: $ gem install rhc
Windows: https://github.com/getupcloud/openshift-rhc-installer/releases
$ rhc [comando] [opções]
Ferramentas - Eclipse (IDE)
● Prós
○ Ambiente de dev completo
○ Amplamente conhecido
○ Deploy fácil via plugin
● Cons
○ Precisa instalar localmente
Ferramentas - GIT
● Prós
○ É o git... não preciso falar mais :)
● Cons
○ Curva de aprendizado
Sugestão: Instale um cliente gráfico:
● http://git-scm.com/downloads/guis
● https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools
● Dica: TortoiseGit é massa - https://code.google.com/p/tortoisegit/
Mão na massa
● Antes de começar, instale/atualize seu RHC:
○ Linux/Mac
$ gem install rhc
$ gem update rhc
○ Windows
https://github.com/getupcloud/openshift-rhc-installer/releases
Criar a aplicação
Toda aplicação precisa de um cartridge web
$ rhc cartridges
php-5.3 PHP 5.3 web
python-2.6 Python 2.6 web
python-2.7 Python 2.7 web
python-3.3 Python 3.3 web
ruby-1.8 Ruby 1.8 web
$ rhc app create flask python-2.7 --scaling
Acesse em http://flask-[namespace].getup.io
Nome do app Cartridge web Auto-escalável
Adicionar cartridge MySQL
$ rhc cartridge add mysql-5 --app flask
Conecte no banco usando env vars do gear:
> env|grep OPENSHIFT_MYSQL
OPENSHIFT_MYSQL_DB_HOST=524b7b8bc99349fc7c00006c-caruccio.getup.io
OPENSHIFT_MYSQL_DB_PORT=43556
OPENSHIFT_MYSQL_DB_USERNAME=adminXXX
OPENSHIFT_MYSQL_DB_PASSWORD=passwdXXX
OPENSHIFT_MYSQL_DB_URL=mysql://admXXX:passXXX...flask-caruccio.getup.io:43556/
Sim, é só isso.
Informações sobre a aplicação
$ rhc app show flask
Listar os gears:
$ rhc app show flask --gears
Acessar o gear web:
$ rhc ssh flask
Acessar um gear específico:
$ ssh [UUID]@[UUID]-[NAMESPACE].getup.io
ssh url
Flask!
“Talk is cheap. Show me the code” - Linus
from flask import Flask
app = Flask(__name__)
@app.route("/") ← quando bater em “/”
def hello(): ← executar isso
return "Hello World!" ← retornar isso
if __name__ == "__main__":
app.run()
http://flask.pocoo.org/
Nossa aplicação Flask
Usando um quickstart reutilizamos código
https://github.com/caruccio/openshift-flask-mysql-example
$ cd flask
$ git remote add upstream -m master 
https://github.com/caruccio/openshift-flask-mysql-example
$ git pull -s recursive -X theirs upstream master
$ git push
Inicializando o BD
$ rhc ssh flask
> source python/bin/activate_virtenv
> cd $OPENSHIFT_REPO_DIR/wsgi
> python
>>> from myflaskapp import *
>>> db.create_all()
>>> admin = User('admin', 'admin@example.com')
>>> guest = User('guest', 'guest@example.com')
>>> db.session.add(admin)
>>> db.session.add(guest)
>>> db.session.commit()
SSH no gear
Ativando
virtualenv
Populando
a base
Inicializando o BD
Listar usuários:
GET http://flask-caruccio.getup.io
Acessar usuário:
GET http://flask-caruccio.getup.io/guest
Incluir usuário:
$ curl http://flask-caruccio.getup.io/coderstv 
--data email=coderstv@getupcloud.com
Escalando o Everest
● Usando o Apache Benchmarking Tool
○ 60 reqs simultâneas
○ 100.000 reqs total
$ ab -n 100000 -c 60 http://flask-caruccio.getup.io/
Tempo de warm up: 1:30s
Monitorando gears:
HAProxy →http://flask-caruccio.getup.io/haproxy-status
$ watch -n 1 rhc app show flask --gears

Mais conteúdo relacionado

Mais procurados

Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Renato Groff
 
ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018Renato Groff
 
O novo ASP.NET - ThinkUP! - Janeiro/2017
O novo ASP.NET - ThinkUP! - Janeiro/2017O novo ASP.NET - ThinkUP! - Janeiro/2017
O novo ASP.NET - ThinkUP! - Janeiro/2017Renato Groff
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Renato Groff
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Renato Groff
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Renato Groff
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Renato Groff
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Michael Douglas
 
Docker para Desenvolvedores .NET - .NET SP - Abril-2018
Docker para Desenvolvedores .NET - .NET SP - Abril-2018Docker para Desenvolvedores .NET - .NET SP - Abril-2018
Docker para Desenvolvedores .NET - .NET SP - Abril-2018Renato Groff
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Renato Groff
 
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018Renato Groff
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Renato Groff
 
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Renato Groff
 
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018Renato Groff
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Renato Groffe
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...Renato Groff
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...Renato Groffe
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Renato Groff
 

Mais procurados (20)

Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
 
ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018ASP.NET Core 2.0 - Pointer - Janeiro-2018
ASP.NET Core 2.0 - Pointer - Janeiro-2018
 
O novo ASP.NET - ThinkUP! - Janeiro/2017
O novo ASP.NET - ThinkUP! - Janeiro/2017O novo ASP.NET - ThinkUP! - Janeiro/2017
O novo ASP.NET - ThinkUP! - Janeiro/2017
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
 
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
 
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
 
Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php Por que jenkins se posso usar deployer php
Por que jenkins se posso usar deployer php
 
Graalvm
GraalvmGraalvm
Graalvm
 
Docker para Desenvolvedores .NET - .NET SP - Abril-2018
Docker para Desenvolvedores .NET - .NET SP - Abril-2018Docker para Desenvolvedores .NET - .NET SP - Abril-2018
Docker para Desenvolvedores .NET - .NET SP - Abril-2018
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
 
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018
 
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
 
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 

Destaque

Integrando aplicações com redis
Integrando aplicações com redisIntegrando aplicações com redis
Integrando aplicações com redisFelipe Monteiro
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Otávio Santana
 
Redis – What, Why, When, How?
Redis – What, Why, When, How?Redis – What, Why, When, How?
Redis – What, Why, When, How?Kinn Julião
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQLEric Silva
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com RedisWaldyr Felix
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBPaulo Bischof
 
Deploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoDeploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoAllisson Azevedo
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à práticaMario Guedes
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Ismar Silveira
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Ismar Silveira
 
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas ComputacionaisSistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas ComputacionaisMauro Duarte
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaAdriano Teixeira de Souza
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 

Destaque (20)

549891
549891549891
549891
 
Integrando aplicações com redis
Integrando aplicações com redisIntegrando aplicações com redis
Integrando aplicações com redis
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra) Bancos orientados a colunas (Cassandra)
Bancos orientados a colunas (Cassandra)
 
Redis – What, Why, When, How?
Redis – What, Why, When, How?Redis – What, Why, When, How?
Redis – What, Why, When, How?
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQL
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com Redis
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDB
 
Deploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoDeploy completo de uma aplicação Django
Deploy completo de uma aplicação Django
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à prática
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas ComputacionaisSistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 

Semelhante a Criando uma aplicação Python/Flask + MySQL na OpenShift

Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Getup Cloud
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
PHP Conference 2016
PHP Conference 2016PHP Conference 2016
PHP Conference 2016Edison Costa
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
PaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma públicaPaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma públicaGetup Cloud
 
Performance de verdade com Phalcon Framework
Performance de verdade com Phalcon FrameworkPerformance de verdade com Phalcon Framework
Performance de verdade com Phalcon FrameworkJaime Neto
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHPLuiz Messias
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open SourceEdgar Silva
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScriptCarlos Santos
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com DockerWellington Silva
 
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...Renato Groff
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterEric Silva
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...Renato Groff
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxThiago Paes
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 

Semelhante a Criando uma aplicação Python/Flask + MySQL na OpenShift (20)

Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
PHP Conference 2016
PHP Conference 2016PHP Conference 2016
PHP Conference 2016
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
PaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma públicaPaaS - OpenShift como plataforma pública
PaaS - OpenShift como plataforma pública
 
Performance de verdade com Phalcon Framework
Performance de verdade com Phalcon FrameworkPerformance de verdade com Phalcon Framework
Performance de verdade com Phalcon Framework
 
Google App Engine e PHP
Google App Engine e PHPGoogle App Engine e PHP
Google App Engine e PHP
 
Webpack
Webpack Webpack
Webpack
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
 
Meetup-Churrops
Meetup-ChurropsMeetup-Churrops
Meetup-Churrops
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 

Mais de Getup Cloud

Getup Gen2 - Nuvem para Negócios Digitais
Getup Gen2 - Nuvem para Negócios DigitaisGetup Gen2 - Nuvem para Negócios Digitais
Getup Gen2 - Nuvem para Negócios DigitaisGetup Cloud
 
Desenvolvimento e hospedagem com escalabilidade usando PaaS
Desenvolvimento e hospedagem com escalabilidade usando PaaSDesenvolvimento e hospedagem com escalabilidade usando PaaS
Desenvolvimento e hospedagem com escalabilidade usando PaaSGetup Cloud
 
Meetup OpenShift São Paulo
Meetup OpenShift São PauloMeetup OpenShift São Paulo
Meetup OpenShift São PauloGetup Cloud
 
PaaS na terra: Cloud Computing ao alcance de todos - QCON2014
PaaS na terra: Cloud Computing ao alcance de todos -  QCON2014PaaS na terra: Cloud Computing ao alcance de todos -  QCON2014
PaaS na terra: Cloud Computing ao alcance de todos - QCON2014Getup Cloud
 
Esclabilidade para Campanhas Digitais
Esclabilidade para Campanhas DigitaisEsclabilidade para Campanhas Digitais
Esclabilidade para Campanhas DigitaisGetup Cloud
 
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...Getup Cloud
 
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14Getup Cloud
 

Mais de Getup Cloud (7)

Getup Gen2 - Nuvem para Negócios Digitais
Getup Gen2 - Nuvem para Negócios DigitaisGetup Gen2 - Nuvem para Negócios Digitais
Getup Gen2 - Nuvem para Negócios Digitais
 
Desenvolvimento e hospedagem com escalabilidade usando PaaS
Desenvolvimento e hospedagem com escalabilidade usando PaaSDesenvolvimento e hospedagem com escalabilidade usando PaaS
Desenvolvimento e hospedagem com escalabilidade usando PaaS
 
Meetup OpenShift São Paulo
Meetup OpenShift São PauloMeetup OpenShift São Paulo
Meetup OpenShift São Paulo
 
PaaS na terra: Cloud Computing ao alcance de todos - QCON2014
PaaS na terra: Cloud Computing ao alcance de todos -  QCON2014PaaS na terra: Cloud Computing ao alcance de todos -  QCON2014
PaaS na terra: Cloud Computing ao alcance de todos - QCON2014
 
Esclabilidade para Campanhas Digitais
Esclabilidade para Campanhas DigitaisEsclabilidade para Campanhas Digitais
Esclabilidade para Campanhas Digitais
 
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
 
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
 

Criando uma aplicação Python/Flask + MySQL na OpenShift

  • 1. Criando e escalando uma aplicação Python/Flask + MySQL Mateus Caruccio - CEO mateus.caruccio@getupcloud.com @mateuscaruccio Assista o video em http://goo.gl/wYylfj
  • 2. Getup Cloud ● PaaS - Platform as a Service ● Camada de abstração sobre a Infra (IaaS) ● Foco em desenvolvimento [ Aplicação ] ← Você [ PaaS ] ← Nós [ IaaS ] ← Amazon/Rackspace/Etc. [ VM|HW ]
  • 3. OpenShift Origin ● Open Source – sem lock-in https://github.com/openshift/origin-server https://github.com/getupcloud/origin-server https://github.com/VOCÊ/origin-server ! ● Padronização de componentes – Cartridges ● Agnóstico a linguagens – qualquer binário ● Isolamento total entre aplicações SELinux, cgroups Docker.io em breve!
  • 4. OpenShift Origin (cont.) ● DNS e SSL built-in ● Git $ git commit && git push ... e pronto (morte ao ftp!) ● Integração Contínua com Jenkins
  • 5. Gear ● Gear: ambiente de execução ● Compartilha recursos do host Fatia de CPU + 512 MB RAM + 1G Disco Pense no gear como um servidor particular, que você não precisará administrar
  • 6. Cartridge ● Componente de código, executa no gear. ● Cartridges disponíveis Linguagem: PHP, Python, Ruby, Nodejs, Java, Go... Banco: MySQL/MariaDB, PostgreSQL, MongoDB... Cache: Memcached, Redis... WebServer: Apache, Nginx ● Do-It-Yourself (DIY) -> Template exemplo ● Onde procurar: https://github.com/search?q=openshift
  • 7. Aplicação ● Gear(s) + Cartridge(s) = Aplicação ● Não escalável: Um gear ● Escalável: Múltiplos gears
  • 8. Quickstart ● Aplicações prontas: Wordpress, Drupal, Rails, Magento, Sinatra, Django, Tiny Tiny RSS... ● Provavelmente já existe o que você procura https://github.com/search?q=openshift+quickstart&type=Repositories
  • 9. Ferramentas - Console Web ● Prós ○ Fácil ○ Rápido ○ Next -> Next -> Finish ● Cons ○ Menor flexibilidade https://broker.getupcoud.com
  • 10. Ferramentas - RHC (terminal) ● Prós ○ Fácil ○ Mais rápido ainda ○ API completa ● Cons ○ Precisa instalar localmente Linux/Mac: $ gem install rhc Windows: https://github.com/getupcloud/openshift-rhc-installer/releases $ rhc [comando] [opções]
  • 11. Ferramentas - Eclipse (IDE) ● Prós ○ Ambiente de dev completo ○ Amplamente conhecido ○ Deploy fácil via plugin ● Cons ○ Precisa instalar localmente
  • 12. Ferramentas - GIT ● Prós ○ É o git... não preciso falar mais :) ● Cons ○ Curva de aprendizado Sugestão: Instale um cliente gráfico: ● http://git-scm.com/downloads/guis ● https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools ● Dica: TortoiseGit é massa - https://code.google.com/p/tortoisegit/
  • 13. Mão na massa ● Antes de começar, instale/atualize seu RHC: ○ Linux/Mac $ gem install rhc $ gem update rhc ○ Windows https://github.com/getupcloud/openshift-rhc-installer/releases
  • 14. Criar a aplicação Toda aplicação precisa de um cartridge web $ rhc cartridges php-5.3 PHP 5.3 web python-2.6 Python 2.6 web python-2.7 Python 2.7 web python-3.3 Python 3.3 web ruby-1.8 Ruby 1.8 web $ rhc app create flask python-2.7 --scaling Acesse em http://flask-[namespace].getup.io Nome do app Cartridge web Auto-escalável
  • 15. Adicionar cartridge MySQL $ rhc cartridge add mysql-5 --app flask Conecte no banco usando env vars do gear: > env|grep OPENSHIFT_MYSQL OPENSHIFT_MYSQL_DB_HOST=524b7b8bc99349fc7c00006c-caruccio.getup.io OPENSHIFT_MYSQL_DB_PORT=43556 OPENSHIFT_MYSQL_DB_USERNAME=adminXXX OPENSHIFT_MYSQL_DB_PASSWORD=passwdXXX OPENSHIFT_MYSQL_DB_URL=mysql://admXXX:passXXX...flask-caruccio.getup.io:43556/ Sim, é só isso.
  • 16. Informações sobre a aplicação $ rhc app show flask Listar os gears: $ rhc app show flask --gears Acessar o gear web: $ rhc ssh flask Acessar um gear específico: $ ssh [UUID]@[UUID]-[NAMESPACE].getup.io ssh url
  • 17. Flask! “Talk is cheap. Show me the code” - Linus from flask import Flask app = Flask(__name__) @app.route("/") ← quando bater em “/” def hello(): ← executar isso return "Hello World!" ← retornar isso if __name__ == "__main__": app.run() http://flask.pocoo.org/
  • 18. Nossa aplicação Flask Usando um quickstart reutilizamos código https://github.com/caruccio/openshift-flask-mysql-example $ cd flask $ git remote add upstream -m master https://github.com/caruccio/openshift-flask-mysql-example $ git pull -s recursive -X theirs upstream master $ git push
  • 19. Inicializando o BD $ rhc ssh flask > source python/bin/activate_virtenv > cd $OPENSHIFT_REPO_DIR/wsgi > python >>> from myflaskapp import * >>> db.create_all() >>> admin = User('admin', 'admin@example.com') >>> guest = User('guest', 'guest@example.com') >>> db.session.add(admin) >>> db.session.add(guest) >>> db.session.commit() SSH no gear Ativando virtualenv Populando a base
  • 20. Inicializando o BD Listar usuários: GET http://flask-caruccio.getup.io Acessar usuário: GET http://flask-caruccio.getup.io/guest Incluir usuário: $ curl http://flask-caruccio.getup.io/coderstv --data email=coderstv@getupcloud.com
  • 21. Escalando o Everest ● Usando o Apache Benchmarking Tool ○ 60 reqs simultâneas ○ 100.000 reqs total $ ab -n 100000 -c 60 http://flask-caruccio.getup.io/ Tempo de warm up: 1:30s Monitorando gears: HAProxy →http://flask-caruccio.getup.io/haproxy-status $ watch -n 1 rhc app show flask --gears