php classes - desenvolvimento de sites de web 2 0 em php para grandes audiências

24
PHP Classes PHP Classes Desenvolvimento de sites de Web 2.0 em PHP para grandes audiências Manuel Lemos [email protected] http://www.ManuelLemos.net/ webdevcamp 2007 São Paulo, 2 de Dezembro de 2007

Upload: manuel-lemos

Post on 24-May-2015

1.311 views

Category:

Technology


0 download

DESCRIPTION

Palestra sobre como desenvolver sites de conteúdo contribuido por comunidades de muitas pessoas, como fazer as comunidades crescerem sem fim, lidar com problemas de ter um grande número de acessos, etc..

TRANSCRIPT

Page 1: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

PHP ClassesPHP ClassesDesenvolvimento de sites de Web 2.0 em

PHP para grandes audiênciasManuel [email protected]

http://www.ManuelLemos.net/

webdevcamp 2007

São Paulo, 2 de Dezembro de 2007

Page 2: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Origem

● 1997 – Participação em listas de discussão

● 1998 – PHP 3 lançado com suporte a OOP

● Componentes prontos resolviam problemas frequentes de outros usuários

● Divulgação de classes prontas nas listas de discussão aumentaram muito a procura

● 1999 – Lançamento do site PHP ClassesPHP Classes →

Page 3: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Objetivos

● Meio de distribuição automática de classes

Minimizar esforço dos autores na divulgação

● Aumentar a base de usuários das classes

Alertar usuários por e-mail sobre novas classes e suas atualizações

● Estimular a partilha de conhecimento

Contribuição de novas classes e mais conteúdo →

Page 4: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Crescimento interminável

Web 2.0: Regra do 1%

● Site de conteúdo contribuído pelos usuários

● Por cada 100 novos usuários, 1 contribui

● Mais contribuições atraem mais usuários

● Quanto mais usuários, mais contribuidores →

Page 5: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Propaganda viral

Divulgação que traz mais divulgação

● Troca de anúncios com sites parceiros

● Top de autores

● Iniciativa amigos do site

● Espelhos do site

● Lista de grupos regionais de usuários de PHP

● Divulgação de novidades através de RSS →

Page 6: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

As dores do crescimento

Problemas do crescimento interminável

1. Qualidade das contribuições

2. Custos de operação →

Page 7: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Qualidade das contribuições

O problema de ter muito do mesmo

● Sistema de votação

– Utilidade, consistência, exemplos, documentação, tutoriais em vídeo, e testes de unidade

– Top das classes mais votadas

● Prêmio de inovação

– Nomeação de classes inovadoras em cada mês

– Prêmios patrocinados para todos nomeados →

Page 8: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Custos de operação

Nada é de graça

● Custos de hospedagem– Capacidade de processamento

– Largura de banda

– Espaço em disco

● Custos de pessoal– Atendimento aos usuários

– Desenvolvimento de novas capacidades →

Page 9: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Redução de custos

Melhor software consome menos recursos

● Cache e mais cache– Turck MMCache para cache de PHP compilado

– Classe File Cache em PHP para cache de conteúdo

– Lighttpd: cache de acessos a conteúdo estático

● Compressão de conteúdo– mod_gzip reduz tamanho de páginas até 5 vezes

– Todos os navegadores modernos suportam

– Páginas carregam mais rapidamente →

Page 10: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Mais redução de custos

Aceleração com software automático

● Atendimento self-service– Robôs de resposta a e-mail de descadastramento

– Páginas com respostas a perguntas frequentes

● Ferramentas de geração de código– Metastorage gera código de acesso a objetos em

banco de dados definidos a partir de modelo

– Redução do tempo de escrita, teste e correção →

Page 11: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Cobertura de custos

Alternativas consideradas

1. Doações

2. Publicidade paga

3. Serviços pagos exclusivos para assinantes →

Page 12: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Doações

● Doação de hospedagem– Troca de hospedagem por publicidade

– Sites espelhos

● Doação de dinheiro– Não é garantido

– Não é recorrente →

Page 13: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Publicidade paga

● Pagamento por: exibição, clique ou tempo

● Receita cresce com a audiência

● Negociação direta é difícil à distância

● Intermediação por agências– Google AdSense, Tribalfusion, Fastclick, etc.

– Facilidade de alcance a grandes anunciantes

– Agências ficam com comissão elevada

– Pagamento por cheque, Paypal ou transferência →

Page 14: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Assinaturas pagas● Serviços exclusivos assinantes

– Navegação do site sem publicidade

– Acesso a fóruns de especialistas para resolver problemas difíceis

– Buscas e páginas favoritas personalizadas

– Diretório de profissionais disponíveis para prestar consultoria paga

● Adesão de uma pequena parte dos usuários

● Pagamento pelo Paypal ou PagSeguro

● Receita recorrente →

Page 15: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Riscos

Quem semeia e não segura pode colher amargura! (provérbio popular)

O que pode comprometer o projeto?

● Perda de informação por danos no servidor

● Perda de informação por invasão de crackers

● Número de acessos excessivos

● Ausência de simulação de problemas →

Page 16: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Cópias de segurança

● Cópias de segurança diárias dos bancos de dados e arquivos de conteúdo

– mysqldump + tar

● Replicação das cópias para outros servidores

– gnupg ou truecrypt + rsync

– Amazon S3 + Jungle Disk →

Page 17: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Auditoria de segurança

● Auditoria regular com ferramentas dedicadas

– nessus: testes de exploração de buracos de segurança conhecidos

● Desativação de serviços não usados e bloqueio das respectivas portas na firewall

● Eliminação de indícios do tipo e versão dos programas usados →

Page 18: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Vulnerabilidades comunsComo evitar?

● XSS: Cross-site Scripting– Conteúdo não confiável é servido por domínio

distinto: safe.phpclasses.net

● SQL Injection– Validação com a classe de formulários

– “Escape” de valores com Metabase →

● CSRF: Cross-site Request Forgery– Plug-in “secure submit” da classe de formulários

Page 19: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Limitação de acessos● Redirecionamento de usuários para espelhos

● Verificação CAPTCHA para parar robôs

● lighttpd: servidor para conteúdo estático

● Limitação dos processos do Apache

● mod_throttle: limitação de acessos simultâneos

● mod_fastcgi: balanceamento de carga usando mais computadores servidores

● Uso de filas para retardar tarefas pesadas →

Page 20: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Curiosidades● Linhas de código: ~135.000 em PHP (4.6MB)● Cadastros: ~540.000 (~10.300 novos por mês)● Autores: ~1.800 contribuiram ~3.600 componentes● Consumo de banda: ~200GB por mês● Cache de conteúdo: ~184.000 arquivos (1.5GB)● Servidor: dedicado com Pentium 4 HT 3.2GHz 1GB● Sistema operacional: Linux SuSE 9.2● Discos: 18GB SCSI com controlador RAID● Base de dados: MySQL 4 em partição dedicada 2.7GB● Maior tabela: 5.9 milhões de registros● Servidor e-mail: qmail ~2 milhões de e-mails/mês →

Page 21: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Futuro● Mais serviços pagos para assinantes

● Reclassificação de classes em sub-categorias

● Sincronização de classes a partir de repositórios CVS ou Subversion

● Canais PEAR

● Concurso de novo design para o site

● Divisão de lucros com os melhores autores

● O que mais os usuários sugerirem →

Page 22: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Perguntas?

● Manuel Lemos

[email protected]

● Repositório PHPClasses

http://www.phpclasses.org/

Page 23: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Conclusão

Lembrem-se sempre:

Cooperar é melhor que competir

Abracem a comunidade com vontade, que a comunidade vos abraçará muito mais

Obrigado pela atenção

Page 24: PHP Classes - Desenvolvimento de sites de Web 2 0 em PHP para grandes audiências

Referências● Classe File Cache

http://www.phpclasses.org/filecache

● Classe Forms generation and validationhttp://www.phpclasses.org/formsgeneration

● Metabasehttp://www.phpclasses.org/metabase

● Metastoragehttp://www.metastorage.net/

● Google AdSensehttps://www.google.com/adsense/

● Tribalfusionhttp://www.tribalfusion.com/

● Fastclickhttp://www.fastclick.com/

● Paypalhttps://www.paypal.com/

● PagSegurohttps://pagseguro.uol.com.br/

● Amazon S3http://aws.amazon.com/s3

● Jungle Diskhttp://www.jungledisk.com/

● Gnupghttp://www.gnupg.org/

● TrueCrypthttp://www.truecrypt.org/

● Rsynchttp://rsync.samba.org/

● Nessushttp://www.nessus.org/

● lighttpdhttp://www.lighttpd.net/

● Turck MMCachehttp://turck-mmcache.sourceforge.net/index_old.html

● mod_gziphttp://www.schroepl.net/projekte/mod_gzip/

● FastCGIhttp://www.fastcgi.com/