Rupy 2012
                  São José dos Campos




Renzo Nuccitelli (renzo@nuccitec.com.br)
   Renzo Nuccitelli
   Formado no ITA em 2008
   Professor na Fatec-SJC
   Diretor de Tecnologia do Qmagico
   2,5 anos de experiência com GAE
   Contatos
    ◦ renzo@nuccitec.com.br
    ◦ renzo.n@gmail.com
    ◦ Twitter: @nuccitec
   Sogro com laboratório fotográfico
   Receber fotos de cliente pela internet
   Desafio pessoal de fazer um site
   Equipe disponível: “Euquipe”
   Tempo disponível: 2 a 3 horas por dia mais
    fds
   Experiencia com web: apenas backend Java e
    Front end Adobe Flex
   Para os não íntimos: GAE – Google App
    Engine
   Hora do almoço na empresa
   Apresentação do GAE pelo Reginaldo
   5 minutos para fazer um Hello World em Java,
    incluindo montar ambiente e fazer o deploy!
   Desenvolvimento em 3 meses
   Não aceitava vários frameworks Padrão, como
    Hibernate
   Banco de Dados NOSQL (Big Table)
   60 segundos para requisição ser atendida (30
    segundos nessa época)
   Cold Start
   Injeção de Dependência -> Reflection ->
    Performance limitada
   Projeto Java carrega todas as classes
   Conseqüência: tempo de startup aumenta
    proporcionalmente ao código (13 segundos
    para o RV, que era pequeno)
   Conclusão: 60 segundos para atender
    requisição + Cold Start crescente = uma hora
    sua aplicação não liga
   Ir para AWS (“lock in” do GAE)
   Usar Objectify em vez de JDO
   Não usar IoC: JFERA para comunicação via
    AMF (http://jfera.nuccitec.com.br) em vez de
    Spring ou Guice: 5 segundos de cold start
   Carregar classes sobre demanda
   Ou...
   Testar o Python
   Busca por frameworks
    ◦ Django – funcionava parcialmente
   Curva de aprendizado muito alta
   Solução utilizar o próprio webapp2 do Google
   Resolve o Cold Start
   Convention over Configuration
   PHP
   Java: VRaptor da Caelum
   Fazer um rest por convenção
   to_handler -> acha função dado o path
   to_path -> calcula o path dada a função
   https://bitbucket.org/renzon/zenwarch
   Zenwarch - Zen Web Architecture
   Maior dificuldade de Eng. de Software: Criar
    nomes =D
   313.237 fotos transmitidas de 03/2011 a
    04/2012 no RV por menos de $35
   182.099 fotos transmitidas nos últimos 8
    meses no Pic Pro por menos de $ 15
   3 semestres usando o gae + Zenwarch na
    Fatec
   Alunos devem fazer um projeto
    pequeno, mas completo
   Apenas um aluno de 30 repetiu por não
    conseguir fazer a tarefa...
   ... Fez em PHP no primeiro semestre
   Startups de Educação
    ◦ Khan
    ◦ Udacity
   QMagico
    ◦ Onde agora sou Diretor de Tecnologia
    ◦ Vamos reforçar a equipe no próximo ano ;)
   Cota Grátis
   Diferentes versões do site rodando ao mesmo
    tempo
   Documentação completa e centralizada
   Escala sozinho, sem configuração
   Simples instalação de ambiente
   Deploy mais que simples
   BD Schemaless
   Curva de aprendizado
   Restrições visando escalabilidade
    ◦ 60 segundos de resposta de requisição
   Lock in
   Storage Caro
   BD Schemaless
   Foco em desenv – Fácil de de instalar e fazer
    deploy
   Baixo custo – cota grátis
   Ruim pelo lock in
   Curva de aprendizado
   Zenwarch pode ser usado em outros
    contextos, como Django
Obrigado pela Atenção
                           Perguntas?




Renzo Nuccitelli (renzo@nuccitec.com.br)

Google App Engine, Python e Startups - Rupy 2012

  • 1.
    Rupy 2012 São José dos Campos Renzo Nuccitelli (renzo@nuccitec.com.br)
  • 2.
    Renzo Nuccitelli  Formado no ITA em 2008  Professor na Fatec-SJC  Diretor de Tecnologia do Qmagico  2,5 anos de experiência com GAE  Contatos ◦ renzo@nuccitec.com.br ◦ renzo.n@gmail.com ◦ Twitter: @nuccitec
  • 3.
    Sogro com laboratório fotográfico  Receber fotos de cliente pela internet  Desafio pessoal de fazer um site  Equipe disponível: “Euquipe”  Tempo disponível: 2 a 3 horas por dia mais fds  Experiencia com web: apenas backend Java e Front end Adobe Flex
  • 4.
    Para os não íntimos: GAE – Google App Engine  Hora do almoço na empresa  Apresentação do GAE pelo Reginaldo  5 minutos para fazer um Hello World em Java, incluindo montar ambiente e fazer o deploy!
  • 5.
    Desenvolvimento em 3 meses  Não aceitava vários frameworks Padrão, como Hibernate  Banco de Dados NOSQL (Big Table)  60 segundos para requisição ser atendida (30 segundos nessa época)  Cold Start
  • 7.
    Injeção de Dependência -> Reflection -> Performance limitada  Projeto Java carrega todas as classes  Conseqüência: tempo de startup aumenta proporcionalmente ao código (13 segundos para o RV, que era pequeno)  Conclusão: 60 segundos para atender requisição + Cold Start crescente = uma hora sua aplicação não liga
  • 8.
    Ir para AWS (“lock in” do GAE)  Usar Objectify em vez de JDO  Não usar IoC: JFERA para comunicação via AMF (http://jfera.nuccitec.com.br) em vez de Spring ou Guice: 5 segundos de cold start  Carregar classes sobre demanda  Ou...  Testar o Python
  • 10.
    Busca por frameworks ◦ Django – funcionava parcialmente  Curva de aprendizado muito alta  Solução utilizar o próprio webapp2 do Google
  • 12.
    Resolve o Cold Start
  • 14.
    Convention over Configuration  PHP  Java: VRaptor da Caelum  Fazer um rest por convenção  to_handler -> acha função dado o path  to_path -> calcula o path dada a função  https://bitbucket.org/renzon/zenwarch  Zenwarch - Zen Web Architecture  Maior dificuldade de Eng. de Software: Criar nomes =D
  • 15.
    313.237 fotos transmitidas de 03/2011 a 04/2012 no RV por menos de $35  182.099 fotos transmitidas nos últimos 8 meses no Pic Pro por menos de $ 15
  • 16.
    3 semestres usando o gae + Zenwarch na Fatec  Alunos devem fazer um projeto pequeno, mas completo  Apenas um aluno de 30 repetiu por não conseguir fazer a tarefa...  ... Fez em PHP no primeiro semestre
  • 17.
    Startups de Educação ◦ Khan ◦ Udacity  QMagico ◦ Onde agora sou Diretor de Tecnologia ◦ Vamos reforçar a equipe no próximo ano ;)
  • 18.
    Cota Grátis  Diferentes versões do site rodando ao mesmo tempo  Documentação completa e centralizada  Escala sozinho, sem configuração  Simples instalação de ambiente  Deploy mais que simples  BD Schemaless
  • 19.
    Curva de aprendizado  Restrições visando escalabilidade ◦ 60 segundos de resposta de requisição  Lock in  Storage Caro  BD Schemaless
  • 20.
    Foco em desenv – Fácil de de instalar e fazer deploy  Baixo custo – cota grátis  Ruim pelo lock in  Curva de aprendizado  Zenwarch pode ser usado em outros contextos, como Django
  • 21.
    Obrigado pela Atenção Perguntas? Renzo Nuccitelli (renzo@nuccitec.com.br)