SlideShare uma empresa Scribd logo
Better Developer / Cloud
([B]: REST Ping – Performance e Filas)
2015/10
Marcio Marchini
www.BetterDeveloper.net
© 2015 Marcio Marchini 2i
• Instale:
1. Heroku Toolbelt: https://toolbelt.heroku.com
2. Python 2.7.x:
https://www.python.org/downloads/release/pyt
hon-2710/
3. PyCharm IDE:
https://www.jetbrains.com/pycharm/download/
Servidor REST nas Nuvens: Instalar Ferramentas
© 2015 Marcio Marchini 3i
• Instale Virtualenv:
• sudo apt-get install pip
• [sudo] pip install virtualenv
• Crie o ambiente de trabalho virtualenv:
1.mkdir ~/venvs
2.virtualenv ~/venvs/ping
3.. ~/venvs/ping/bin/activate
Servidor REST nas Nuvens: Instalar Suporte a Sandbox Python
© 2015 Marcio Marchini 4i
• Pegue os fontes originais e pule pra tag INITIAL:
1. git clone https://github.com/sglebs/ping.git
2. cd ping
3. git checkout tags/INITIAL
• Instale no seu Sandbox/virtualenv os requisitos:
• pip install –r requirements.txt
Servidor REST nas Nuvens: Pegar Fontes do ping
© 2015 Marcio Marchini 5i
• Abra esse prj/diretório no PyCharm e configure o
virtualenv dele (PyCharmPreferences no MacOS:
Servidor REST nas Nuvens: Pegar Fontes do ping
© 2015 Marcio Marchini 6i
• Dispare o servidor ping na IDE:
• Conecte-se com o browser:
http://localhost:8085/ping
Servidor REST nas Nuvens: Rodar na IDE
© 2015 Marcio Marchini 7i
• Dispare o servidor ping com Foreman:
• foreman run web
• Conecte-se com o browser: http://localhost:8085/ping
Servidor REST nas Nuvens: Rodar no simulador de Heroku
© 2015 Marcio Marchini 8i
• Crie uma conta gratuita no
heroku.com
• Crie uma app chamada ping-xyz
no heroku
Servidor REST nas Nuvens: Setup no Heroku nas Nuvens
© 2015 Marcio Marchini 9i
• Adicione repo git remoto no heroku, para deploy:
heroku git:remote -a ping-mqm
(ou: git remote add heroku git@heroku.com:ping-mqm.git)
(ou: git remote add heroku https://git.heroku.com/ping-mqm.git)
• Deploy pro heroku com git push:
git push –f heroku INITIAL:master
Servidor REST nas Nuvens: Deploy no Heroku nas nuvens
© 2015 Marcio Marchini 10i
• Conecte-se com o browser:
https://ping-mqm.herokuapp.com/ping
Servidor REST nas Nuvens: Testando no Heoku
© 2015 Marcio Marchini 11i
• requirements.txt define as bibliotecas que você usa
• runtime.txt define qual versão do Python você usa
• Procfile define a(s) linha(s) de comando para
disparar seu aplicativo
• APIs REST são o entry-point de sua app – coloque as
mesmas sob “controllers”
• Note que Bottle promove uma programação
PROCEDURAL e não OO dos controllers (funções e não
métodos são decorados)
• Veremos como fazer OO mais pra frente
Explicando
© 2015 Marcio Marchini 12i
• No site heroku, adicione o Add-On New Relic na app
Adicionando Monitoramento
© 2015 Marcio Marchini 13i
• Pegue os fontes originais e pule pra tag NEWRELIC:
1. git clone https://github.com/sglebs/ping.git
2. cd ping
3. git checkout tags/NEWRELIC
• Atualize no seu Sandbox/virtualenv os
novosrequisitos:
• pip install –r requirements.txt
Pegar Fontes do ping com suporte New Relic
© 2015 Marcio Marchini 14i
• Deploy pro heroku com git push:
git push –f heroku NEWRELIC:master
Servidor REST nas Nuvens: Deploy no Heroku nas nuvens
Enquanto isso: olhe o arquivo
Procfile e veja o que mudou
© 2015 Marcio Marchini 15i
• Conecte-se com o browser:
https://ping-mqm.herokuapp.com/ping
Servidor REST nas Nuvens: Testando no Heroku
© 2015 Marcio Marchini 16i
• Clique/abra o add-on
• Concorde com a licença
• Veja o resumo
Servidor REST nas Nuvens: Vendo no New Relic
© 2015 Marcio Marchini 17i
• Visite o ping diversas vezes, aguarde 5mins
• Você verá algo assim:
Servidor REST nas Nuvens: Detalhes no New Relic
© 2015 Marcio Marchini 18i
• apdex
Servidor REST nas Nuvens: Apdex no New Relic
© 2015 Marcio Marchini 19i
• No site heroku, adicione o Add-On Blitz na app
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 20i
• Entre no Add-on e veja que o ping está autorizado e
rode
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 21i
• Customize, rode, veja o resultado
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 22i
• O resultado
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 23i
• O resultado
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 24i
• O resultado no New Relic
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 25i
• O resultado no New Relic desconsiderando Filas
Adicionando Teste Simples de Carga
Falta gente pra atender os caixas do meu banco!!!!!!
© 2015 Marcio Marchini 26i
• Pegue os fontes originais e pule pra tag GUNICORN:
1. git clone https://github.com/sglebs/ping.git
2. cd ping
3. git checkout tags/GUNICORN
• Atualize no seu Sandbox/virtualenv os
novosrequisitos e config heroku / gunicorn:
• pip install –r requirements.txt
• heroku config:set NEW_RELIC_SSL=false
NEW_RELIC_APP_NAME=ping
NEW_RELIC_CONFIG_FILE=newrelic.ini NEW_RELIC_LOG=stdout
-a ping-mqm
Pegar Fontes do ping com suporte gunicorn
© 2015 Marcio Marchini 27i
• Deploy pro heroku com git push:
git push –f heroku GUNICORN:master
Servidor REST nas Nuvens: Deploy no Heroku nas nuvens
Enquanto isso: olhe o arquivo
Procfile e veja o que mudou
© 2015 Marcio Marchini 28i
• Customize, rode, veja o resultado
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 29i
• O resultado
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 30i
• O resultado
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 31i
• O resultado no New Relic
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 32i
• O resultado no New Relic desconsiderando Filas
Adicionando Teste Simples de Carga
© 2015 Marcio Marchini 33i
• Olhe /experimente / repita os passos com:
• Flask
• CherryPy
• Django
• …
Servidor REST nas Nuvens: Outras Frameworks
© 2015 Marcio Marchini 34i
• http://faruk.akgul.org/blog/python-web-frameworks-
benchmark/
Alguns benchmarks de Frameworks Diferentes
© 2015 Marcio Marchini 35i
• http://klen.github.io/py-frameworks-bench/
Alguns benchmarks de Frameworks Diferentes
© 2015 Marcio Marchini 36i
• http://mindref.blogspot.com.br/2012/09/python-
fastest-web-framework.html
Alguns benchmarks de Frameworks Diferentes
© 2015 Marcio Marchini 37i
• Config do nome da app no New Relic
Adicionando Alerta de Indisponibilidade
© 2015 Marcio Marchini 38i
• Settings New Relic
Adicionando Alerta de Indisponibilidade
© 2015 Marcio Marchini 39i
• Settings New Relic
Adicionando Alerta de Indisponibilidade
© 2015 Marcio Marchini 40i
• Settings New Relic
Adicionando Alerta de Indisponibilidade
© 2015 Marcio Marchini 41i
• Settings New Relic
Adicionando Alerta de Indisponibilidade
© 2015 Marcio Marchini 42i
• Mudar pra 0 dynos no heroku
Testando o Alerta de Indisponibilidade
© 2015 Marcio Marchini 43i
• New Relic mostra que está caída
Testando o Alerta de Indisponibilidade
© 2015 Marcio Marchini 44i
• New Relic Mobile mostra que está caída
Testando o Alerta de Indisponibilidade
© 2015 Marcio Marchini 45i
• Dúvidas / Perguntas?
• Próximos Capítulos / Em outro módulo:
1. Camadas e Arquitetura: Como separar a camada
Controller/REST da camada Modelo para não ter um
macarrão
2. Como testar as camadas MODEL e CONTROLLER/REST
separadamente
Servidor REST nas Nuvens: Fim

Mais conteúdo relacionado

PPT
BDD-NamoroOn
PDF
Visual Regression Testing: mais um tipo de teste pra sua pipeline
PPTX
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
PDF
MTC - Automatizando Visual Regression Testing
PPTX
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
PPTX
WTM - Entrega Contínua
PDF
Papel do QA na Transformação Ágil
PDF
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
BDD-NamoroOn
Visual Regression Testing: mais um tipo de teste pra sua pipeline
[Agile Brazil] Entrega Contínua na Infoglobo: gerando valor em 2 horas
MTC - Automatizando Visual Regression Testing
[Uff] Continuous Delivery: Entrega Contínua de Software de Valor
WTM - Entrega Contínua
Papel do QA na Transformação Ágil
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes

Mais procurados (20)

PDF
Coders On Beer + Ministry Of Testing - Agile Testing
PDF
Uma Sprint na Vida do Tester
PPTX
[Lady talks]Continuous Delivery
PDF
Acelerando o feedback e deploy com Automação de Testes!
PPTX
[DevOps Carioca] Testes Automatizados
PDF
Automação de Teste em Front End - Caipira Ágil
PDF
Automatizando uma app Híbrida
PPTX
Feedback mais rápido na sua build dividindo os testes funcionais
PPTX
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
PDF
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
PDF
Apenas um script de teste para iOS e Android
PDF
Medindo a performance de aplicações web com JMeter
PPTX
Automação de Teste para REST, Web e Mobile
PDF
Lottie API Para Animações no Android
PDF
Como criar testes rápidos e robustos com Cypress
PDF
Android DevConference - Automatizando testes sem sofrimento
PPTX
Tudo o que você precisa saber para começar a automação de testes em dispositi...
PDF
O Testador Técnico
ODP
Ágil na Prática
PDF
Automação de Teste com Robotium - Tche Mobile 2014
Coders On Beer + Ministry Of Testing - Agile Testing
Uma Sprint na Vida do Tester
[Lady talks]Continuous Delivery
Acelerando o feedback e deploy com Automação de Testes!
[DevOps Carioca] Testes Automatizados
Automação de Teste em Front End - Caipira Ágil
Automatizando uma app Híbrida
Feedback mais rápido na sua build dividindo os testes funcionais
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
Apenas um script de teste para iOS e Android
Medindo a performance de aplicações web com JMeter
Automação de Teste para REST, Web e Mobile
Lottie API Para Animações no Android
Como criar testes rápidos e robustos com Cypress
Android DevConference - Automatizando testes sem sofrimento
Tudo o que você precisa saber para começar a automação de testes em dispositi...
O Testador Técnico
Ágil na Prática
Automação de Teste com Robotium - Tche Mobile 2014
Anúncio

Semelhante a 01-b-Ping (20)

PDF
Flask e Docker - rumo a AWS!
PDF
PyData - Consumindo e publicando web APIs com Python
PDF
Rodando uma API Com Django Rest Framework no Google Cloud
PDF
Python Eve - APIs RESTful Profissionais em poucas linhas
PDF
Ambiente de CI/CD com Google Cloud
PPTX
Rest workshop
PDF
Construir microservices em python nunca foi tão simples como com o Nameko!
PDF
Restful considerada prejudicial parte 2
PDF
Escalando aplicação Python usando Getup OpenShift
PDF
FastAPI: Criando microsserviços de alta performance
PDF
Python Brasil[9] - Entrega Contínua
PDF
Escalabilidade e Resiliência de Microservices em Python
PDF
TDC2018FLN | Trilha Python - Microservices em Python: desafios e soluções
PPTX
Desbravando o REST com Python
PPTX
PDF
Deploy Heroku
PDF
APIs REST escaláveis
PDF
Desenvolvimento web com python e django
PPTX
A Web é uma API
PDF
REST com Python
Flask e Docker - rumo a AWS!
PyData - Consumindo e publicando web APIs com Python
Rodando uma API Com Django Rest Framework no Google Cloud
Python Eve - APIs RESTful Profissionais em poucas linhas
Ambiente de CI/CD com Google Cloud
Rest workshop
Construir microservices em python nunca foi tão simples como com o Nameko!
Restful considerada prejudicial parte 2
Escalando aplicação Python usando Getup OpenShift
FastAPI: Criando microsserviços de alta performance
Python Brasil[9] - Entrega Contínua
Escalabilidade e Resiliência de Microservices em Python
TDC2018FLN | Trilha Python - Microservices em Python: desafios e soluções
Desbravando o REST com Python
Deploy Heroku
APIs REST escaláveis
Desenvolvimento web com python e django
A Web é uma API
REST com Python
Anúncio

Mais de Marcio Marchini (8)

PDF
Critérios de Aceite de Código Para Times Internos ou Terceirizados
PPT
É Pythonico, mas... é macarrônico
PDF
Whitepaper-Custos
PPT
01-a-Intro-BetterDev
PPTX
OmbrosDeGigantes-TDC2014
PPT
mqm-Agile
PDF
Branches-Intro
Critérios de Aceite de Código Para Times Internos ou Terceirizados
É Pythonico, mas... é macarrônico
Whitepaper-Custos
01-a-Intro-BetterDev
OmbrosDeGigantes-TDC2014
mqm-Agile
Branches-Intro

01-b-Ping

  • 1. Better Developer / Cloud ([B]: REST Ping – Performance e Filas) 2015/10 Marcio Marchini www.BetterDeveloper.net
  • 2. © 2015 Marcio Marchini 2i • Instale: 1. Heroku Toolbelt: https://toolbelt.heroku.com 2. Python 2.7.x: https://www.python.org/downloads/release/pyt hon-2710/ 3. PyCharm IDE: https://www.jetbrains.com/pycharm/download/ Servidor REST nas Nuvens: Instalar Ferramentas
  • 3. © 2015 Marcio Marchini 3i • Instale Virtualenv: • sudo apt-get install pip • [sudo] pip install virtualenv • Crie o ambiente de trabalho virtualenv: 1.mkdir ~/venvs 2.virtualenv ~/venvs/ping 3.. ~/venvs/ping/bin/activate Servidor REST nas Nuvens: Instalar Suporte a Sandbox Python
  • 4. © 2015 Marcio Marchini 4i • Pegue os fontes originais e pule pra tag INITIAL: 1. git clone https://github.com/sglebs/ping.git 2. cd ping 3. git checkout tags/INITIAL • Instale no seu Sandbox/virtualenv os requisitos: • pip install –r requirements.txt Servidor REST nas Nuvens: Pegar Fontes do ping
  • 5. © 2015 Marcio Marchini 5i • Abra esse prj/diretório no PyCharm e configure o virtualenv dele (PyCharmPreferences no MacOS: Servidor REST nas Nuvens: Pegar Fontes do ping
  • 6. © 2015 Marcio Marchini 6i • Dispare o servidor ping na IDE: • Conecte-se com o browser: http://localhost:8085/ping Servidor REST nas Nuvens: Rodar na IDE
  • 7. © 2015 Marcio Marchini 7i • Dispare o servidor ping com Foreman: • foreman run web • Conecte-se com o browser: http://localhost:8085/ping Servidor REST nas Nuvens: Rodar no simulador de Heroku
  • 8. © 2015 Marcio Marchini 8i • Crie uma conta gratuita no heroku.com • Crie uma app chamada ping-xyz no heroku Servidor REST nas Nuvens: Setup no Heroku nas Nuvens
  • 9. © 2015 Marcio Marchini 9i • Adicione repo git remoto no heroku, para deploy: heroku git:remote -a ping-mqm (ou: git remote add heroku git@heroku.com:ping-mqm.git) (ou: git remote add heroku https://git.heroku.com/ping-mqm.git) • Deploy pro heroku com git push: git push –f heroku INITIAL:master Servidor REST nas Nuvens: Deploy no Heroku nas nuvens
  • 10. © 2015 Marcio Marchini 10i • Conecte-se com o browser: https://ping-mqm.herokuapp.com/ping Servidor REST nas Nuvens: Testando no Heoku
  • 11. © 2015 Marcio Marchini 11i • requirements.txt define as bibliotecas que você usa • runtime.txt define qual versão do Python você usa • Procfile define a(s) linha(s) de comando para disparar seu aplicativo • APIs REST são o entry-point de sua app – coloque as mesmas sob “controllers” • Note que Bottle promove uma programação PROCEDURAL e não OO dos controllers (funções e não métodos são decorados) • Veremos como fazer OO mais pra frente Explicando
  • 12. © 2015 Marcio Marchini 12i • No site heroku, adicione o Add-On New Relic na app Adicionando Monitoramento
  • 13. © 2015 Marcio Marchini 13i • Pegue os fontes originais e pule pra tag NEWRELIC: 1. git clone https://github.com/sglebs/ping.git 2. cd ping 3. git checkout tags/NEWRELIC • Atualize no seu Sandbox/virtualenv os novosrequisitos: • pip install –r requirements.txt Pegar Fontes do ping com suporte New Relic
  • 14. © 2015 Marcio Marchini 14i • Deploy pro heroku com git push: git push –f heroku NEWRELIC:master Servidor REST nas Nuvens: Deploy no Heroku nas nuvens Enquanto isso: olhe o arquivo Procfile e veja o que mudou
  • 15. © 2015 Marcio Marchini 15i • Conecte-se com o browser: https://ping-mqm.herokuapp.com/ping Servidor REST nas Nuvens: Testando no Heroku
  • 16. © 2015 Marcio Marchini 16i • Clique/abra o add-on • Concorde com a licença • Veja o resumo Servidor REST nas Nuvens: Vendo no New Relic
  • 17. © 2015 Marcio Marchini 17i • Visite o ping diversas vezes, aguarde 5mins • Você verá algo assim: Servidor REST nas Nuvens: Detalhes no New Relic
  • 18. © 2015 Marcio Marchini 18i • apdex Servidor REST nas Nuvens: Apdex no New Relic
  • 19. © 2015 Marcio Marchini 19i • No site heroku, adicione o Add-On Blitz na app Adicionando Teste Simples de Carga
  • 20. © 2015 Marcio Marchini 20i • Entre no Add-on e veja que o ping está autorizado e rode Adicionando Teste Simples de Carga
  • 21. © 2015 Marcio Marchini 21i • Customize, rode, veja o resultado Adicionando Teste Simples de Carga
  • 22. © 2015 Marcio Marchini 22i • O resultado Adicionando Teste Simples de Carga
  • 23. © 2015 Marcio Marchini 23i • O resultado Adicionando Teste Simples de Carga
  • 24. © 2015 Marcio Marchini 24i • O resultado no New Relic Adicionando Teste Simples de Carga
  • 25. © 2015 Marcio Marchini 25i • O resultado no New Relic desconsiderando Filas Adicionando Teste Simples de Carga Falta gente pra atender os caixas do meu banco!!!!!!
  • 26. © 2015 Marcio Marchini 26i • Pegue os fontes originais e pule pra tag GUNICORN: 1. git clone https://github.com/sglebs/ping.git 2. cd ping 3. git checkout tags/GUNICORN • Atualize no seu Sandbox/virtualenv os novosrequisitos e config heroku / gunicorn: • pip install –r requirements.txt • heroku config:set NEW_RELIC_SSL=false NEW_RELIC_APP_NAME=ping NEW_RELIC_CONFIG_FILE=newrelic.ini NEW_RELIC_LOG=stdout -a ping-mqm Pegar Fontes do ping com suporte gunicorn
  • 27. © 2015 Marcio Marchini 27i • Deploy pro heroku com git push: git push –f heroku GUNICORN:master Servidor REST nas Nuvens: Deploy no Heroku nas nuvens Enquanto isso: olhe o arquivo Procfile e veja o que mudou
  • 28. © 2015 Marcio Marchini 28i • Customize, rode, veja o resultado Adicionando Teste Simples de Carga
  • 29. © 2015 Marcio Marchini 29i • O resultado Adicionando Teste Simples de Carga
  • 30. © 2015 Marcio Marchini 30i • O resultado Adicionando Teste Simples de Carga
  • 31. © 2015 Marcio Marchini 31i • O resultado no New Relic Adicionando Teste Simples de Carga
  • 32. © 2015 Marcio Marchini 32i • O resultado no New Relic desconsiderando Filas Adicionando Teste Simples de Carga
  • 33. © 2015 Marcio Marchini 33i • Olhe /experimente / repita os passos com: • Flask • CherryPy • Django • … Servidor REST nas Nuvens: Outras Frameworks
  • 34. © 2015 Marcio Marchini 34i • http://faruk.akgul.org/blog/python-web-frameworks- benchmark/ Alguns benchmarks de Frameworks Diferentes
  • 35. © 2015 Marcio Marchini 35i • http://klen.github.io/py-frameworks-bench/ Alguns benchmarks de Frameworks Diferentes
  • 36. © 2015 Marcio Marchini 36i • http://mindref.blogspot.com.br/2012/09/python- fastest-web-framework.html Alguns benchmarks de Frameworks Diferentes
  • 37. © 2015 Marcio Marchini 37i • Config do nome da app no New Relic Adicionando Alerta de Indisponibilidade
  • 38. © 2015 Marcio Marchini 38i • Settings New Relic Adicionando Alerta de Indisponibilidade
  • 39. © 2015 Marcio Marchini 39i • Settings New Relic Adicionando Alerta de Indisponibilidade
  • 40. © 2015 Marcio Marchini 40i • Settings New Relic Adicionando Alerta de Indisponibilidade
  • 41. © 2015 Marcio Marchini 41i • Settings New Relic Adicionando Alerta de Indisponibilidade
  • 42. © 2015 Marcio Marchini 42i • Mudar pra 0 dynos no heroku Testando o Alerta de Indisponibilidade
  • 43. © 2015 Marcio Marchini 43i • New Relic mostra que está caída Testando o Alerta de Indisponibilidade
  • 44. © 2015 Marcio Marchini 44i • New Relic Mobile mostra que está caída Testando o Alerta de Indisponibilidade
  • 45. © 2015 Marcio Marchini 45i • Dúvidas / Perguntas? • Próximos Capítulos / Em outro módulo: 1. Camadas e Arquitetura: Como separar a camada Controller/REST da camada Modelo para não ter um macarrão 2. Como testar as camadas MODEL e CONTROLLER/REST separadamente Servidor REST nas Nuvens: Fim

Notas do Editor

  • #5: git checkout tags/INITIAL
  • #14: git checkout tags/NEWRELIC
  • #27: git checkout tags/GUNICORN