Cloud Computing - Java no Google App Engine
-
Upload
frederico-maia-arantes -
Category
Documents
-
view
1.045 -
download
1
description
Transcript of Cloud Computing - Java no Google App Engine
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
IaaS - Infrastructure as a Service
SaaS – Software as a Service
PaaS – Plataform as a Service
Principais tipos de cloud
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