SlideShare uma empresa Scribd logo
1 de 21
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)

Mais conteúdo relacionado

Mais procurados

[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...Loiane Groner
 
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsersGustavo Bellini Bigardi
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webRodrigo Branas
 
[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programaLoiane Groner
 
Java - Learn Once Use Anywhere
Java - Learn Once Use AnywhereJava - Learn Once Use Anywhere
Java - Learn Once Use AnywhereSerge Rehem
 
Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Arthur Furlan
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Renato Groff
 
AMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasAMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasDan Vitoriano
 
Vraptor Overview
Vraptor OverviewVraptor Overview
Vraptor Overviewdtelaroli
 
Spring roo - Criando aplicações Java Web em poucos minutos
Spring roo - Criando aplicações Java Web em poucos minutosSpring roo - Criando aplicações Java Web em poucos minutos
Spring roo - Criando aplicações Java Web em poucos minutosledsifes
 

Mais procurados (20)

[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
[Curso Java Básico] Aula 02: Instalando o Java no Windows (Windows XP, Window...
 
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
.NET Conf 2018 - Campinas - Blazor: Utilizando C# em browsers
 
Testes Automatizados
Testes AutomatizadosTestes Automatizados
Testes Automatizados
 
Conhecendo vuejs
Conhecendo vuejsConhecendo vuejs
Conhecendo vuejs
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações web
 
JavaScript Moderno
JavaScript ModernoJavaScript Moderno
JavaScript Moderno
 
[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa[Curso Java Básico] Aula 06: Passando argumentos para o programa
[Curso Java Básico] Aula 06: Passando argumentos para o programa
 
Java - Learn Once Use Anywhere
Java - Learn Once Use AnywhereJava - Learn Once Use Anywhere
Java - Learn Once Use Anywhere
 
Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
A saga do desenvolvedor java
A saga do desenvolvedor javaA saga do desenvolvedor java
A saga do desenvolvedor java
 
AMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasAMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps Modernas
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Vraptor Overview
Vraptor OverviewVraptor Overview
Vraptor Overview
 
Spring roo - Criando aplicações Java Web em poucos minutos
Spring roo - Criando aplicações Java Web em poucos minutosSpring roo - Criando aplicações Java Web em poucos minutos
Spring roo - Criando aplicações Java Web em poucos minutos
 
É possível desenvolver com Windows
É possível desenvolver com WindowsÉ possível desenvolver com Windows
É possível desenvolver com Windows
 
Vraptor 3
Vraptor 3Vraptor 3
Vraptor 3
 
Automatizando a entrega de software
Automatizando a entrega de softwareAutomatizando a entrega de software
Automatizando a entrega de software
 
C# capturando e salvando imagens da web cam
C#   capturando e salvando imagens da web camC#   capturando e salvando imagens da web cam
C# capturando e salvando imagens da web cam
 

Destaque

Confissões de um arquiteto de software
Confissões de um arquiteto de softwareConfissões de um arquiteto de software
Confissões de um arquiteto de softwareRenzo Nuccitelli
 
Terço das Sete Dores de Nossa Senhora
Terço das Sete Dores de Nossa SenhoraTerço das Sete Dores de Nossa Senhora
Terço das Sete Dores de Nossa SenhoraGiulia d'Amore
 
Angular js desenvolvimento de frontend zen - python nordeste
Angular js   desenvolvimento de frontend zen - python nordesteAngular js   desenvolvimento de frontend zen - python nordeste
Angular js desenvolvimento de frontend zen - python nordesteRenzo Nuccitelli
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Renzo Nuccitelli
 

Destaque (6)

Confissões de um arquiteto de software
Confissões de um arquiteto de softwareConfissões de um arquiteto de software
Confissões de um arquiteto de software
 
Terço das Sete Dores de Nossa Senhora
Terço das Sete Dores de Nossa SenhoraTerço das Sete Dores de Nossa Senhora
Terço das Sete Dores de Nossa Senhora
 
Pycon Brasil
Pycon BrasilPycon Brasil
Pycon Brasil
 
Angular js desenvolvimento de frontend zen - python nordeste
Angular js   desenvolvimento de frontend zen - python nordesteAngular js   desenvolvimento de frontend zen - python nordeste
Angular js desenvolvimento de frontend zen - python nordeste
 
Testes automáticos
Testes automáticosTestes automáticos
Testes automáticos
 
Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE Python, Google App Engine e Webapp-CE
Python, Google App Engine e Webapp-CE
 

Semelhante a Google App Engine, Python e Startups - Rupy 2012

O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloIsmael
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeWende Mendes
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosFelipe Gadelha Ruoso
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeGlobalcode
 
Rubysoc final RubyConfBR
Rubysoc final RubyConfBRRubysoc final RubyConfBR
Rubysoc final RubyConfBRtchandy
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
Angular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativoAngular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativoGDGFoz
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigitalJust Digital
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
Lições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviçosLições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviçosFábio José Moraes
 
Guião demotécnica
Guião demotécnicaGuião demotécnica
Guião demotécnicaSilvio Dias
 
Guiao demotecnica
Guiao demotecnicaGuiao demotecnica
Guiao demotecnicaSilvio Dias
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Agile Brazil 2014 - Visual Regression Testing com PhantomCSS
Agile Brazil 2014 - Visual Regression Testing com PhantomCSSAgile Brazil 2014 - Visual Regression Testing com PhantomCSS
Agile Brazil 2014 - Visual Regression Testing com PhantomCSSStefan Teixeira
 
O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017Renato Groff
 
TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017Renato Groff
 

Semelhante a Google App Engine, Python e Startups - Rupy 2012 (20)

O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São Paulo
 
Como aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipeComo aumentar a produtividade da sua equipe
Como aumentar a produtividade da sua equipe
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
 
Certificação Java
Certificação JavaCertificação Java
Certificação Java
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto Globalcode
 
Jugvale
JugvaleJugvale
Jugvale
 
Rubysoc final RubyConfBR
Rubysoc final RubyConfBRRubysoc final RubyConfBR
Rubysoc final RubyConfBR
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Angular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativoAngular, React ou Vue? Comparando os favoritos do JS reativo
Angular, React ou Vue? Comparando os favoritos do JS reativo
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
Lições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviçosLições aprendidas sobre transações em microsserviços
Lições aprendidas sobre transações em microsserviços
 
Guião demotécnica
Guião demotécnicaGuião demotécnica
Guião demotécnica
 
Guiao demotecnica
Guiao demotecnicaGuiao demotecnica
Guiao demotecnica
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Agile Brazil 2014 - Visual Regression Testing com PhantomCSS
Agile Brazil 2014 - Visual Regression Testing com PhantomCSSAgile Brazil 2014 - Visual Regression Testing com PhantomCSS
Agile Brazil 2014 - Visual Regression Testing com PhantomCSS
 
Gsp313 desafio selo_01
Gsp313 desafio selo_01Gsp313 desafio selo_01
Gsp313 desafio selo_01
 
Nao sensivel
Nao sensivelNao sensivel
Nao sensivel
 
O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017
 
TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017
 

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
  • 6.
  • 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
  • 9.
  • 10. Busca por frameworks ◦ Django – funcionava parcialmente  Curva de aprendizado muito alta  Solução utilizar o próprio webapp2 do Google
  • 11.
  • 12. Resolve o Cold Start
  • 13.
  • 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)