Folha de S.Paulo
 Ambiente, 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;         •   SVN, indo para Git;

•   MySQL 5.5;       •   PHPDoc com saída
                         automática;
•   MongoDB 2.0;
                     •   PHP Lint via pre-
•   Memcache;            commit.
•   CodeSniffer;
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.
Paywall
 Detalhes
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.
Paywall
 Proposta
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”;
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.
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.
Obrigado!
ariovaldo.carmona@gmail.com

       @aricarmona

Apresentação na PHP Conference Brasil 2012

  • 1.
    Folha de S.Paulo Ambiente, PHP e Paywall #phpconference
  • 2.
    Eu • Coordenador do núcleo de desenvolvimento; • Na Folha desde 2010 e mais alguns anos; • Trabalho e gosto de PHP; • @aricarmona.
  • 3.
  • 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.
  • 6.
  • 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.
  • 10.
  • 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.
  • 13.
  • 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.
  • 21.