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.

  1. Minimizar as requisições HTTP
  2. Usar uma CDN
  3. Usar a data de expiração dos objetos no Header HTTP
  4. Compactar os elementos da página com Gzip
  5. Mover os arquivos CSS para o topo da página
  6. Mover os arquivos JS para o final da página
  7. Evite expressões no CSS
  8. Use arquivos externos para JS e CSS
  9. Minimize a quantidade de domínios presentes na página
  10. Reduza os arquivos JS
  11. Evite Redirecionamentos
  12. Remova scripts duplicados
  13. Desligue os Etags
  14. 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:

  1. Escalabilidade
  2. Arquitetura
  3. Balanceamento de Carga
  4. Filas
  5. Dados Relacionais
  6. Caching
  7. Dados em alta disponibilidade
  8. Federação de dados
  9. Múltiplos data centers em Alta disponibilidade
  10. Distribuição de Arquivos
  11. 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.