O documento discute o desenvolvimento de um paywall para o site Folha de S.Paulo. Ele detalha a estrutura de equipe de desenvolvimento da Folha, as tecnologias usadas como PHP, MySQL e MongoDB, e propõe uma solução para o paywall utilizando essas tecnologias juntamente com sessões no Memcache e integração com o sistema de autenticação e o portal UOL.
4. Folha
• Diversidade de projetos;
• Desenvolvimento interno;
• Estruturando equipe;
• Definindo ambiente;
• Foco Web (LAMP), com algumas variações;
• Contratando!
5. Equipe
• Cerca de 20 DEVs (LAMP);
• Iniciando em métodos ágeis;
• Contratação e treinamento;
• Atender projetos corporativos e públicos;
• Evoluindo tecnologias, ferramentas e
filosofia;
• Equipes estrategicamente focadas.
7. Ambiente
• PHP 5.3; • SVN, indo para Git;
• MySQL 5.5; • PHPDoc com saída
automática;
• MongoDB 2.0;
• PHP Lint via pre-
• Memcache; commit.
• CodeSniffer;
8. Ambiente
• Fórum, blog e wiki interno;
• Sandbox para cada DEV integrado ao
restante do ambiente;
• Evolução constante no toolkit interno;
• Incubadora de novas ideias e
ferramentas.
9. PHP
• PHP sendo utilizado em todos projetos,
independente da estratégia;
• Projetos internos, corporativos, frontend,
robôs, etc;
• Balanceamento de carga e ampliação/
expansão horizontal;
• Nosso gargalo normalmente está no banco de
dados.
11. Paywall
• Alguns detalhes e premissas:
• Prazo agressivo, cerca de 3 meses;
• Detalhes fechados durante codificação;
• Acesso poroso, 20 notícias para qualquer
usuário, até 40 para cadastrado e acima
disto apenas para assinantes;
• Alteração mínima no CMS e arquitetura
atual.
12. Paywall
• Mais detalhes:
• Utilizar as ferramentas disponíveis;
• Integração com UOL para assinantes do
conteúdo online;
• Suportar toda audiência do portal e dos
parceiros que utilizarem o sistema;
• Relatórios gerenciais detalhados para
acompanhamento do produto.
14. Paywall
• Proposta:
• Aplicativo inteiramente PHP;
• Evoluir o sistema de autenticação atual;
• Relatórios:
• ETL do MongoDB para o MySQL,
consolidando informações;
• Integração com outros sistemas.
15. Paywall
• Proposta:
• Sessão via Memcache;
• Plugin com Javascript e HTML:
• Camada simples e fácil de integrar a
qualquer página do portal;
• Facilmente “burlado”;
16. Paywall
1. Página carregada;
2. Requisição via JavaScript:
Envia URL e Referer
3. Retorno JSON ou JSONP:
{ paywall: on, status: ok, ... }
4. Popula objeto:
Folha.Paywall;
5. Continua o processamento e exibição de mensagens, com base no
objeto populado.
17. Paywall
• Proposta:
• Persistência dos dados com MongoDB:
• Sharding com 4 (ou mais) nós;
• Replica-Set para redundância;
• Apenas uma collection para
persistência.
• Integração com UOL, via OpenID.
18. Paywall
• Proposta:
• Administração:
• Facilidade para ligar/desligar tudo;
• Limites dos bloqueios são configuráveis;
• Áreas de bloqueio configuráveis (Regex);
• Possível liberar páginas específicas do
bloqueio. Exemplo: Furo de reportagem.
19. Paywall
• Equipe:
• Cerca de 4 DEVs (sendo 1 líder);
• 1 Webmaster;
• 1 SysAdmin;
• 1 Analista de projetos.
20. Paywall
• Atualmente:
• Aprendizado sobre o comportamento dos
usuários;
• Cerca de 600 conexões simultâneas.