Google App Engine, Python e Startups Rupy 2012 São José dos Campos Renzo Nuccitelli ([email protected])
Dec 18, 2014
Google App Engine, Python e Startups
Rupy 2012São José dos Campos
Renzo Nuccitelli ([email protected])
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
◦ [email protected]◦ [email protected]◦ Twitter: @nuccitec
Bio
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
Problema: App para receber fotos
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!
Solução: GAE
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
Primeira versão: Java
Revelação Virtual
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
Problemas: Cold Start, Spring
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
Alternativas
Pic Pro
Busca por frameworks◦ Django – funcionava parcialmente
Curva de aprendizado muito alta Solução utilizar o próprio webapp2 do
Do Java para o Python
Do Java para o Python: webapp2
Do Java para o Python: webapp2 Resolve o Cold Start
Webapp2: Roteamento
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
Zenwarch
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
E a transmissão de fotos?
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
Mas é fácil fazer um web app no GAE?
Startups de Educação◦ Khan◦ Udacity
QMagico◦ Onde agora sou Diretor de Tecnologia◦ Vamos reforçar a equipe no próximo ano ;)
Quem Usa GAE?
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
Prós
Curva de aprendizado Restrições visando escalabilidade
◦ 60 segundos de resposta de requisição Lock in Storage Caro BD Schemaless
Contras
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
Conclusões
Obrigado pela AtençãoPerguntas?
Renzo Nuccitelli ([email protected])