Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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.o...
© 2015 Marcio Marchini 3i
• Instale Virtualenv:
• sudo apt-get install pip
• [sudo] pip install virtualenv
• Crie o ambien...
© 2015 Marcio Marchini 4i
• Pegue os fontes originais e pule pra tag INITIAL:
1. git clone https://github.com/sglebs/ping....
© 2015 Marcio Marchini 5i
• Abra esse prj/diretório no PyCharm e configure o
virtualenv dele (PyCharmPreferences no MacOS...
© 2015 Marcio Marchini 6i
• Dispare o servidor ping na IDE:
• Conecte-se com o browser:
http://localhost:8085/ping
Servido...
© 2015 Marcio Marchini 7i
• Dispare o servidor ping com Foreman:
• foreman run web
• Conecte-se com o browser: http://loca...
© 2015 Marcio Marchini 8i
• Crie uma conta gratuita no
heroku.com
• Crie uma app chamada ping-xyz
no heroku
Servidor REST ...
© 2015 Marcio Marchini 9i
• Adicione repo git remoto no heroku, para deploy:
heroku git:remote -a ping-mqm
(ou: git remote...
© 2015 Marcio Marchini 10i
• Conecte-se com o browser:
https://ping-mqm.herokuapp.com/ping
Servidor REST nas Nuvens: Testa...
© 2015 Marcio Marchini 11i
• requirements.txt define as bibliotecas que você usa
• runtime.txt define qual versão do Pytho...
© 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/pin...
© 2015 Marcio Marchini 14i
• Deploy pro heroku com git push:
git push –f heroku NEWRELIC:master
Servidor REST nas Nuvens: ...
© 2015 Marcio Marchini 15i
• Conecte-se com o browser:
https://ping-mqm.herokuapp.com/ping
Servidor REST nas Nuvens: Testa...
© 2015 Marcio Marchini 16i
• Clique/abra o add-on
• Concorde com a licença
• Veja o resumo
Servidor REST nas Nuvens: Vendo...
© 2015 Marcio Marchini 17i
• Visite o ping diversas vezes, aguarde 5mins
• Você verá algo assim:
Servidor REST nas Nuvens:...
© 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...
© 2015 Marcio Marchini 26i
• Pegue os fontes originais e pule pra tag GUNICORN:
1. git clone https://github.com/sglebs/pin...
© 2015 Marcio Marchini 27i
• Deploy pro heroku com git push:
git push –f heroku GUNICORN:master
Servidor REST nas Nuvens: ...
© 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 N...
© 2015 Marcio Marchini 34i
• http://faruk.akgul.org/blog/python-web-frameworks-
benchmark/
Alguns benchmarks de Frameworks...
© 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 d...
© 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 s...
Upcoming SlideShare
Loading in …5
×

01-b-Ping

702 views

Published on

  • Be the first to comment

01-b-Ping

  1. 1. Better Developer / Cloud ([B]: REST Ping – Performance e Filas) 2015/10 Marcio Marchini www.BetterDeveloper.net
  2. 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. 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. 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. 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. 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. 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. 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. 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. 10. © 2015 Marcio Marchini 10i • Conecte-se com o browser: https://ping-mqm.herokuapp.com/ping Servidor REST nas Nuvens: Testando no Heoku
  11. 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. 12. © 2015 Marcio Marchini 12i • No site heroku, adicione o Add-On New Relic na app Adicionando Monitoramento
  13. 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. 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. 15. © 2015 Marcio Marchini 15i • Conecte-se com o browser: https://ping-mqm.herokuapp.com/ping Servidor REST nas Nuvens: Testando no Heroku
  16. 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. 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. 18. © 2015 Marcio Marchini 18i • apdex Servidor REST nas Nuvens: Apdex no New Relic
  19. 19. © 2015 Marcio Marchini 19i • No site heroku, adicione o Add-On Blitz na app Adicionando Teste Simples de Carga
  20. 20. © 2015 Marcio Marchini 20i • Entre no Add-on e veja que o ping está autorizado e rode Adicionando Teste Simples de Carga
  21. 21. © 2015 Marcio Marchini 21i • Customize, rode, veja o resultado Adicionando Teste Simples de Carga
  22. 22. © 2015 Marcio Marchini 22i • O resultado Adicionando Teste Simples de Carga
  23. 23. © 2015 Marcio Marchini 23i • O resultado Adicionando Teste Simples de Carga
  24. 24. © 2015 Marcio Marchini 24i • O resultado no New Relic Adicionando Teste Simples de Carga
  25. 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. 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. 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. 28. © 2015 Marcio Marchini 28i • Customize, rode, veja o resultado Adicionando Teste Simples de Carga
  29. 29. © 2015 Marcio Marchini 29i • O resultado Adicionando Teste Simples de Carga
  30. 30. © 2015 Marcio Marchini 30i • O resultado Adicionando Teste Simples de Carga
  31. 31. © 2015 Marcio Marchini 31i • O resultado no New Relic Adicionando Teste Simples de Carga
  32. 32. © 2015 Marcio Marchini 32i • O resultado no New Relic desconsiderando Filas Adicionando Teste Simples de Carga
  33. 33. © 2015 Marcio Marchini 33i • Olhe /experimente / repita os passos com: • Flask • CherryPy • Django • … Servidor REST nas Nuvens: Outras Frameworks
  34. 34. © 2015 Marcio Marchini 34i • http://faruk.akgul.org/blog/python-web-frameworks- benchmark/ Alguns benchmarks de Frameworks Diferentes
  35. 35. © 2015 Marcio Marchini 35i • http://klen.github.io/py-frameworks-bench/ Alguns benchmarks de Frameworks Diferentes
  36. 36. © 2015 Marcio Marchini 36i • http://mindref.blogspot.com.br/2012/09/python- fastest-web-framework.html Alguns benchmarks de Frameworks Diferentes
  37. 37. © 2015 Marcio Marchini 37i • Config do nome da app no New Relic Adicionando Alerta de Indisponibilidade
  38. 38. © 2015 Marcio Marchini 38i • Settings New Relic Adicionando Alerta de Indisponibilidade
  39. 39. © 2015 Marcio Marchini 39i • Settings New Relic Adicionando Alerta de Indisponibilidade
  40. 40. © 2015 Marcio Marchini 40i • Settings New Relic Adicionando Alerta de Indisponibilidade
  41. 41. © 2015 Marcio Marchini 41i • Settings New Relic Adicionando Alerta de Indisponibilidade
  42. 42. © 2015 Marcio Marchini 42i • Mudar pra 0 dynos no heroku Testando o Alerta de Indisponibilidade
  43. 43. © 2015 Marcio Marchini 43i • New Relic mostra que está caída Testando o Alerta de Indisponibilidade
  44. 44. © 2015 Marcio Marchini 44i • New Relic Mobile mostra que está caída Testando o Alerta de Indisponibilidade
  45. 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

×