Tag Archives: conceitos

Content Delivery Network – CDN, Você ainda vai usar uma

Uma CDN (Content Delivery Network) é uma rede de computadores distribuídos geograficamente com cópias de conteúdos a serem acessados.

A CDN tem dois grandes objetivos o primeiro é tornar mais próximo o conteúdo que esta sendo distribuído e solicitado (Imagens, Stylesheets, Scripts, Flashs, Músicas, PDF’s e etc) dos usuários assim diminuindo o tempo de resposta e latência destes componentes, o segundo é diminuir custos com banda/tráfego de dados (do site que esta utilizando a CDN) e por conseqüência diminuir a quantidade de requisições diretas ao servidor real do site desafogando e muito a infra “local”.

É normal um site sendo acessado de uma país ter grandes diferenças no tempo de resposta das páginas quando acessado de um país vizinho, até mesmo diferenças entre cidades ou bairros. Isto ocorre devido ao roteamento entre as requisições e os servidores que estão sendo solicitados que dependendo do link ou região que o usuário se encontra os saltos são maiores ou menores e com velocidades diferentes também.

Uma solução interessante seria entregar para cada usuário ou região o conteúdo que esteja mais próximo da requisição que esta sendo feita e é justamente ai que uma CDN faz a diferença melhorando incrivelmente a experiência do usuário e o tempo de resposta dos componentes que estão sendo solicitados pelo usuário.

Existem CDN’s comerciais ou pagas e CDN’s gratuitas abaixo listo algumas bem famosas e recomendadas pela indústria.

CDN’s Comerciais:
Akamai
EdgeCast Networks
Limelight Networks

Curiosidade

Daniel M. Lewin um dos fundadores da Akamai estava em um dos vôos do 11 de setembro de 2001 e faleceu.

Conclusão

Aumente a performance do tempo de resposta dos componentes de suas páginas, faça os usuários mais felizes e ainda diminua alguns gastos com o alto tráfego que você tem hoje sem uma CDN pra te dar uma força.

Web Performance Optimization – WPO

A cada dia novas startups surgem com idéias inovadoras em ramos diferentes, mas o que todas elas têm em comum é que normalmente praticamente toda sua operação e infraestrutura vivem na Web, a “lojinha”, o “ganha pão” está e somente é acessível através de uma URL.

Isto requer um investimento menor já que é mais barato no começo criar um site do que montar por exemplo uma loja física (comparando a outros negócios).

Uma vez que a empresa vive através da World Wide Web é fundamental que o tal site esteja otimizado afim de garantir entre outras coisas um rápido atendimento (e a qualquer momento, afinal acho que essa é uma vantagem da Web), satisfação do cliente, um baixo (ou o mais baixo possível) custo para manter a “lojinha” aberta (o site do ar), fidelização da clientela, aumento da taxa de conversão, uma fácil descoberta de seus produtos ou serviços por potenciais interessados (SEO), etc etc etc.

WPO – Web Performance Optimization é uma recente área de estudo e otimização pra Web Sites e deve ser observada e utilizada cada dia mais por todos aqueles que pretendem trabalhar ou até viver de internet (no caso dos empreendedores). WPO é parecido com SEO do ponto de vista que também traz mais trafego para o site, mas não para por aí, de acordo com alguns cases que veremos abaixo também melhora a experiência do usuário, aumenta receita e diminui custos operacionais.

Parece ridículo, mas apenas 1 segundo a mais ou a menos no tempo de carregamento de uma página faz muita diferença dependendo de qual site estamos falando, veja alguns exemplos:

Bing – 2 segundos a mais no tempo de resposta de suas páginas é igual a 4,3% de receita a menos por usuário.

Google – 400 milisegundos de delay é equivalente a 0,59% de buscas a menos por usuário.

AOL – Atestou que usuários que carregam páginas rápidas navegam 50% mais que usuários com páginas com carregamentos mais demorados (50% de páginas a mais por usuário)

ShopZilla – Diminuiu o tempo de carregamento das páginas de 7 segundos para 2 segundos e conseguiu aumentar de 7% para 12% em receita e diminuir em 50% os custos com hardware e banda.

Fonte: Gomez Inc

Empresas sérias que tem milhares ou milhões de acessos diariamente devem sem sombra de dúvidas melhorar a performance de suas páginas, simplesmente você ganha mais e gasta menos! veja que maravilha!

Há varias formas e técnicas para aumentar a performance das páginas de nossos sites, mas isso é assunto para um outro post. (em breve postarei algumas coisas.)

Importante: Não poderia deixar de dizer que o Google já há algum tempo vem utilizando o fator “velocidade/performance” como critério para o resultado de suas buscas, ou seja, agora páginas rápidas ou performáticas são melhor indexadas pelo maior mecanismo de buscas do planeta.

Conclusão

Melhorar a performance de nossas páginas diminui custos de operação com hardware e banda (pois se trafega menos dados e diminui em manutenção dos servidores, por exemplo), aumenta tempo de navegação e pageview por usuário (logo da pra vender mais, aumentando a receita), fortifica a marca afinal sites rápidos são adorados pelos usuários e eles recomendarão com certeza, etc e tal!

Http Modules e Http Handlers

Resolvi escrever este post para explicar o que são os tão conhecidos porém as vezes não entendidos Http Modules e Http Handlers, estes dois players na infraestrutura do ASP.NET fazem basicamente tudo acontecer.

Todo o funcionamento do ASP.NET é baseado nestes dois conceitos que aprenderemos a partir de agora.

ASP.NET Pipeline

Todas as requisições feitas para uma aplicação ASP.NET são tratadas através de um pipeline, este pipeline possui uma série de eventos de entrada que leva a tal requisição a um manipulador, este manipulador é o que chamamos de Http Handler (os Http Handlers também são conhecidos como Endpoints – você já entenderá o porque). Depois da requisição ser tratada por um Http Handler ela será liberada ao solicitante e dessa vez passará pelos eventos de saída do pipeline.

ASP.NET Pipeline

ASP.NET Pipeline

Perceba que na imagem o processo lembra muito um túnel (pipeline) onde a requisição passa por eventos de entrada, é tratada por um http handler e depois passa por eventos de saída até ser liberada ao solicitante da requisição.

É importante lembrar que todas as requisições passam por este eventos do pipeline (definidos por HttpApplication) .

Http Handlers

Os Http Handlers são de fato os componentes que fazem “a coisa acontecer”, são eles que processam as requisições (ProcessRequest definido por IHttpHandler). No Web Forms por exemplo o HttpHandler que processa as requisições é o PageHandlerFactory que implementa a interface IHttpHandler, já no MVC esse papel é feito pelos handlers MvcHandler e MvcHttpHandler (dependendo da situação).

É comum nós termos que criar nossos próprios Http Handlers em algumas situacões como por exemplo um handler de imagens que possui os binários no banco de dados e ainda talvez tenham que variar os tamanhos dessas imagens. Outro exemplo seria criar um handler para prover informações em formato RSS ou CSV.

Implementar um handler não é uma tarefa muito difícil só é preciso implementar a interface IHttpHandler (Basta dar uma googlada para ver 1 bilhão de exemplos =D).

Http Modules

Diferente dos Http Handlers que atuam como endpoints para as requisições os Http Modules atuam nos mais variados eventos do pipeline do ASP.NET, na verdade um Http Module (quando escrito) se inscreve em um ou mais eventos do pipeline onde pode fazer diferentes coisas (olhar imagem do pipeline acima e link do HttpApplication), dessa forma dizemos que os Modules atuam como “filtros” em todo esse processo (tanto nos eventos de entrada como nos eventos de saída do pipeline).

Você pode querer criar um Http Module para por exemplo minimificar arquivos estáticos, colocar alguns headers http customizados na resposta da requisição ou ainda tratar questões de segurança e logging que são tarefas que normalmente um Http Module resolve muito bem.

Assim como os Handlers os Modules não são coisas de outro mundo para serem implementados e você pode achar milhares de exemplos facilmente no Google.

Resumindo

Os Http Handles e os Http Modules são parte fundamental do ASP.NET entendê-los faz de você um melhor desenvolvedor sem dúvidas, e acredite quando der zica saber bem como funciona o framework com o qual você trabalha faz toda a diferença.

Espero que este post tenha ajudado de alguma forma…

Qualquer dúvida, crítica ou sugestão por favor vamos bater um papo nos comentários.

Abraços!