SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
OU?
         COM?

Uma questão de arquitetura
EU
      Sidney F, drogado e prostituido.
    Há 6 anos ainda luta para se livrar do
WebForms. Ativista contra a entrada de novas
 drogas na vida do desenvolvedor moderno
             como Coffeescript.
Internet
Primeiro Passo
Admita que você tem um problema
“Um homem que
   não conhece sua
história está fadado a
       repeti-la”
IIS 1.0
• 1995
• ONE-WAY
• Apenas arquivos estáticos
• Arquitetura Monolitica
(MTX.EXE)
• Add-on do Windows NT 3.51
IIS 2.0
• 1996
• TWO-WAY, sofrivel
• Surge o CGI
• Ainda é Monolitico
• Embutido no Windows NT 4
IIS 3.0 e 4.0
• 1998
• TWO-WAY, ainda sofrivel
• Ainda é Monolitico
• Windows NT 4 (Service Pack 3)
• IIS 4 era Option Pack
IIS 5.0
• 2000
• TWO-WAY, fácil
• Core Monolitico, com pontos
de extensão
• DLLHOST.EXE
• Windows 2000
• ASP é criado (uhuuuuu)
IIS 6.0
• 2003
• TWO-WAY, bem fácil
• Core com multiplos niveis de
isolamento
• W3WP  .EXE
• Windows 2003 e XP
• .NET entra em cena
IIS 7.0 e 7.5
• 2008
• MULTI-WAY, bem fácil
• Completamente reescrito
• Windows 2008 e Vista
• Arquitetura baseada em plugins
Overview of IIS 6.0
        Architecture
http://www.microsoft.com/technet/prodtechnol/
WindowsServer2003/Library/IIS/843df643-1dbb-
    4fb6-910d-ec1965fa9e43.mspx?mfr=true
Internamente
   é assim
http://sitequalquer.com/RotaLouca/13

HTTP.SYS      http://sitequalquer.com/DrogaPesada.aspx
              http://sitequalquer.com/IMAGEM.PNG
              http://sitequalquer.com/TESTE.HTM



                 Como está
               configurado o
SVCHOST.EXE   mapeamento de
                requisições?

               Static Provider                .NET Provider


W3WP.EXE
var result =
command.ExecuteNonQuery(
    “UPDATE Tabela SET Ativo=1“
);
A thread fica parada
apenas aguardando a
resposta do Banco de
        Dados
Tempo do I/O
L1:      3 instruções
L2:      14 instruções
RAM:     250 instruções
DISK:    41,000,000 instruções
NETWORK: 240,000,000 instruções
var result =
command.ExecuteNonQuery(
    “UPDATE Tabela SET Ativo=1“
);

// 240.000.000 + tempo de
processamento do banco depois

print(result.TotalCount);
.NET Provider




                                    Milhões de instruções perdidas
                                    6 Threads ocupando memória
Program Counter




                                    }
Para de Processar




Program Counter
Volta a Processar
Como evitar este
  desperdicio?
NodeJS
http://s3.amazonaws.com/four.livejournal/20091
                117/jsconf.pdf
Porque NodeJS?

Eu gosto e gosto não
     se discute.
Como funciona a
 arquitetura no
    NodeJS?
http://sitequalquer.com/RotaLouca/13

LIBEV          http://sitequalquer.com/DrogaPesada.aspx
               http://sitequalquer.com/IMAGEM.PNG
               http://sitequalquer.com/TESTE.HTM



                Static Provider                Sua Aplicação


JS Libraries
var result =
command.ExecuteNonQuery(
    “UPDATE Tabela SET Ativo=1“,
    function(result){
         // faz algo com o retorno
    }
);
Node JS
1a Requisição
PC processa         LIBEV


Código chama IO
PC volta p/ LIBEV             function (result) { … }




                           O tempo que para o IO retornar e
                        acionar o callback pode levar muito mais
                         de 240.000.000 instruções se lembram?
                         Vamos liberar a Thread para processar
                                       outra coisa
É possivel usar o
NodeJS junto com
       IIS?
Internamente
 ficaria assim
É possivel desenvolver
  considerando o IO
 Bloqueante no .NET?
Mas meus sistemas
  legados é possivel
mudar essa arquitetura?
Dúvidas?
Só por hoje
  Obrigado

Mais conteúdo relacionado

Mais procurados

InfoBrasil 2014 - O sucesso da virtualização em uma instituição federal gasta...
InfoBrasil 2014 - O sucesso da virtualização em uma instituição federal gasta...InfoBrasil 2014 - O sucesso da virtualização em uma instituição federal gasta...
InfoBrasil 2014 - O sucesso da virtualização em uma instituição federal gasta...Arley Rodrigues
 
Trabalho de sistema operativo servidor
Trabalho de sistema operativo servidorTrabalho de sistema operativo servidor
Trabalho de sistema operativo servidordtml2k
 
Frontend (RailsMG)
Frontend (RailsMG)Frontend (RailsMG)
Frontend (RailsMG)Daniel Lopes
 
Sistemas operativos servidor
Sistemas operativos servidorSistemas operativos servidor
Sistemas operativos servidorJoao Andre Picao
 
Projetos de rede sistemas de servidores
Projetos de rede sistemas de servidoresProjetos de rede sistemas de servidores
Projetos de rede sistemas de servidoresAriel Fernando
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceSaveincloud
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemSaveincloud
 
Sistemas operacional 9
Sistemas operacional 9Sistemas operacional 9
Sistemas operacional 9Nauber Gois
 
Virtualização de servidores com tecnologia Linux
Virtualização de servidores com tecnologia LinuxVirtualização de servidores com tecnologia Linux
Virtualização de servidores com tecnologia LinuxFernando Costa
 
Arquitetura Web no AWS
Arquitetura Web no AWSArquitetura Web no AWS
Arquitetura Web no AWSRafael Nunes
 
Sistemas operativo servidor (PT)
Sistemas operativo servidor (PT)Sistemas operativo servidor (PT)
Sistemas operativo servidor (PT)Joao Kanino
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Felipe Blini
 
Sistemas Operativos Servidores
Sistemas Operativos ServidoresSistemas Operativos Servidores
Sistemas Operativos ServidoresAlexandre Maia
 
ICA-AtoM - Configuração PC
ICA-AtoM - Configuração PCICA-AtoM - Configuração PC
ICA-AtoM - Configuração PCSara Santos
 

Mais procurados (20)

InfoBrasil 2014 - O sucesso da virtualização em uma instituição federal gasta...
InfoBrasil 2014 - O sucesso da virtualização em uma instituição federal gasta...InfoBrasil 2014 - O sucesso da virtualização em uma instituição federal gasta...
InfoBrasil 2014 - O sucesso da virtualização em uma instituição federal gasta...
 
Trabalho de sistema operativo servidor
Trabalho de sistema operativo servidorTrabalho de sistema operativo servidor
Trabalho de sistema operativo servidor
 
Frontend (RailsMG)
Frontend (RailsMG)Frontend (RailsMG)
Frontend (RailsMG)
 
Sistemas operativos servidor
Sistemas operativos servidorSistemas operativos servidor
Sistemas operativos servidor
 
MySQL - the database
MySQL - the databaseMySQL - the database
MySQL - the database
 
Projetos de rede sistemas de servidores
Projetos de rede sistemas de servidoresProjetos de rede sistemas de servidores
Projetos de rede sistemas de servidores
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performance
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na Nuvem
 
Sistemas operacional 9
Sistemas operacional 9Sistemas operacional 9
Sistemas operacional 9
 
Virtualização de servidores com tecnologia Linux
Virtualização de servidores com tecnologia LinuxVirtualização de servidores com tecnologia Linux
Virtualização de servidores com tecnologia Linux
 
Arquitetura Web no AWS
Arquitetura Web no AWSArquitetura Web no AWS
Arquitetura Web no AWS
 
Componentes Web J2EE
Componentes Web J2EEComponentes Web J2EE
Componentes Web J2EE
 
Virtualização com Xen
Virtualização com XenVirtualização com Xen
Virtualização com Xen
 
Sistemas operativo servidor (PT)
Sistemas operativo servidor (PT)Sistemas operativo servidor (PT)
Sistemas operativo servidor (PT)
 
Compilando o kernel linux (2)
Compilando o kernel linux (2)Compilando o kernel linux (2)
Compilando o kernel linux (2)
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
Adm sop-unidade2
Adm sop-unidade2Adm sop-unidade2
Adm sop-unidade2
 
Sistemas Operativos Servidores
Sistemas Operativos ServidoresSistemas Operativos Servidores
Sistemas Operativos Servidores
 
ICA-AtoM - Configuração PC
ICA-AtoM - Configuração PCICA-AtoM - Configuração PC
ICA-AtoM - Configuração PC
 
Django no AWS
Django no AWSDjango no AWS
Django no AWS
 

Destaque

Destaque (9)

Instalação e configuração iis
Instalação e configuração iisInstalação e configuração iis
Instalação e configuração iis
 
Kzan IIS
Kzan IISKzan IIS
Kzan IIS
 
Iis 6.0
Iis 6.0Iis 6.0
Iis 6.0
 
Servidor HTTP en Windows (IIS)
Servidor HTTP en Windows (IIS)Servidor HTTP en Windows (IIS)
Servidor HTTP en Windows (IIS)
 
Instalação IIS 7.0 no Windows Server 2008
Instalação IIS 7.0 no Windows Server 2008Instalação IIS 7.0 no Windows Server 2008
Instalação IIS 7.0 no Windows Server 2008
 
Criando um site no iis
Criando um site no iisCriando um site no iis
Criando um site no iis
 
IIS
IISIIS
IIS
 
Understanding IIS
Understanding IISUnderstanding IIS
Understanding IIS
 
Internet Information Server (IIS)
Internet Information Server (IIS)Internet Information Server (IIS)
Internet Information Server (IIS)
 

Semelhante a A evolução do IIS e como lidar com operações bloqueantes

Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server EmbratelAlex Hübner
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalierGleicon Moraes
 
ITerior - .NET Core, usando .NET no Linux!
ITerior - .NET Core, usando .NET no Linux!ITerior - .NET Core, usando .NET no Linux!
ITerior - .NET Core, usando .NET no Linux!Vinicius Mussak
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Fabrício Lopes Sanchez
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
TDC2016SP - O que há de novo no Entity Framework Core 1.0
TDC2016SP - O que há de novo no Entity Framework Core 1.0TDC2016SP - O que há de novo no Entity Framework Core 1.0
TDC2016SP - O que há de novo no Entity Framework Core 1.0tdc-globalcode
 
Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0Caliel Costa
 
TDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacTDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacAndre Baltieri
 
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0tdc-globalcode
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Mozart Diniz
 
Novidades do ASP.NET Core 2.0 - ASP.NET Core Campinas - Agosto/2017
Novidades do ASP.NET Core 2.0 - ASP.NET Core Campinas - Agosto/2017Novidades do ASP.NET Core 2.0 - ASP.NET Core Campinas - Agosto/2017
Novidades do ASP.NET Core 2.0 - ASP.NET Core Campinas - Agosto/2017Renato Groff
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Rodrigo Immaginario
 

Semelhante a A evolução do IIS e como lidar com operações bloqueantes (20)

Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server Embratel
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
ITerior - .NET Core, usando .NET no Linux!
ITerior - .NET Core, usando .NET no Linux!ITerior - .NET Core, usando .NET no Linux!
ITerior - .NET Core, usando .NET no Linux!
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
TDC2016SP - O que há de novo no Entity Framework Core 1.0
TDC2016SP - O que há de novo no Entity Framework Core 1.0TDC2016SP - O que há de novo no Entity Framework Core 1.0
TDC2016SP - O que há de novo no Entity Framework Core 1.0
 
Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0
 
TDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacTDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no Mac
 
1409243945064
14092439450641409243945064
1409243945064
 
XPT Framework
XPT FrameworkXPT Framework
XPT Framework
 
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0TDC2016POA | Trilha .NET - .NET Entity Core 1.0
TDC2016POA | Trilha .NET - .NET Entity Core 1.0
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?
 
Internet sem drama
Internet sem dramaInternet sem drama
Internet sem drama
 
Novidades do ASP.NET Core 2.0 - ASP.NET Core Campinas - Agosto/2017
Novidades do ASP.NET Core 2.0 - ASP.NET Core Campinas - Agosto/2017Novidades do ASP.NET Core 2.0 - ASP.NET Core Campinas - Agosto/2017
Novidades do ASP.NET Core 2.0 - ASP.NET Core Campinas - Agosto/2017
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
 
SQLInternalOps - SQLOS
SQLInternalOps - SQLOSSQLInternalOps - SQLOS
SQLInternalOps - SQLOS
 

A evolução do IIS e como lidar com operações bloqueantes