django no iis7

Post on 18-Dec-2014

690 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

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