Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Quem disse que elePHPante não voa?

Quem disse que elePHPante não voa?

Serão apresentadas algumas práticas que tornam sua aplicação PHP horizontalmente escalável. Além de mostrar como o Google App Engine pode lhe ajudar nessa tarefa.

Jonata Weber

October 03, 2015
Tweet

More Decks by Jonata Weber

Other Decks in Programming

Transcript

  1. QUEM DISSE QUE
    ELEPHPANTE NÃO VOA?

    View Slide

  2. OLÁ!!
    @JonataWeber

    View Slide

  3. Contexto
    Let's start :)
    1

    View Slide

  4. STARTUP
    Grupo de pessoas à procura de um modelo de negócios repetível e
    escalável, trabalhando em condições de extrema incerteza

    View Slide

  5. CICLO DA STARTUP
    Medir Aprender
    Construir

    View Slide

  6. COMO ENTREGAR PARA MILHÕES DE USUÁRIOS?

    View Slide

  7. PRIMEIRO "DATACENTER" DO
    GOOGLE

    View Slide

  8. BackHub 500 ERROR
    BackRub is a “web crawler” which is designed to traverse the
    web.
    Currently we are developing techniques to improve web search
    engines. We will make various services available as soon as
    possible.
    Sorry, many services are unavailable due to a local network
    faliure [sic] beyond our control. We are working to fix the
    problem and hope to be back up soon. 12/4/97

    View Slide

  9. QUALIDADES DE UM PRODUTO
    ◉ Tempo de Resposta <= 200ms
    ◉ Disponibilidade >= 99%

    View Slide

  10. Por que escalabilidade
    é tão difícil?

    View Slide

  11. View Slide

  12. VOCÊ PRECISA DE UM
    PLANO.

    View Slide

  13. Sistema escalável
    Entendendo o conceito de escalabilidade
    2

    View Slide


  14. Capacidade de manipular uma
    porção crescente de trabalho de
    forma uniforme, ou estar preparado
    para crescer.

    View Slide

  15. ESCALABILIDADE VS PERFORMANCE

    View Slide

  16. RECURSOS DISPONÍVEIS
    CPU Memória
    I/O Network

    View Slide

  17. ESCALABILIDADE VERTICAL

    View Slide

  18. ESCALABILIDADE HORIZONTAL

    View Slide

  19. ESCALABILIDADE HORIZONTAL: DESAFIOS

    View Slide

  20. APLICAÇÃO WEB PADRÃO
    ◉ Sessões de Usuário
    ◉ Banco de Dados
    ◉ Upload de Arquivos

    View Slide

  21. DESACOPLANDO: PASSO #1
    ◉ Sessões de Usuário
    ◉ Upload de Arquivos
    10.0.0.2

    View Slide

  22. DESACOPLANDO: PASSO #2
    Upload de Arquivos
    10.0.0.2:3306
    10.0.0.4
    Sessões de Usuário
    (Memcached/Redis)

    View Slide

  23. DESACOPLANDO: PASSO #3
    Upload de Arquivos
    10.0.0.2:3306
    10.0.0.4
    Sessões de Usuário
    (Memcached/Redis)
    10.0.0.3:/users/files
    Arquivos de Usuários
    (GlusterFS)

    View Slide

  24. AGORA, O CÉU É O LIMITE :)
    Upload de Arquivos
    10.0.0.2:3306
    10.0.0.4
    Sessões de Usuário
    10.0.0.3:/users/files

    View Slide

  25. Pegando um atalho
    Sem sofrimento!
    3

    View Slide

  26. CLOUD COMPUTING

    View Slide

  27. CLOUD STACK

    View Slide

  28. SEPARADO POR RESPONSABILIDADE

    View Slide

  29. PaaS
    Plataform as a Service

    View Slide

  30. PLATAFORMA COMO SERVIÇO: VANTAGENS
    ◉ Rapidez no lançamento
    ◉ Foco na aplicação
    ◉ Redução de custos
    ◉ Melhores tecnologias
    ◉ Atualizações contantes
    ◉ Escala facilmente

    View Slide

  31. View Slide

  32. GOOGLE CLOUD PLATAFORM
    http://cloud.google.com/
    Place your screenshot here

    View Slide

  33. PRODUTOS DO GOOGLE CLOUD

    View Slide

  34. Hello World
    Primeiros passos no Google App Engine
    4

    View Slide

  35. Passo #1
    INSTALE O SDK DO GOOGLE APP ENGINE

    View Slide

  36. Passo #2
    ESCREVA SEU CÓDIGO

    View Slide

  37. application: hello-phpeste
    version: 1
    runtime: php55
    api_version: 1
    handlers:
    - url: /.*
    script: helloworld.php
    app.yaml
    echo 'Hello, world!';
    helloworld.php

    View Slide

  38. Passo #3
    FAÇA DEPLOY
    $ appcfg.py update app.yaml

    View Slide

  39. session_start();
    $_SESSION['foo'] = 'bar';
    print $_SESSION['foo'];
    SESSÕES DE USUÁRIO

    View Slide

  40. file_put_contents('gs://phpeste/hello.txt',
    'Hello');
    print file_get_contents('gs://phpeste/hello.txt');
    FILESYSTEM

    View Slide

  41. $db = new pdo('mysql:unix_socket=/cloudsql/hello-phpeste:db1',
    'root', // username
    '' // password
    );
    DATABASE

    View Slide

  42. Baixe aqui os códigos dessa apresentação
    https://github.com/jonataa/hello-phpeste

    View Slide

  43. Obrigado!
    Perguntas?
    https://joind.in/14990
    @jonataweber / [email protected]

    View Slide

  44. Bônus

    View Slide

  45. http://locust.io/

    View Slide