o GAE é uma infraestrutura capaz de hospedar um aplicativo usado por milhões de usuários ativos?


9

Gostaria de saber com as restrições do GAE listadas abaixo. É possível criar um ótimo aplicativo social (como o Facebook) hospedando esse aplicativo no GAE?

Em outras palavras, o GAE é uma infraestrutura capaz de hospedar um aplicativo usado por 600 milhões de usuários ativos?

Restrições que eu descobri em alguns fóruns / blogs (por favor, sinta-se à vontade para adicionar à lista se encontrar algo faltando):

  1. Solicitação / resposta HTTP

    • Tamanho máximo da solicitação: 32 MB
    • Tamanho máximo de resposta: 32 MB
    • Todas as solicitações devem responder dentro de 30 segundos, caso contrário, o GAE lançará DeadlineExceededException
    • Cada tarefa cron deve ser executada em 10 minutos
    • Trabalhos Cron não podem utilizar a redução de mapa
    • Todo GET ou POST para outro site é abortado após 5 segundos. Você pode configurá-lo para esperar até 10 segundos no máximo. (servidores intermediários seriam necessários para trabalhar com o Twitter e o Facebook várias vezes)
    • O cliente não pode se conectar ao GAE por FTP (apenas HTTP e HTTPS).
    • Não há https para domínios personalizados. Apenas para domínios your-app-id.appspot.com.
    • Se você receber um fluxo de usuários, receberá um erro "acima da cota"
  2. Base de dados

    • O comportamento do banco de dados não é o mesmo no desenvolvimento local que nos servidores reais.
    • GQL. Nada mais.
    • Nenhuma consulta pode recuperar mais de 1000 registros (é muito ruim se você deseja permitir que seu cliente tenha um botão "clique para ficar offline agora")
    • Se você precisar de acesso linear a uma quantidade enorme de registros para executar uma operação, estará sem sorte (os sistemas do Google estão agrupados em massa)
    • O tamanho máximo dos valores de Memcache é 1 MB.
    • Não é possível fazer uma pesquisa de texto simples
    • Você não pode participar de duas mesas.
    • Lento (você precisa ler sobre como separar tabelas usando herança para poder pesquisar em uma tabela, obter a chave e obter seu pai para evitar o desempenho da desserialização)
    • Exceção de tempo de execução "Muitos índices"
    • Uma entidade pode ter no máximo 5000 valores de propriedades em um índice
    • Os nomes-chave do formulário * (início e término com dois sublinhados) são reservados e não devem ser usados ​​pelo aplicativo.
    • Os nomes das chaves são limitados a 500 bytes (acho que codificado em UTF-8)
  3. Língua

    • python ou java ou Go (ou idiomas que usam a JVM como Groovy, Scala e outros)
  4. Problemas do servidor

    • Nenhum IP estático (pode haver problemas de limitação e cota ao chamar APIs de terceiros)
    • Cada aplicativo é limitado a 3000 arquivos
    • Nenhum controle do SO ou hardware executando o aplicativo Web

Pode? Quem sabe. Deveria? Não.
ceejayoz

11
@ceejayoz pls explica por que não deveria? não deveria ser escalável?

3
por que os downvotes pessoas

Eu acho que o Amazon EC2 seria mais adequado para esse tipo de aplicativos.
Mahmoud Hossam

Hmm sobre você ponto 3, você pode usar outros idiomas, sem tradução, i languajes significa que usa a JVM como Groovy, Scala e outros
yeradis

Respostas:


28

Acho que o que me incomoda nessa questão é que você a formulou e carregou com "fatos" na tentativa de obter um não definitivo.

A verdade é que você pode desenvolver um aplicativo do Google App Engine que replique os recursos do Facebook, Twitter ou Tumblr. E, supondo que o aplicativo fosse bem escrito, ele seria dimensionado para suportar centenas de milhões de usuários. O principal motivo pelo qual você não gostaria (o que não parece ser uma consideração para você) é o custo da execução de um serviço desse tamanho no App Engine.

Além disso, não consigo ver como alguma das restrições listadas o impediria de desenvolver um aplicativo desse tipo.

  1. Solicitação / resposta HTTP

    • Tamanho máximo da solicitação: 10 MB - incorreto, aumentado para 32 MB.
    • Tamanho máximo de resposta: 10 MB - incorreto, aumentado para 32 MB.

    - se você estiver desenvolvendo um aplicativo social que frequentemente precisa entregar páginas maiores que 10 MB, provavelmente está fazendo algo errado. Além disso, se você precisar fornecer conteúdo maior que 32 MB, poderá usar o blobstore para arquivos de até 2 GB.

    • Você não pode acessar o sistema de arquivos. (esqueça de salvar envios para o sistema de arquivos) - errado. Você pode ler do sistema de arquivos local e fazer upload e ler / gravar arquivos no blobstore.

    - Não há como o Facebook, Twitter ou Tumblr apenas receber uploads do usuário e copiá-los para uma pasta. Não é um problema.

    • Todas as solicitações devem responder dentro de 10 minutos, caso contrário, o GAE lançará DeadlineExceededException - errado. São 30 segundos, na verdade.

    - Se você precisar de mais de 30 segundos para entregar resultados à solicitação de um usuário, provavelmente está fazendo algo errado.

    • Cada tarefa cron deve ser executada em 30 segundos - errado, são 10 minutos.

    - Se você não pode dividir uma tarefa longa em partes de 10 minutos, A: provavelmente está fazendo errado e B: agora você pode mover essa tarefa para uma instância de Back-end, que não tem limite de tempo para solicitações.

    • Trabalhos Cron não podem utilizar a redução de mapa - nunca a redução de mapa usada, mas acho que isso requer uma citação.

    • Todo GET ou POST para outro site é abortado após 5 segundos. Você pode configurá-lo para esperar até 10 segundos no máximo. (servidores intermediários seriam necessários para trabalhar com o Twitter e o Facebook várias vezes) - Verdade.

    - Se uma solicitação voltada ao usuário para uma API externa estiver demorando mais de 10 segundos, provavelmente é uma boa ideia pedir ao usuário para tentar novamente de qualquer maneira. Se não for uma solicitação voltada ao usuário, você poderá tentar novamente a tarefa automaticamente até que a API responda.

    • O cliente não pode se conectar ao GAE por FTP (apenas HTTP e HTTPS). - Verdade

    -- Por que isso é um problema? Você acha que alguma empresa de grande escala implementa alterações via FTP?

    • Não há https para domínios personalizados. Apenas para domínios your-app-id.appspot.com. - Verdade.

    - Mas está no roteiro.

    • Se você receber um fluxo de usuários, receberá um erro de "excesso de cota" - parcialmente verdadeiro.

    - Se você planejar corretamente seu aplicativo, nunca verá um erro de excesso de cota. O site Royal Wedding foi hospedado no App Engine e recebeu 32.000 solicitações por segundo. Sem erros de excesso de cota. Além disso, já viu a baleia falhar no Twitter ou o erro de excesso de capacidade no Tumblr? Esse é essencialmente o erro de excesso de cota.

  2. Base de dados

    • O comportamento do banco de dados não é o mesmo no desenvolvimento local que nos servidores reais. - Falso

    - Se você quer dizer que executar o armazenamento de dados no laptop é mais lento do que executá-lo no cluster do App Engine, é verdade, caso contrário, não é verdade.

    • GQL. Nada mais. - Falso

    - A maioria dos desenvolvedores usa filtros db para consultar o armazenamento de dados. Além disso, você também poderia dizer que o MySQL permite "SQL. Nada mais".

    • Nenhuma consulta pode recuperar mais de 1000 registros (é muito ruim se você deseja permitir que seu cliente tenha um botão "clique para ficar offline agora") - Falso.

    - O limite de 1000 registros foi levantado há muito tempo. Além disso, mostre-me qualquer página voltada para o usuário no Facebook, Twitter ou Tumblr que exija mais de 1000 registros para renderizar.

    • Se você precisar de acesso linear a uma quantidade enorme de registros para executar uma operação, estará sem sorte (os sistemas do Google estão agrupados em massa)

    - Eu nem tenho certeza do que você está recebendo aqui. A maioria das pessoas considera a velocidade do enorme cluster do Google como uma enorme vantagem do sistema.

    • O tamanho máximo dos valores de Memcache é 10 MB. - Na verdade, é 1 MB por entrada do memcache, o mesmo que qualquer outra implementação do memcache.

    • Não é possível fazer a pesquisa de texto simples - Verdadeiro.

    - É um recurso que está no convés. A maioria dos sites grandes não faz sua própria indexação de pesquisa de texto.

    • Você não pode participar de 2 mesas. - Verdade.

    - Os desenvolvedores do App Engine precisam ajustar seus pensamentos de uma única consulta SQL de várias junções em massa para várias consultas individuais menores ou desnormalizar os dados para que as junções não sejam necessárias.

    • Lento (você precisa ler sobre como separar tabelas usando herança para poder pesquisar em uma tabela, obter a chave e obter seu pai para evitar o desempenho da desserialização) - ???

    - tradução / citação necessária.

    • Exceção de tempo de execução "Muitos índices" - True

    - Há um limite para o número de índices em um único aplicativo. Só vi aplicações de pesquisa acadêmica chegarem lá.

    • Uma entidade pode ter no máximo 5000 valores de propriedades em um índice - True

    - Portanto, se alguém tiver mais de 5000 amigos, precisará de duas entidades no grupo de amigos.

    • Os nomes-chave do formulário __*__(início e fim com dois sublinhados) são reservados e não devem ser usados ​​pelo aplicativo. - Verdade

    -- Mas e daí?

    • Os nomes das chaves estão limitados a 500 bytes (acho que codificado em UTF-8) - True

    - Novamente, e daí? Os nomes-chave não são para armazenar novelas, são para identificar exclusivamente uma entidade.

  3. Língua

    • python ou java ou Go (qualquer outra coisa teria que ser traduzida para esses idiomas) - Meia verdade

    - Na verdade, você também pode executar qualquer linguagem que seja executada na JVM, incluindo PHP e JRuby. No entanto, não sei por que isso é um problema, Python e Java são duas linguagens poderosas, com muitas ferramentas disponíveis, tutoriais e programadores experientes.

  4. Problemas do servidor

    • Sem IP estático (problemas de limitação e cota ao chamar APIs de terceiros) - parcialmente verdadeiro

    - A maioria das APIs de terceiros conhece o App Engine e / ou tem um relacionamento com o Google. Algumas vezes o Twitter bloqueou acidentalmente o App Engine e ele é corrigido em algumas horas.

    • Cada aplicativo é limitado a 3000 arquivos - Meia verdade

    - Se você realmente precisar de mais de 3000 arquivos de código para o seu aplicativo da Web, poderá usar as importações de zip (além disso, você pode estar fazendo errado).

    • Nenhum controle do SO ou hardware executando o aplicativo Web - True

    - O App Engine é uma plataforma como serviço . Não é preciso se preocupar com a manutenção do sistema operacional ou do hardware. Essa é a principal vantagem do App Engine, não uma limitação.


Concordo totalmente com todos os seus pontos. +1
Luca Matteis

thx para a entrada. Eu editei a pergunta de acordo. btw qual é o novo limite de registros se o limite de 1000 registros for aumentado?
Pacerier 21/05

Concorde com todos os pontos, exceto o 2.1; Db local bastante é uma porcaria.
Systempuntoout 24/05

14

Não, o Google App Engine não é apropriado para um aplicativo com 600 milhões de usuários ativos.

Realisticamente, os aplicativos desse tamanho são executados em infraestrutura altamente personalizada a partir de seus próprios datacenters. Provavelmente, é possível hospedar esse aplicativo com o Google, mas você trabalharia diretamente com a equipe de vendas para projetar uma solução; há muito tempo as restrições da caixa de areia listadas acima seriam irrelevantes.

Se você está apenas começando, é bobagem projetar em torno da suposição de que você se tornará tão popular quanto o Facebook. Qualquer aplicativo que obtém esse tamanho grande o faz de maneira incremental e com recoforização constante. Primeiro, preocupe-se em projetar recursos que atrairão 600 milhões de usuários. Redesenhar a implementação para suportar uma base crescente de usuários é um problema trivial em comparação.


3
"aplicativos deste tamanho" - você usa o plural, existe mais de um? ;-)
Steve Jessop 17/05

Não tenho a suposição de que meu aplicativo se tornará tão popular quanto o Facebook, é claro. De fato, essa suposição, ou a falta dela, não tem nenhuma relevância para a minha pergunta.

11
se você tiver 600 milhões de usuários, seria o alvo de uma aquisição do Google ; portanto, se você pode executar no AppEngine é irrelevante.
Dean Harding

11
@Dean Harding Se você pode executar no AppEngine é altamente relevante, mesmo que você seja o alvo de uma aquisição do Google
Pacerier

3

Penso que os pontos dessa FAQ se enquadram em algumas áreas principais.

Primeiro de tudo, há os pontos que são realmente para o benefício da escalabilidade, e não para o prejuízo. Em um aplicativo altamente escalável, uma das coisas pelas quais você se esforça é garantir que todas as solicitações sejam amplamente independentes das demais e também que elas tenham o mesmo "tamanho" (em termos de uso da CPU, memória, rede, etc.).

Dessa forma, as solicitações podem ser facilmente distribuídas entre os nós do cluster sem se preocupar com um grupo de solicitações "grandes" passando fome por solicitações menores no mesmo nó. Isso mantém sua infraestrutura simples em termos de manutenção, desempenho e confiabilidade.

Então, isso abrange coisas como:

  • Tamanho máximo de solicitação / resposta
  • Solicitar tempos de resposta
  • Limites de tempo de resposta de solicitação externa
  • Tamanhos máximos do Memcache (na verdade, na compilação padrão do memcache, o tamanho máximo do valor é de 1 MB, portanto, obviamente, o Google está executando um binário personalizado que aumenta esse limite em 10 vezes)
  • Tamanhos máximos de resposta do banco de dados (ou seja, o limite de 1.000 linhas)
  • etc

A segunda categoria são coisas simplesmente desatualizadas:

Agora, seria bom se o Google abrisse sua infraestrutura para permitir que tarefas cron utilizassem o Redução de mapa e permitisse executar consultas em todo o conjunto de dados. Porém, quando você chegar a uma fração significativa de 600 milhões de usuários, você já será um grande cliente do Google e terá mais opções do que as disponíveis no App Engine.


0

Se você tiver uma idéia que atrairá até 100, quanto mais 600 milhões de usuários, terá qualquer capital de risco e qualquer equipe de tecnologia para desenvolver e executá-lo em qualquer infraestrutura. Além disso, você também desejará proteger sua propriedade intelectual, o que o GAE não fornecerá porque o Google deseja ter acesso ao código-fonte de todos os aplicativos do GAE (você não pode realmente proteger o código Python e Java).
O GAE é adequado para empresas que desejam se livrar de seus custos de infraestrutura de TI e não precisam proteger o código IP, mas apenas seus dados.


você vai ter qualquer capital de risco e qualquer equipe de tecnologia para desenvolver e executá-lo em qualquer infra-estrutura não significa que você deve
Pacerier
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.