Folha de S.PauloAmbiente, PHP e Paywall
#phpconference
Eu
• Coordenador do núcleo de desenvolvimento;
• Na Folha desde 2010 e mais alguns anos;
• Trabalho e gosto de PHP;
• @aricarmona.
Folha e Equipe
Folha• Diversidade de projetos;
• Desenvolvimento interno;
• Estruturando equipe;
• Definindo ambiente;
• Foco Web (LAMP), com algumas variações;
• Contratando!
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.
Ambiente e PHP
Ambiente• PHP 5.3;
• MySQL 5.5;
• MongoDB 2.0;
• Memcache;
• CodeSniffer;
• SVN, indo para Git;
• PHPDoc com saída automática;
• PHP Lint via pre-commit.
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.
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.
PaywallDetalhes
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.
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.
PaywallProposta
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.
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”;
Paywall1. Página carregada;
2. Requisição via JavaScript:
3. Retorno JSON ou JSONP:
4. Popula objeto:
Folha.Paywall;
5. Continua o processamento e exibição de mensagens, com base no objeto populado.
Envia URL e Referer
{ paywall: on, status: ok, ... }
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.
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.
Paywall
• Equipe:
• Cerca de 4 DEVs (sendo 1 líder);
• 1 Webmaster;
• 1 SysAdmin;
• 1 Analista de projetos.
Paywall• Atualmente:
• Aprendizado sobre o comportamento dos usuários;
• Cerca de 600 conexões simultâneas.