SlideShare uma empresa Scribd logo
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

PPTX
Tecnologias em 2021: no que ficar de olho? | WTT2021 - Mackenzie
PPTX
O novo ASP.NET - Verity IT - Janeiro/2017
PPTX
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
PDF
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
PPT
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
PPTX
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
PPTX
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...
PPTX
Desenvolvendo Aplicações .NET Core em Linux - CEUNSP - Outubro-2019
Tecnologias em 2021: no que ficar de olho? | WTT2021 - Mackenzie
O novo ASP.NET - Verity IT - Janeiro/2017
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...
Desenvolvendo Aplicações .NET Core em Linux - CEUNSP - Outubro-2019

Mais procurados (20)

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

Destaque (20)

PDF
Integrando aplicações com redis
PDF
Bancos de dados open source
PDF
01 aula1 habib
PDF
Bancos orientados a colunas (Cassandra)
PDF
Redis – What, Why, When, How?
PDF
Algumas das principais características do NoSQL
PPTX
Escalando Aplicações com Redis
PPT
Bancos de dados NoSQL - Redis e MongoDB
PDF
Deploy completo de uma aplicação Django
PDF
Docker + Django
PDF
Redis um banco chave valor
PPTX
Big data da teoria à prática
PPT
Paradigmas de Linguagens de Programacao - Aula #1
PPT
Paradigmas de Linguagens de programacao - Aula #2
ODP
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
PDF
Paradigmas de programação
PDF
Sistemas Distribuídos - Computação Distribuída e Paralela
PDF
Python RESTful webservices with Python: Flask and Django solutions
PPT
Paradigmas De Linguagem De Programação.
Integrando aplicações com redis
Bancos de dados open source
01 aula1 habib
Bancos orientados a colunas (Cassandra)
Redis – What, Why, When, How?
Algumas das principais características do NoSQL
Escalando Aplicações com Redis
Bancos de dados NoSQL - Redis e MongoDB
Deploy completo de uma aplicação Django
Docker + Django
Redis um banco chave valor
Big data da teoria à prática
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de programacao - Aula #2
Sistemas Operacionais - 2 - Tipos de Sistemas Computacionais
Paradigmas de programação
Sistemas Distribuídos - Computação Distribuída e Paralela
Python RESTful webservices with Python: Flask and Django solutions
Paradigmas De Linguagem De Programação.
Anúncio

Semelhante a Escalando aplicação Python usando Getup OpenShift (20)

PDF
Semana Acadêmica ICET - Feevale - 12/04/2014
PDF
JEE nas nuvens: uma introdução ao openshift
PDF
PaaS - OpenShift como plataforma pública
KEY
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
PDF
Configurando aplicações em ambiente RedHat OpenShift através do Eclipse
PDF
Flask e Docker - rumo a AWS!
PDF
Desenvolvimento e hospedagem com escalabilidade usando PaaS
PDF
Web open source
PPTX
Apresentacao Interna GAE
PDF
Aplicações Web com Python e Google App Engine
PDF
12 factor app. Melhor com Docker
PDF
O que é OpenShift ?
PDF
Rodando uma API Com Django Rest Framework no Google Cloud
PDF
PyData - Consumindo e publicando web APIs com Python
PPTX
Novas Fronteiras
PDF
Rails nas Nuvens
PDF
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
PDF
Google App Engine e PHP
PDF
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
PDF
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas
Semana Acadêmica ICET - Feevale - 12/04/2014
JEE nas nuvens: uma introdução ao openshift
PaaS - OpenShift como plataforma pública
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
Configurando aplicações em ambiente RedHat OpenShift através do Eclipse
Flask e Docker - rumo a AWS!
Desenvolvimento e hospedagem com escalabilidade usando PaaS
Web open source
Apresentacao Interna GAE
Aplicações Web com Python e Google App Engine
12 factor app. Melhor com Docker
O que é OpenShift ?
Rodando uma API Com Django Rest Framework no Google Cloud
PyData - Consumindo e publicando web APIs com Python
Novas Fronteiras
Rails nas Nuvens
De zero a cem em cloud computing transformando idéias em aplicações em pouco...
Google App Engine e PHP
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
Dockerizando aplicações em uma fintech o bom, o mau e o feio as surpresas

Mais de Getup Cloud (6)

PDF
Getup Gen2 - Nuvem para Negócios Digitais
PDF
Meetup OpenShift São Paulo
PDF
PaaS na terra: Cloud Computing ao alcance de todos - QCON2014
PDF
Esclabilidade para Campanhas Digitais
PDF
English - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FI...
PDF
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
Getup Gen2 - Nuvem para Negócios Digitais
Meetup OpenShift São Paulo
PaaS na terra: Cloud Computing ao alcance de todos - QCON2014
Esclabilidade para Campanhas Digitais
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

Último (19)

PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Aula 18 - Manipulacao De Arquivos python
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Aula04-Academia Heri- Tecnologia Geral 2025
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Processos na gestão de transportes, TM100 Col18
Custos e liquidação no SAP Transportation Management, TM130 Col18
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Apple Pippin Uma breve introdução. - David Glotz
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
COBITxITIL-Entenda as diferença em uso governança TI
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Aula 18 - Manipulacao De Arquivos python

Escalando aplicação Python usando Getup 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