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.

01-b-Ping

718 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

×