segunda-feira, 9 de fevereiro de 2015

Hardcore Devel #4

Desenvolver para a web realmente não é fácil. Bem vindos ao Hardcore Devel!

Hoje iremos tratar de desenvolvimento web e um pouco de dicas para desempenho nas suas páginas. Existem pequenos detalhes que podem significar a diferença entre o sucesso e o timeout. Primeiro nós vamos explicar um pouco como funcionam os servidores web e em seguida falaremos sobre desempenho.

Bom, as aplicações gerais de internet são páginas exibidas por um navegador. Essas páginas na verdade são arquivos de texto escritos de um jeito específico chamado HTML(Hyper Text Mark-up Language). O navegador entende o que está escrito ali e coloca na tela o que deve ser colocado. Antigamente o estilo da página todo dependia do html, mas hoje em dia temos o CSS(Cascading Style Sheets) pra fazer esse trabalho.

Provavelmente esse post terá muitas siglas. Recomendo anotá-las.
Mas e o Php? Cade o SQL? E aquelas coisas todas? Calma que esse mundo é muito vasto. Não vou falar nem metade do que tem de material sobre isso, mas antes de continuarmos precisamos enter o conceito de cliente e de servidor, que é bastante intuitivo até.

Cliente: Quem solicita um serviço.
Servidor: Quem executa o serviço.

Simples assim. O servidor pode precisar de algumas informações do cliente e este pode precisar da resposta do servidor. Quando você está em um site a coisa funciona mais ou menos assim.

- Você (cliente) pede uma página
- Servidor entrega a página
- Você pede uma pagina que faz uma busca no site
- Servidor retorna o resultado da busca

Quando falamos em rede, as coisas não necessariamente precisam de resposta, mas é sempre elegante fazê-lo. O cara que escuta e responde o cliente é geralmente um programa chamado Apache. Ele tem que escutar o que o cliente quer, fazer o processamento necessário e responder de volta.

O Php é um dos caras que ajudam o Apache. Tudo o que o Apache deve responder ao cliente é HTML. Ele não deve deixar o cliente procurar nas entranhas do servidor por qualquer coisa, apesar de isso ser possível. O Php faz o trabalho de rodar scripts para coletar e processar informação dos mais diveraos lugares, como bancos se dados, e se necessário lançar essa informação de volta. Php é uma linguagem de programação que faz a máquina fazer coisas. Diferente do HTML que não pode fazer loops, por exemplo. Ele não precisaria atuar junto com o Apache, mas ele ja ganhou essa popularidade.

Então você usar o Php pra escrever um HTML que depende daquilo que você passa de informação para o servidor. Digamos que você tem uma lista de websites para mostrar de 10 em 10. Se você não tem uma linguagem de programação, você vai precisar de 1 arquivo HTML diferente pra cada página. E provavelmente vai ter que mudar todos quando tiver que mudar essa lista. Com o Php você pode guardar essa lista em um arquivo que ele vai lá e seleciona os elementos que devem aparecer na página solicitada.

E então temos mais uma linguagem de programação. Só que essa funciona no lado do cliente. O nome dela é Javascript e o interpretador dela vem embutido nos seus navegadores(Entendeu porque eles pesam?). Isso faz uma salada porque cada navegador pode interpretar o Javascript de uma forma diferente, mas graças a Deus tudo já atingiu um nível aceitável de padronização. Javascript pode ser usado pra fazer todo o trabnalho que o cliente pode ver sendo feito. Isso porque o código Javascript é passado dentro do arquivo HTML, é quase como se o cliente pedisse "po, me vê aquele código de fazer raiz quadrada ae." pra ele poder rodar lá sem te encher o saco.

Porque Javascript é um perigo? Porque se o cara for um babaca ele pode escrever um código pra te sacanear fortemente(Será que alguem aqui já foi RickRollado?).
Se é um perigo por que ele existe? Porque se bem usado ele pode mastigar o trabalho pro Php só engolir e cuspir o resultado de volta. Isso pode agilizar a velocidade de tudo aquilo que roda no servidor. Ou seja, a solução pro timeout que você está sofrendo. Fato é que se você pode delegar um trabalho ao cliente você deve fazé-lo para não ocupar o servidor com abobrinhas. Sou contra isso, mas devo admitir que, pra servidores superlotados, isso faz algum sentido.

Existe uma outra coisa que auxilia muito e agiliza os servidores. É uma coisa chamada cache. Você já deve ter ouvido falar de memória cache. Ela é uma memória mais espertinha de acesso rápido que tem que ficar ligada se está atualizada ou não. Um cache atualizado é trabalho já feito e ganho de tempo, permitindo respostas velozes e desafogando o servidor. Não é a toa que todo sistema de Php hoje em dia é projetado para gerar arquivos de cache.

E existe mais uma técnica que agiliza a internet que é chamada de Mirroring. Consiste em você salvar cópias em vários lugares alternativos, de modo que se um servidor está sobrecarregado, ou até caiu mesmo, você ainda consiga fornecer o serviço. Para o Mirroring funcionar, você precisa de alguém, nem que seja o próprio servidor principal, pra fazer esse balanço de carga.

Existem programas que fazem cache e ou mirroring abstratamente, ou seja, sem você ter que se preocupar em como diabos implementar isso. Para cache você pode usar uma solução conhecida como Varnish.

Outra coisa que faz tudo ficar bem ágil é um código bem feito. Sempre é uma excelente solução.

Então isso é tudo. Analisem bem seus códigos se vocês estiverem tendo problemas de desempenho. Se tudo mais der errado vocês tem 3 aliados: Javascript, cache, e mirroring! Fuiz!

Nenhum comentário:

Postar um comentário