SlideShare une entreprise Scribd logo
1  sur  72
FICANDO NAS NUVENS COM O
    GOOGLE APP ENGINE
           Pedro Mariano
    pedro.mariano@caelum.com.br
QUEM SOU EU?
SISTEMAS




Disponibilidade           Performance




             Escalabilidade
É SIMPLES
É SIMPLES
É SIMPLES




      Tomcat   MySQL
É SIMPLES




      Tomcat   MySQL
É SIMPLES




      Tomcat   MySQL


      Tomcat
É SIMPLES




                Tomcat   MySQL
Proxy Reverso




                Tomcat
É SIMPLES




                Tomcat   MySQL
Proxy Reverso




                Tomcat   MySQL
Proxy Reverso
                              É SIMPLES




            Tomcat
                     Tomcat



Session Compartilhada
                     MySQL


            MySQL
Proxy Reverso
                              É SIMPLES




            Tomcat
                     Tomcat



Session Compartilhada
                     MySQL


            MySQL
É SIMPLES




                Tomcat                           MySQL



                         Session Compartilhada
Proxy Reverso




                Tomcat                           MySQL


                Tomcat                           MySQL


                Tomcat                           MySQL
É SIMPLES




                Tomcat                           MySQL



                         Session Compartilhada
Proxy Reverso




                Tomcat                           MySQL


                Tomcat                           MySQL


                Tomcat                           MySQL
É SIMPLES




                Tomcat                           MySQL



                         Session Compartilhada
Proxy Reverso




                Tomcat                           MySQL


                Tomcat                           MySQL


                Tomcat                           MySQL
É SIMPLES




                Tomcat                           MySQL



                         Session Compartilhada
Proxy Reverso




                Tomcat                           MySQL


                Tomcat                           MySQL


                Tomcat                           MySQL
É SIMPLES




                Tomcat                           MySQL



                         Session Compartilhada
Proxy Reverso




                Tomcat                           MySQL


                Tomcat                           MySQL


                Tomcat                           MySQL
DOR DE CABEÇA
CARO
A PROVA DE BALAS?
A PROVA DE BALAS?
NÃO SERIA MELHOR?
NÃO SERIA MELHOR?
NÃO SERIA MELHOR?


        Jetty




                    BigTable
NÃO SERIA MELHOR?


        Jetty




                    BigTable
NÃO SERIA MELHOR?


        Jetty




                    BigTable
        Jetty
NÃO SERIA MELHOR?


        Jetty




                    BigTable
        Jetty
NÃO SERIA MELHOR?


        Jetty




                    BigTable
        Jetty


        Jetty


        Jetty
NÃO SERIA MELHOR?

                On Demand
        Jetty




                            BigTable
        Jetty


        Jetty


        Jetty
NÃO SERIA MELHOR?

                On Demand
        Jetty




                            BigTable
        Jetty


        Jetty


        Jetty
NÃO SERIA MELHOR?

                On Demand
        Jetty




                            BigTable
        Jetty


        Jetty


        Jetty
NÃO SERIA MELHOR?

                On Demand
        Jetty




                            BigTable
        Jetty


        Jetty


        Jetty
NÃO SERIA MELHOR?

                On Demand
        Jetty




                            BigTable
        Jetty


        Jetty


        Jetty
NÃO SERIA MELHOR?

                On Demand
        Jetty




                            BigTable
        Jetty


        Jetty
NÃO SERIA MELHOR?

                On Demand
        Jetty




                            BigTable
        Jetty


        Jetty
NÃO SERIA MELHOR?

                On Demand
        Jetty




                            BigTable
        Jetty
E AGORA QUEM PODERÁ NOS AJUDAR?

   Escalabilidade

   Disponibilidade

    Performance


 Sem dor de Cabeça


    Baixo Custo
CLOUD COMPUTING
GOOGLE APP ENGINE
PLATAFORMA
LINGUAGENS
MAIS LINGUAGENS
ARQUITETURA


                     Images         Tasks




APP Web              Email           HTTP

  Jetty
          MemCache




                              BigTable
O QUE EU PRECISO?
CRIE UMA APP
PLUGIN PARA O ECLIPSE




               +
   Ambiente   SDK       Interface
APPENGINE-WEB.XML


<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
	 <application>caelumcombr</application>
	 <version>testing</version>
	 <sessions-enabled>true</sessions-enabled>
</appengine-web-app>
E O RESTO?



appengine-web.xml


SDK do App Engine


  diretório war
VERSIONAMENTO

APP Javaday

    teste       http://teste.latest.javaday.appspot.com


 com func       http://comfunc.latest.javaday.appspot.com


layout antigo   http://layoutantigo.latest.javaday.appspot.com
DICAS E CUIDADOS
CONHEÇA AS LIMITAÇÕES


            Criação de Arquivos



           Execução de Comandos



                Whitelist
BANCO DE DADOS COMPARTILHADO

 APP Javaday

     teste




                        BigTable
   com func

  layout antigo
EU MENTI
DATASTORE
NÃO SE DESESPERE
SE ADAPTE




             MemCache
                        Leitura
APP Web                            Datastore
  Jetty


   Escrita
                           Tasks
BIGTABLE API


 // Get a handle on the datastore itself
 DatastoreService datastore =
DatastoreServiceFactory.getDatastoreService();

 // Lookup data by known key name
 Entity userEntity = datastore.get(KeyFactory.createKey("UserInfo",
email));

 // Or perform a query
 Query query = new Query("Task", userEntity);
 query.addFilter("dueDate", Query.FilterOperator.LESS_THAN, today);
 for (Entity taskEntity : datastore.prepare(query).asIterable()) {
   if ("done".equals(taskEntity.getProperty("status"))) {
     datastore.delete(taskEntity);
   } else {
     taskEntity.setProperty("status", "overdue");
     datastore.put(taskEntity);
   }
 }
JPA




<provider>
  org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider
</provider>
BIG TABLE + JPA


Livro livro = new Livro();
manager.persist(livro);
APRENDA OUTRAS APIS

                         Objectify

         Objectify ofy = ObjectifyService.begin();
         ofy.put(new Livro());




                           Twig

ObjectDatastore datastore  = new AnnotationObjectDatastore();
datastore.store(new Livro());
ESCOLHA BEM SUAS APIS




         Versão para o AppEngine
QUANTO CUSTA?
QUANTO CUSTA?
COTAS


            Limite Diário    Taxa Máxima


REQUESTS     1.300.000       7.400 /minute


  CPU           6.5 horas   15 CPU minutes


QUERIES     10.000.000      57,000/minute
CAELUM E O GAE




    GAE             Benefícios Cloud

Vraptor 3 GAE   =    Praticidade e
                     Tranquilidade

  Objectify            Gasto 0
E A CONCORRÊNCIA?

         Amazon   Terremark   Google App Engine                 Salesforce

20



15



10



  5



  0
1-pixel GIF       2MB GIF              CPU                                 IO
                                                  Fonte: Bitcurrent e Webmetrics
QUEM UTILIZA?




   http://appgallery.appspot.com/
FUTURO


                  99.9% disponibilidade


                        MySQL
For Business

                        Suporte
EU DEVO UTILIZAR?


Documentação (y)    Experimente
OBRIGADO!

http://www.caelum.com.br
http://www.infoq.com/br
        DÚVIDAS?
 @pmariano        pedro.mariano@caelum.com.br

Contenu connexe

En vedette (10)

5 youcanhelp
5 youcanhelp5 youcanhelp
5 youcanhelp
 
Promotion Ideas Lund
Promotion Ideas   LundPromotion Ideas   Lund
Promotion Ideas Lund
 
Promotion Ideas Umea
Promotion Ideas   UmeaPromotion Ideas   Umea
Promotion Ideas Umea
 
Promotion Ideas Gothenburg
Promotion Ideas   GothenburgPromotion Ideas   Gothenburg
Promotion Ideas Gothenburg
 
Promotion Ideas Uppsala
Promotion Ideas   UppsalaPromotion Ideas   Uppsala
Promotion Ideas Uppsala
 
4 hot
4 hot4 hot
4 hot
 
OSM HOT SBTF 2013_03_16
OSM HOT SBTF 2013_03_16OSM HOT SBTF 2013_03_16
OSM HOT SBTF 2013_03_16
 
Promotion Ideas Stockholm
Promotion Ideas   StockholmPromotion Ideas   Stockholm
Promotion Ideas Stockholm
 
Anton spirin trends 2017
Anton spirin trends 2017Anton spirin trends 2017
Anton spirin trends 2017
 
Reglamento de metrados para obras
Reglamento de metrados para obrasReglamento de metrados para obras
Reglamento de metrados para obras
 

Similaire à Ficando nas Nuvens Com o Google App Engine

Escolhendo uma nuvem para sua webapp
Escolhendo uma nuvem para sua webappEscolhendo uma nuvem para sua webapp
Escolhendo uma nuvem para sua webappjoaobmonteiro
 
BrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web ApplicationsBrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web ApplicationsEmerson Macedo
 
Utilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaUtilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaAdriel Viana
 
Apache Wicket @ JustJava 2008
Apache Wicket @ JustJava 2008Apache Wicket @ JustJava 2008
Apache Wicket @ JustJava 2008Bruno Borges
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaBreno Vitorino
 
Minicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTIMinicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTImarcochella
 
Manual Kikrotik Completo
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik CompletoPortal GSTI
 
LocalStack - TDC Porto Alegre 2020
LocalStack - TDC Porto Alegre 2020LocalStack - TDC Porto Alegre 2020
LocalStack - TDC Porto Alegre 2020Roberto Alves
 
Desenvolvimento de Aplicações em Container com AWS Fargate
Desenvolvimento de Aplicações em Container com AWS FargateDesenvolvimento de Aplicações em Container com AWS Fargate
Desenvolvimento de Aplicações em Container com AWS FargateAmazon Web Services LATAM
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
Desenvolvimento de Aplicações em Container com AWS Fargate - DEV302 - Sao Pa...
Desenvolvimento de Aplicações em Container com AWS Fargate -  DEV302 - Sao Pa...Desenvolvimento de Aplicações em Container com AWS Fargate -  DEV302 - Sao Pa...
Desenvolvimento de Aplicações em Container com AWS Fargate - DEV302 - Sao Pa...Amazon Web Services
 
Novidades do ASP.NET Core 2.1
Novidades do ASP.NET Core 2.1Novidades do ASP.NET Core 2.1
Novidades do ASP.NET Core 2.1Rodrigo Kono
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerGiovanni Kenji Shiroma
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Emerson Macedo
 
Lean Startup e Computação em Nuvem
Lean Startup e Computação em NuvemLean Startup e Computação em Nuvem
Lean Startup e Computação em NuvemJose Papo, MSc
 
Mikrotik passo a passo
Mikrotik   passo a passoMikrotik   passo a passo
Mikrotik passo a passoIvan de Sousa
 

Similaire à Ficando nas Nuvens Com o Google App Engine (20)

Escolhendo uma nuvem para sua webapp
Escolhendo uma nuvem para sua webappEscolhendo uma nuvem para sua webapp
Escolhendo uma nuvem para sua webapp
 
BrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web ApplicationsBrazilJS - Node.JS Realtime Web Applications
BrazilJS - Node.JS Realtime Web Applications
 
Utilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web JavaUtilizando software livre para alta disponibilidade de sistemas web Java
Utilizando software livre para alta disponibilidade de sistemas web Java
 
Apache Wicket @ JustJava 2008
Apache Wicket @ JustJava 2008Apache Wicket @ JustJava 2008
Apache Wicket @ JustJava 2008
 
Arquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em JavaArquitetura de aplicações Web 2.0 em Java
Arquitetura de aplicações Web 2.0 em Java
 
Minicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTIMinicurso IOT com javascript - SBTI
Minicurso IOT com javascript - SBTI
 
Microserviços
MicroserviçosMicroserviços
Microserviços
 
Manual Kikrotik Completo
Manual Kikrotik CompletoManual Kikrotik Completo
Manual Kikrotik Completo
 
LocalStack - TDC Porto Alegre 2020
LocalStack - TDC Porto Alegre 2020LocalStack - TDC Porto Alegre 2020
LocalStack - TDC Porto Alegre 2020
 
Desenvolvimento de Aplicações em Container com AWS Fargate
Desenvolvimento de Aplicações em Container com AWS FargateDesenvolvimento de Aplicações em Container com AWS Fargate
Desenvolvimento de Aplicações em Container com AWS Fargate
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Desenvolvimento de Aplicações em Container com AWS Fargate - DEV302 - Sao Pa...
Desenvolvimento de Aplicações em Container com AWS Fargate -  DEV302 - Sao Pa...Desenvolvimento de Aplicações em Container com AWS Fargate -  DEV302 - Sao Pa...
Desenvolvimento de Aplicações em Container com AWS Fargate - DEV302 - Sao Pa...
 
Educloud 2
Educloud 2Educloud 2
Educloud 2
 
Novidades do ASP.NET Core 2.1
Novidades do ASP.NET Core 2.1Novidades do ASP.NET Core 2.1
Novidades do ASP.NET Core 2.1
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
Aplicações web realtime
Aplicações web realtimeAplicações web realtime
Aplicações web realtime
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Lean Startup e Computação em Nuvem
Lean Startup e Computação em NuvemLean Startup e Computação em Nuvem
Lean Startup e Computação em Nuvem
 
Mikrotik passo a passo
Mikrotik   passo a passoMikrotik   passo a passo
Mikrotik passo a passo
 
W2py pyconpe
W2py pyconpeW2py pyconpe
W2py pyconpe
 

Dernier

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 

Dernier (9)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 

Ficando nas Nuvens Com o Google App Engine

Notes de l'éditeur