Este documento discute como criar e escalar uma aplicação Python/Flask com MySQL usando o OpenShift PaaS. Ele fornece instruções passo-a-passo sobre como criar uma aplicação Flask, adicionar um cartridge MySQL, popular o banco de dados, e escalar a aplicação para múltiplos gears usando o Apache Benchmarking Tool.
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
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/