django no iis7
Post on 18-Dec-2014
703 Views
Preview:
DESCRIPTION
TRANSCRIPT
Django no IIS7Guilherme Medeiros@FReNeTiC_Brwww.FReNeTiC.com.br
Era uma vez...
...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
...um pequeno projeto de intranet que cresceu 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)
...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...
O mal apareceu!!!!
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
Em forma de necessidade
•Documentar▫O projeto precisa de documentação
URGENTEMENTE•Versionar
▫Sair do sistema GO HORSE•Dividir responsabilidades
▫A EUquipe está crescendo
E uma estratégia foi traçada
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
Hora de penser no plano B
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!!!!
Um estranho no ninho
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!!!!
Quem vive de sonho é padeiro!!!
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
Botando para funcionar
•ISAPI e WSGI no IIS7▫Até que existem projetos para isso
Mas aparentemente estão mortos RIP
Caso 1: FCGI
•PYWIN32•Django-Windows-Tools
http://pypi.python.org/pypi/django-windows-tools
▫Colocando o IIS para controlar os processos Python/Django
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
Instalando
Facilidade de implementação
•FCGI▫Easy
•Proxy Rewrite▫Instalar os módulos necessários - NORMAL▫Utilizando:
Django Runserver – NORMAL Waitress – HARD Apache - NIGHTMARE
Rodando
Ab –c 10 –n 10000
Time taken for tests (Seconds)0.00
200.00
400.00
600.00
800.00
1000.00
1200.00
HTMLFCGIRunServerWaittressApache
Requests per second0.00
500.00
1000.00
1500.00
2000.00
2500.00
3000.00
HTMLFCGIRunServerWaittressApache
Time per request(ms)0.00
20.00
40.00
60.00
80.00
100.00
120.00
HTMLFCGIRunServerWaittressApache
Ab –c 100 –n 10000
Time taken for tests (Seconds)0.00
20.00
40.00
60.00
80.00
100.00
120.00
140.00
HTMLFCGIRunServerWaittressApache
Requests per second0.00
500.00
1000.00
1500.00
2000.00
2500.00
HTMLFCGIRunServerWaittressApache
Time per request(ms)0.00
2.00
4.00
6.00
8.00
10.00
12.00
14.00
HTMLFCGIRunServerWaittressApache
Failed Requests0
10
20
30
40
50
60
70
80
HTMLFCGIRunServerWaittressApache
Ab –c 1000 –n 10000
Time taken for tests (Seconds)0.00
10.00
20.00
30.00
40.00
50.00
60.00
70.00
HTMLFCGIRunServerWaittressApache
Requests per second0.00
50.00
100.00
150.00
200.00
250.00
300.00
350.00
400.00
HTMLFCGIRunServerWaittressApache
Time per request(ms)0.00
1.00
2.00
3.00
4.00
5.00
6.00
7.00
HTMLFCGIRunServerWaittressApache
Failed Requests0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
HTMLFCGIRunServerWaittressApache
Seu rei mandou dizer
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
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...
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
GG
top related