Apresentação
 Frederico Maia Arantes / @fredmaia
 Programador Java EE
 Oracle Certified Java SE 6 Programmer (OCJP 6)
 Instrutor Java (Supera Tecnologia)
 Membro do grupo Gojava, onde mantém um blog
 Artigo publicado na Easy Java Magazine 6
 http://devsexperts.com
“O conceito de cloud computing refere-se à
  utilização da memória e das capacidades de
            armazenamento e cálculo
de computadores e servidores compartilhados e
 interligados por meio da Internet, seguindo o
       princípio da computação em grade.”
O que você acha de sua aplicação
ficar famosa e dobrar os acessos
        da noite pro dia?
E se os acessos quadruplicarem?
E se for 10 vezes, 100 vezes mais
acessos? Seu servidor aguenta o
             tranco?
Seu momento de glória.. Fuu...
Cloud Computing
 Surgiu por volta de 2008

 Também conhecido como Computação em Nuvem

 Google, IBM e Microsoft foram pioneiras

 Especialistas consideram a nova fronteira da era digital
Entendendo a Cloud Computing
 Estamos acostumados a salvar tudo em nossos
 computadores físicos, locais

 Em um ambiente empresarial pode ser diferente,
 podemos acessar arquivos e aplicações em um servidor

 Uma vantangem é não precisar da internet
Entendendo a Cloud Computing...
 Internet muito acessível e rápida

 Aplicativos e dados não precisam estar no computador
 do usuário ou em um servidor próximo

 Este conteúdo fica nas “nuvens”, na internet
Principais tipos de cloud
 IaaS - Infrastructure as a Service

 SaaS – Software as a Service

 PaaS – Plataform as a Service
Google Docs (SaaS)
 Serviço na nuvem, onde usuários podem editar textos
 planilhas, slides e outros, tudo na internet

 É necessário apenas um browser

 Não importa o SO ou o computador

 Sem necessidade de nada instalado no computador
DropBox (SaaS)
 Serviço para armazenamento de arquivos

 Documentos sincronizados

 Mantém versões de arquivos anteriores

 Semelhante ao SVN usado por desenvolvedores
E2C Amazon (IaaS)
 O cloud IaaS mais conhecido do mundo

 Fornecimento de infraestrutura

 Virtualização de servidores e também pode envolver
 DNS, Redes, Firewall, E-mail e etc...

 O propósito é algo como substituir o seu servidor local
Google App Engine (PaaS)
 Plataforma como serviço

 Ambiente completo para desenvolvimento,
 configuração e gerenciamento de suas aplicações

 Simulação do ambiente (sandbox)

 Outro exemplo: Windows Azure
Google App Engine (PaaS)

 Infraestrutura e qualidade do Google
Google App Engine (PaaS)

 Infraestrutura e qualidade do Google

 Ambientes Java (Ruby, Groovy...) e Python
Google App Engine (PaaS)

 Infraestrutura e qualidade do Google

 Ambientes Java (Ruby, Groovy...) e Python

 Persistência com Big Table (NoSQL)
Google App Engine (PaaS)

 Infraestrutura e qualidade do Google

 Ambientes Java (Ruby, Groovy...) e Python

 Persistência com Big Table (NoSQL)

 Pague apenas pelo que usar
Vantagens do GAE

 Escalabilidade infinita
Vantagens do GAE

 Escalabilidade infinita

 Elasticidade
Vantagens do GAE

 Escalabilidade infinita

 Elasticidade

 Disponibilidade
Vantagens do GAE

 Escalabilidade infinita

 Elasticidade

 Disponibilidade

 Mais barato
Mais vantagens do GAE
 Desenvolvimento fácil, ambiente de desenvolvimento
 local simulando todos os recursos do GAE
 Confiável, mesmo com uma carga pesada e grandes
 quantidades de dados
 Ajuste e balanceamento de carga automático
 APIs para autenticação de usuários e envio de email
 usando as contas do Google
Cotas e limites
 Até 2000 (dois mil) emails por mês
 500MB de armazenamento
 5 milhões de visualizações por mês
 Até 10 aplicativos por cada conta do Google
 Resposta em no máximo 30 segundos
 Consulta pode retornar no máximo 1000 resultados
É barato mesmo
Ambiente de Desenvolvimento

 Eclipse + AppEngine SDK + Plugin
Ambiente de Desenvolvimento

 Eclipse + AppEngine SDK + Plugin

 One-click deploy
Fácil Gerenciamento
Fácil Gerenciamento
Fácil Gerenciamento
Fácil Gerenciamento
Padronização
 Servlets 2.5 e JSP 2
Padronização
 Servlets 2.5 e JSP 2

 JPA 1 e JDO 2
Padronização
 Servlets 2.5 e JSP 2

 JPA 1 e JDO 2

 java.net
Padronização
 Servlets 2.5 e JSP 2

 JPA 1 e JDO 2

 java.net

 JavaMail
Padronização
 Servlets 2.5 e JSP 2

 JPA 1 e JDO 2

 java.net

 JavaMail

 Jcache
Padronização
 Servlets 2.5 e JSP 2

 JPA 1 e JDO 2

 java.net

 JavaMail

 Jcache

 JSE 5 e 6
O que podemos utilizar no GAE
 Struts 2
 JSF 1.2 e JSF 2.0
 Spring MVC
 Flex
 REST
 VRaptor
 API de imagens...
Fique atento

 BigTable não é relacional (Nosql)

 Acessar BigTable com JPA pode ser complicado

 Suas aplicações não serão tão portáveis
Desvantagens
 Sem funções de agregação (count, sum, max,
 min, group by...)
Desvantagens
 Sem funções de agregação (count, sum, max,
 min, group by...)
Desvantagens
 Transações não são comuns
Desvantagens
 Transações não são comuns

 Não existem joins
Desvantagens
 Transações não são comuns

 Não existem joins

 Código específico (JPQL, JDOQL) para JPA
Desvantagens
 Transações não são comuns

 Não existem joins

 Código específico (JPQL, JDOQL) para JPA

 Startup deve ser otimizado
Desvantagens
 Transações não são comuns

 Não existem joins

 Código específico (JPQL, JDOQL) para JPA

 Startup deve ser otimizado

 Não pode gravar no sist. de arquivos, apenas ler
Alternativas

 Usar código específico
Alternativas

 Usar código específico

 Datastore Low-level API (muito complexa)
Alternativas

 Usar código específico

 Datastore Low-level API (muito complexa)

 Novos frameworks: Objectify, Twig
Fique atento

 Datastore read-only (é bom estar preparado)

 Usar cache de dados e de página
Devemos estar preparados
    EntityManager em =

      EntityManagerFactory.createEntityManager();
try {
      em.persist(entidade);
      em.close();
}catch(CapabilityDisabledException e) {
// informa que o Datastore está em modo read-only.
// Tente novamente mais tarde.
}
Conclusão
 Existem vantagens e desvantagens como em
 qualquer tecnologia
 Perdemos características como BD relacional,
 porém ganhamos em outras
 Preocupação com coisas novas

 É preciso confiar no seu fornecedor
Dúvidas?
  fredericomaia10@gmail.com

  @fredmaia

  @gojava



  http://devsexperts.com

Cloud Computing - Java no Google App Engine

  • 2.
    Apresentação Frederico MaiaArantes / @fredmaia  Programador Java EE  Oracle Certified Java SE 6 Programmer (OCJP 6)  Instrutor Java (Supera Tecnologia)  Membro do grupo Gojava, onde mantém um blog  Artigo publicado na Easy Java Magazine 6  http://devsexperts.com
  • 4.
    “O conceito decloud computing refere-se à utilização da memória e das capacidades de armazenamento e cálculo de computadores e servidores compartilhados e interligados por meio da Internet, seguindo o princípio da computação em grade.”
  • 5.
    O que vocêacha de sua aplicação ficar famosa e dobrar os acessos da noite pro dia?
  • 6.
    E se osacessos quadruplicarem?
  • 7.
    E se for10 vezes, 100 vezes mais acessos? Seu servidor aguenta o tranco?
  • 8.
    Seu momento deglória.. Fuu...
  • 9.
    Cloud Computing  Surgiupor volta de 2008  Também conhecido como Computação em Nuvem  Google, IBM e Microsoft foram pioneiras  Especialistas consideram a nova fronteira da era digital
  • 10.
    Entendendo a CloudComputing  Estamos acostumados a salvar tudo em nossos computadores físicos, locais  Em um ambiente empresarial pode ser diferente, podemos acessar arquivos e aplicações em um servidor  Uma vantangem é não precisar da internet
  • 11.
    Entendendo a CloudComputing...  Internet muito acessível e rápida  Aplicativos e dados não precisam estar no computador do usuário ou em um servidor próximo  Este conteúdo fica nas “nuvens”, na internet
  • 12.
    Principais tipos decloud  IaaS - Infrastructure as a Service  SaaS – Software as a Service  PaaS – Plataform as a Service
  • 13.
    Google Docs (SaaS) Serviço na nuvem, onde usuários podem editar textos planilhas, slides e outros, tudo na internet  É necessário apenas um browser  Não importa o SO ou o computador  Sem necessidade de nada instalado no computador
  • 14.
    DropBox (SaaS)  Serviçopara armazenamento de arquivos  Documentos sincronizados  Mantém versões de arquivos anteriores  Semelhante ao SVN usado por desenvolvedores
  • 15.
    E2C Amazon (IaaS) O cloud IaaS mais conhecido do mundo  Fornecimento de infraestrutura  Virtualização de servidores e também pode envolver DNS, Redes, Firewall, E-mail e etc...  O propósito é algo como substituir o seu servidor local
  • 16.
    Google App Engine(PaaS)  Plataforma como serviço  Ambiente completo para desenvolvimento, configuração e gerenciamento de suas aplicações  Simulação do ambiente (sandbox)  Outro exemplo: Windows Azure
  • 17.
    Google App Engine(PaaS)  Infraestrutura e qualidade do Google
  • 18.
    Google App Engine(PaaS)  Infraestrutura e qualidade do Google  Ambientes Java (Ruby, Groovy...) e Python
  • 19.
    Google App Engine(PaaS)  Infraestrutura e qualidade do Google  Ambientes Java (Ruby, Groovy...) e Python  Persistência com Big Table (NoSQL)
  • 20.
    Google App Engine(PaaS)  Infraestrutura e qualidade do Google  Ambientes Java (Ruby, Groovy...) e Python  Persistência com Big Table (NoSQL)  Pague apenas pelo que usar
  • 21.
    Vantagens do GAE Escalabilidade infinita
  • 22.
    Vantagens do GAE Escalabilidade infinita  Elasticidade
  • 23.
    Vantagens do GAE Escalabilidade infinita  Elasticidade  Disponibilidade
  • 24.
    Vantagens do GAE Escalabilidade infinita  Elasticidade  Disponibilidade  Mais barato
  • 25.
    Mais vantagens doGAE  Desenvolvimento fácil, ambiente de desenvolvimento local simulando todos os recursos do GAE  Confiável, mesmo com uma carga pesada e grandes quantidades de dados  Ajuste e balanceamento de carga automático  APIs para autenticação de usuários e envio de email usando as contas do Google
  • 26.
    Cotas e limites Até 2000 (dois mil) emails por mês  500MB de armazenamento  5 milhões de visualizações por mês  Até 10 aplicativos por cada conta do Google  Resposta em no máximo 30 segundos  Consulta pode retornar no máximo 1000 resultados
  • 27.
  • 28.
    Ambiente de Desenvolvimento Eclipse + AppEngine SDK + Plugin
  • 29.
    Ambiente de Desenvolvimento Eclipse + AppEngine SDK + Plugin  One-click deploy
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
    Padronização  Servlets 2.5e JSP 2  JPA 1 e JDO 2
  • 36.
    Padronização  Servlets 2.5e JSP 2  JPA 1 e JDO 2  java.net
  • 37.
    Padronização  Servlets 2.5e JSP 2  JPA 1 e JDO 2  java.net  JavaMail
  • 38.
    Padronização  Servlets 2.5e JSP 2  JPA 1 e JDO 2  java.net  JavaMail  Jcache
  • 39.
    Padronização  Servlets 2.5e JSP 2  JPA 1 e JDO 2  java.net  JavaMail  Jcache  JSE 5 e 6
  • 40.
    O que podemosutilizar no GAE  Struts 2  JSF 1.2 e JSF 2.0  Spring MVC  Flex  REST  VRaptor  API de imagens...
  • 41.
    Fique atento  BigTablenão é relacional (Nosql)  Acessar BigTable com JPA pode ser complicado  Suas aplicações não serão tão portáveis
  • 42.
    Desvantagens  Sem funçõesde agregação (count, sum, max, min, group by...)
  • 43.
    Desvantagens  Sem funçõesde agregação (count, sum, max, min, group by...)
  • 44.
  • 45.
    Desvantagens  Transações nãosão comuns  Não existem joins
  • 46.
    Desvantagens  Transações nãosão comuns  Não existem joins  Código específico (JPQL, JDOQL) para JPA
  • 47.
    Desvantagens  Transações nãosão comuns  Não existem joins  Código específico (JPQL, JDOQL) para JPA  Startup deve ser otimizado
  • 48.
    Desvantagens  Transações nãosão comuns  Não existem joins  Código específico (JPQL, JDOQL) para JPA  Startup deve ser otimizado  Não pode gravar no sist. de arquivos, apenas ler
  • 49.
  • 50.
    Alternativas  Usar códigoespecífico  Datastore Low-level API (muito complexa)
  • 51.
    Alternativas  Usar códigoespecífico  Datastore Low-level API (muito complexa)  Novos frameworks: Objectify, Twig
  • 52.
    Fique atento  Datastoreread-only (é bom estar preparado)  Usar cache de dados e de página
  • 53.
    Devemos estar preparados EntityManager em = EntityManagerFactory.createEntityManager(); try { em.persist(entidade); em.close(); }catch(CapabilityDisabledException e) { // informa que o Datastore está em modo read-only. // Tente novamente mais tarde. }
  • 54.
    Conclusão  Existem vantagense desvantagens como em qualquer tecnologia  Perdemos características como BD relacional, porém ganhamos em outras  Preocupação com coisas novas  É preciso confiar no seu fornecedor
  • 55.
    Dúvidas? fredericomaia10@gmail.com @fredmaia @gojava http://devsexperts.com