Django no IIS7Guilherme Medeiros@FReNeTiC_Brwww.FReNeTiC.com.br
...In a galaxy far, far away...• Uma empresa bem grandona ▫ 700+ funcionários• Em um ambiente padronizado ▫ Microsoft    ...
...um pequeno projeto de intranet quecresceu demais...• O que era para ser uma agenda de contatos ▫ PHP 5.0 ▫ Mysql com po...
...mas cresceu errado...• Não acompanhou a evolução do PHP       ▫ PAREM DE RIR!!!!! ▫ Do PHP5.0 para o PHP5.5 a linguagem...
Em forma de renovação• MySQL é legal, mas Oracle é muito melhor ▫ Migrar todo o código escroto de MySQL puro para   um ORM...
Em forma de necessidade• Documentar ▫ O projeto precisa de documentação   URGENTEMENTE• Versionar ▫ Sair do sistema GO HOR...
Migra tudo para o PHP5• Seria legal utilizar um framework  ▫ Mas qual?????     Zend, Synfony, Code      Igniter, Cake, La...
E por que não Python?• Python é Python ▫ Não vou falar da sintaxe da hora, nem das baterias   incluidas e nem do resto...•...
Django dentro do IIS7.5• Manter todo o padrão Microsoft     Freetards escrevendo #chatiado no Twitter• Controle de acesso...
Botando para funcionar• IIS7.5 tem suporte nativo a FCGI ▫ Então tem como colocar o Python “dentro” do IIS• IIS7.5 possui ...
Botando para funcionar• ISAPI e WSGI no IIS7 ▫ Até que existem projetos para isso    Mas aparentemente estão mortos     ...
Caso 1: FCGI• PYWIN32• Django-Windows-Tools     http://pypi.python.org/pypi/django-windows-tools ▫ Colocando o IIS para c...
Caso 2: Proxy Rewrite• Instalar Modulo Rewrite      http://www.iis.net/downloads/microsoft/url-rewrite• Instalar Modulo P...
Facilidade de implementação• FCGI ▫ Easy• Proxy Rewrite ▫ Instalar os módulos necessários - NORMAL ▫ Utilizando:    Djang...
Ab –c 10 –n 100001200.00                                                      3000.001000.00                              ...
Ab –c 100 –n 10000140.00                                                   2500.00120.00                                  ...
Ab –c 1000 –n 1000070.00                                                400.0060.00                                       ...
Botando os pingos nos is (ou seria iis?)• FCGI vs Proxy Rewrite  ▫ FCGI é muito mais fácil de implementar      Só foi pre...
Tá difícil de comparar• Cada gráfico possui um campo HTML    Esse é o desempenho ideal ▫ Desempenho do IIS servindo um ar...
Decreto Real• O ambiente final é controlado ▫ Sabe-se a quantidade máxima de usuários que   podem entrar simultaneamente (...
Django no iis7
Django no iis7
Django no iis7
Django no iis7
Django no iis7
Django no iis7
Django no iis7
Django no iis7
Django no iis7
Django no iis7
Upcoming SlideShare
Loading in …5
×

Django no iis7

934 views
837 views

Published on

Uma análise sobre como rodar o Django no IIS 7 em um servidor Windows

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
934
On SlideShare
0
From Embeds
0
Number of Embeds
362
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Django no iis7

  1. 1. Django no IIS7Guilherme Medeiros@FReNeTiC_Brwww.FReNeTiC.com.br
  2. 2. ...In a galaxy far, far away...• Uma empresa bem grandona ▫ 700+ funcionários• Em um ambiente padronizado ▫ Microsoft  HyperV no Blade System  Servidores Windows Server 2012  Clientes Windows 7  Em testes para o Windows 8  Active Directory
  3. 3. ...um pequeno projeto de intranet quecresceu demais...• O que era para ser uma agenda de contatos ▫ PHP 5.0 ▫ Mysql com poucas tabelinhas• Cresceu à saltos quanticos ▫ Sistema de controle de arquivos (GED) ▫ Controle de custos de telefonia ▫ BDGC ▫ Fluxo de Caixa  Sistema de campeonato de Air Hockey ▫ MySQL ficou GIGANTE (quase 1GB)
  4. 4. ...mas cresceu errado...• Não acompanhou a evolução do PHP ▫ PAREM DE RIR!!!!! ▫ Do PHP5.0 para o PHP5.5 a linguagem mudou, e melhorou, muito!!!! ▫ PAREM DE RIR!!!!!!!• Sem padrão de projeto ▫ Nem MVC nem nada =/• Sem documentação ▫ Mas meu chefe não pode saber disso...
  5. 5. Em forma de renovação• MySQL é legal, mas Oracle é muito melhor ▫ Migrar todo o código escroto de MySQL puro para um ORM que possa ser utilizado para qualquer banco  Mas vamos usar o Oracle 11g• Organizar os códigos ▫ Refatorar, tirar funcionalidades que ninguém usa, otimizar rotinas, tornar legível toda aquela zona
  6. 6. Em forma de necessidade• Documentar ▫ O projeto precisa de documentação URGENTEMENTE• Versionar ▫ Sair do sistema GO HORSE• Dividir responsabilidades ▫ A EUquipe está crescendo
  7. 7. Migra tudo para o PHP5• Seria legal utilizar um framework ▫ Mas qual?????  Zend, Synfony, Code Igniter, Cake, Laravel, Fuel, Solar, Aura, Fat Free, Phalcon, YAF, YII, PPI, Kohana, Jelix, Akelos, Slim, Lithium, Sonata... ▫ Cansei de escrever ▫ Excesso de Dependency Injection ▫ Excesso de uso do “confuso” Composer ▫ Futuro incerto  Muitos estão mudando o seu padrão para utilizar DI e Composer... ▫ Estrutura de pastas/projetos nem sempre adaptável
  8. 8. E por que não Python?• Python é Python ▫ Não vou falar da sintaxe da hora, nem das baterias incluidas e nem do resto...• Python tem uma boa performance para a Web• A gama de frameworks para a WEB é bem menor ▫ Não fica a sensação de “mais do mesmo”• Django ▫ Tem um filme sobre ele e sua licença de uso  DJANGO LIVRE!!!!
  9. 9. Django dentro do IIS7.5• Manter todo o padrão Microsoft  Freetards escrevendo #chatiado no Twitter• Controle de acesso feito pelo Active Directory  Molesa isso no IIS• Suporte  Mim programador, tu Administrador da rede com certificação• Num sei, só sei que foi assim  By Chicó• Por que o desafio foi aceito!!!!
  10. 10. Botando para funcionar• IIS7.5 tem suporte nativo a FCGI ▫ Então tem como colocar o Python “dentro” do IIS• IIS7.5 possui módulos para rewrite e proxy ▫ Tem que instalar por fora, mas não é coisa do outro mundo• Windows não é *NIX ▫ É melhor  FLAME WAR BITCHES!!! ▫ Não roda gUnicorn nem uWSGI  Na verdade, nada que dependa de PCNTL
  11. 11. Botando para funcionar• ISAPI e WSGI no IIS7 ▫ Até que existem projetos para isso  Mas aparentemente estão mortos  RIP
  12. 12. Caso 1: FCGI• PYWIN32• Django-Windows-Tools  http://pypi.python.org/pypi/django-windows-tools ▫ Colocando o IIS para controlar os processos Python/Django
  13. 13. Caso 2: Proxy Rewrite• Instalar Modulo Rewrite  http://www.iis.net/downloads/microsoft/url-rewrite• Instalar Modulo Proxy  http://www.iis.net/downloads/microsoft/application- request-routing• Rodar um servidor para a aplicação  Runserver do Django  Apache 2.2 com mod_wsgi  Waittress ▫ http://docs.pylonsproject.org/projects/waitress
  14. 14. Facilidade de implementação• FCGI ▫ Easy• Proxy Rewrite ▫ Instalar os módulos necessários - NORMAL ▫ Utilizando:  Django Runserver – NORMAL  Waitress – HARD  Apache - NIGHTMARE
  15. 15. Ab –c 10 –n 100001200.00 3000.001000.00 2500.00800.00 2000.00 HTML HTML600.00 FCGI 1500.00 FCGI RunServer RunServer400.00 1000.00 Waittress Waittress200.00 Apache 500.00 Apache 0.00 0.00 Time taken for tests (Seconds) Requests per second 120.00 100.00 80.00 HTML 60.00 FCGI RunServer 40.00 Waittress 20.00 Apache 0.00 Time per request(ms)
  16. 16. Ab –c 100 –n 10000140.00 2500.00120.00 2000.00100.00 HTML 1500.00 HTML80.00 FCGI FCGI60.00 1000.00 RunServer RunServer40.00 Waittress Waittress 500.0020.00 Apache Apache 0.00 0.00 Time taken for tests (Seconds) Requests per second 14.00 80 12.00 70 10.00 60 HTML 8.00 50 HTML FCGI 6.00 40 FCGI RunServer 4.00 30 RunServer Waittress 20 Waittress 2.00 Apache Apache 10 0.00 Time per request(ms) 0 Failed Requests
  17. 17. Ab –c 1000 –n 1000070.00 400.0060.00 350.0050.00 300.00 HTML 250.00 HTML40.00 FCGI 200.00 FCGI30.00 RunServer 150.00 RunServer20.00 Waittress Waittress 100.0010.00 Apache Apache 50.00 0.00 0.00 Time taken for tests (Seconds) Requests per second7.00 10000 90006.00 80005.00 7000 HTML 6000 HTML4.00 FCGI 5000 FCGI3.00 RunServer 4000 RunServer2.00 Waittress 3000 Waittress Apache 20001.00 Apache 10000.00 0 Time per request(ms) Failed Requests
  18. 18. Botando os pingos nos is (ou seria iis?)• FCGI vs Proxy Rewrite ▫ FCGI é muito mais fácil de implementar  Só foi preciso instalar duas bibliotecas do PyPi ▫ O único desempenho relevante no Proxy Rewrite foi o do Apache  Tanto para concorrencia 10 (-c 10) quanto para concorrencia 100 (-c 100) o desempenho do FCGI é apenas metade do Apache ▫ As perdas de requisições  Com concorrencia 1000 (-c 1000) o Apache passa a perder 20% dos pacotes ▫ Nem comento o Runserver e o Waittress
  19. 19. Tá difícil de comparar• Cada gráfico possui um campo HTML  Esse é o desempenho ideal ▫ Desempenho do IIS servindo um arquivo estático  Index.html• O objetivo para cada método é ter o mesmo desempenho do HTML  Difícil pra caramba...
  20. 20. Decreto Real• O ambiente final é controlado ▫ Sabe-se a quantidade máxima de usuários que podem entrar simultaneamente (os funcionários da empresa)  Mas é difícil acontecer pois existe “turno” ▫ Nesse caso, os desempenhos são bem parecidos  Retorno da requisição na casa dos MS (milessegundos)• A facilidade de uso vence nesse caso ▫ The winner is  FCGI com Django-Windows-Tools

×