Como os sites podem ser muito mais rápidos e nunca sairem do ar? Especialistas do Yahoo! e do Flickr contam como em dois workshops realizados no primeiro dia da Web 2.0 Expo.
Dos vários assuntos tratados hoje, acompanhei dois sobre como deixar os sites mais rápidos e facilmente escaláveis e com alta disponibilidade.
O primeiro foi com o Steve Souders e Tenni Teurer do Yahoo!. Eles fazem parte de um grupo de pesquisas formado em 2004 chamado "Exceptional Performance" dedicado a melhorar a experiência do usuário dos vários sites do Yahoo!.
Depois de diversas experiências relacionadas ao tempo de resposta e eficiência (na perspectiva do usuário) das páginas dos sites eles chegaram às 14 (ainda crescendo) recomendações abaixo.
Para quem for menos técnico, basta saber que somente 5 a 10% do tempo para completar a visualização da página é gasto com a transferencia do HTML. Os outros 90% do tempo é gasto para trazer os objetos como imagens, CSS e scripts que a compõe. As recomendações abaixo servem para atacar os 20% dos problemas que melhoram 80% do tempo de resposta de uma página.
- Minimizar as requisições HTTP
- Usar uma CDN
- Usar a data de expiração dos objetos no Header HTTP
- Compactar os elementos da página com Gzip
- Mover os arquivos CSS para o topo da página
- Mover os arquivos JS para o final da página
- Evite expressões no CSS
- Use arquivos externos para JS e CSS
- Minimize a quantidade de domínios presentes na página
- Reduza os arquivos JS
- Evite Redirecionamentos
- Remova scripts duplicados
- Desligue os Etags
- Utilize cache no Ajax e minimize os scripts
A explicação sobre cada item, darei em um artigo posterior.
Para o Yahoo! o que importa mais é a percepção do usuário quanto ao tempo para visualização da página do site onde ele está navegando. Além, é claro, do grande trabalho de melhoria de desempenho dos servidores e programas que rodam neles, os profissionais técnicos do Yahoo! gastam muito tempo otimizando como as páginas são construídas. Eles não interferem no design da página, mas tentam extrair dele o menor tempo de carga possível. Isso é feito com analises cuidadosas de como o navegador transfere e monta os elementos de uma página. Dessa análise, saíram as recomendações acima e que todos os sites devem seguir. Eles desenvolveram ferramentas que analisam cada página dando uma nota tanto mais alta quanto for a aderência dela às recomendações.
Nós precisamos mudar o pensamento que o HTML, CSS e Scripts são responsabilidades dos webmasters. Como eles são usados é de suma importância para um site rápido e tem um grande impacto no ambiente de servidores e no consumo de banda.
O segundo workshop foi apresentado por Cal Henderson, engenheiro do Flickr, o famoso site de fotos. Ele apresentou as estruturas web escaláveis que eles desenvolveram ao longo dos anos conforme a audiência do site crescia exponencialmente.
Ele dividiu em 11 assuntos:
- Escalabilidade
- Arquitetura
- Balanceamento de Carga
- Filas
- Dados Relacionais
- Caching
- Dados em alta disponibilidade
- Federação de dados
- Múltiplos data centers em Alta disponibilidade
- Distribuição de Arquivos
- Armazenagem de arquivos
O foco principal é garantir que o site não saia do ar. Cada assunto trata de um aspecto importante do site e como deve ser configurado para que o site não deixe de funcionar caso uma máquina ou software apresente problemas.
A tecnologia utilizada é toda Open Source e serve para qualquer plataforma tecnológica. Apesar eles usarem o LAMP (Linux, Apache, MySQL e PHP), ele apresentou exemplos com configuração semelhante em outros sites com alto volume de trafego e que utilizam tecnologias diversas.
Como as 14 recomendações do Yahoo!, explicarei os 11 assuntos também em um novo artigo.