55

Cloud Computing - Java no Google App Engine

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Cloud Computing - Java no Google App Engine
Page 2: 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

Page 3: Cloud Computing - Java no Google App Engine
Page 4: Cloud Computing - Java no Google App Engine

“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.”

Page 5: Cloud Computing - Java no Google App Engine

O que você acha de sua aplicação ficar famosa e dobrar os acessos

da noite pro dia?

Page 6: Cloud Computing - Java no Google App Engine

E se os acessos quadruplicarem?

Page 7: Cloud Computing - Java no Google App Engine

E se for 10 vezes, 100 vezes mais acessos? Seu servidor aguenta o

tranco?

Page 8: Cloud Computing - Java no Google App Engine

Seu momento de glória.. Fuu...

Page 9: Cloud Computing - Java no Google App Engine

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

Page 10: Cloud Computing - Java no Google App Engine

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

Page 11: Cloud Computing - Java no Google App Engine

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

Page 12: Cloud Computing - Java no Google App Engine

IaaS - Infrastructure as a Service

SaaS – Software as a Service

PaaS – Plataform as a Service

Principais tipos de cloud

Page 13: Cloud Computing - Java no Google App Engine

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

Page 14: Cloud Computing - Java no Google App Engine

DropBox (SaaS)

Serviço para armazenamento de arquivos

Documentos sincronizados

Mantém versões de arquivos anteriores

Semelhante ao SVN usado por desenvolvedores

Page 15: Cloud Computing - Java no Google App Engine

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

Page 16: Cloud Computing - Java no Google App Engine

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

Page 17: Cloud Computing - Java no Google App Engine

Google App Engine (PaaS)

Infraestrutura e qualidade do Google

Page 18: Cloud Computing - Java no Google App Engine

Google App Engine (PaaS)

Infraestrutura e qualidade do Google

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

Page 19: Cloud Computing - Java no Google App Engine

Google App Engine (PaaS)

Infraestrutura e qualidade do Google

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

Persistência com Big Table (NoSQL)

Page 20: Cloud Computing - Java no Google App Engine

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

Page 21: Cloud Computing - Java no Google App Engine

Vantagens do GAE

Escalabilidade infinita

Page 22: Cloud Computing - Java no Google App Engine

Vantagens do GAE

Escalabilidade infinita

Elasticidade

Page 23: Cloud Computing - Java no Google App Engine

Vantagens do GAE

Escalabilidade infinita

Elasticidade

Disponibilidade

Page 24: Cloud Computing - Java no Google App Engine

Vantagens do GAE

Escalabilidade infinita

Elasticidade

Disponibilidade

Mais barato

Page 25: Cloud Computing - Java no Google App Engine

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

Page 26: Cloud Computing - Java no Google App Engine

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

Page 27: Cloud Computing - Java no Google App Engine

É barato mesmo

Page 28: Cloud Computing - Java no Google App Engine

Ambiente de Desenvolvimento

Eclipse + AppEngine SDK + Plugin

Page 29: Cloud Computing - Java no Google App Engine

Ambiente de Desenvolvimento

Eclipse + AppEngine SDK + Plugin

One-click deploy

Page 30: Cloud Computing - Java no Google App Engine

Fácil Gerenciamento

Page 31: Cloud Computing - Java no Google App Engine

Fácil Gerenciamento

Page 32: Cloud Computing - Java no Google App Engine

Fácil Gerenciamento

Page 33: Cloud Computing - Java no Google App Engine

Fácil Gerenciamento

Page 34: Cloud Computing - Java no Google App Engine

Padronização

Servlets 2.5 e JSP 2

Page 35: Cloud Computing - Java no Google App Engine

Padronização

Servlets 2.5 e JSP 2

JPA 1 e JDO 2

Page 36: Cloud Computing - Java no Google App Engine

Padronização

Servlets 2.5 e JSP 2

JPA 1 e JDO 2

java.net

Page 37: Cloud Computing - Java no Google App Engine

Padronização

Servlets 2.5 e JSP 2

JPA 1 e JDO 2

java.net

JavaMail

Page 38: Cloud Computing - Java no Google App Engine

Padronização

Servlets 2.5 e JSP 2

JPA 1 e JDO 2

java.net

JavaMail

Jcache

Page 39: Cloud Computing - Java no Google App Engine

Padronização

Servlets 2.5 e JSP 2

JPA 1 e JDO 2

java.net

JavaMail

Jcache

JSE 5 e 6

Page 40: Cloud Computing - Java no Google App Engine

O que podemos utilizar no GAE

Struts 2

JSF 1.2 e JSF 2.0

Spring MVC

Flex

REST

VRaptor

API de imagens...

Page 41: Cloud Computing - Java no Google App Engine

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

Page 42: Cloud Computing - Java no Google App Engine

Desvantagens

Sem funções de agregação (count, sum, max,

min, group by...)

Page 43: Cloud Computing - Java no Google App Engine

Desvantagens

Sem funções de agregação (count, sum, max,

min, group by...)

Page 44: Cloud Computing - Java no Google App Engine

Desvantagens

Transações não são comuns

Page 45: Cloud Computing - Java no Google App Engine

Desvantagens

Transações não são comuns

Não existem joins

Page 46: Cloud Computing - Java no Google App Engine

Desvantagens

Transações não são comuns

Não existem joins

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

Page 47: Cloud Computing - Java no Google App Engine

Desvantagens

Transações não são comuns

Não existem joins

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

Startup deve ser otimizado

Page 48: Cloud Computing - Java no Google App Engine

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

Page 49: Cloud Computing - Java no Google App Engine

Alternativas

Usar código específico

Page 50: Cloud Computing - Java no Google App Engine

Alternativas

Usar código específico

Datastore Low-level API (muito complexa)

Page 51: Cloud Computing - Java no Google App Engine

Alternativas

Usar código específico

Datastore Low-level API (muito complexa)

Novos frameworks: Objectify, Twig

Page 52: Cloud Computing - Java no Google App Engine

Fique atento

Datastore read-only (é bom estar preparado)

Usar cache de dados e de página

Page 53: Cloud Computing - Java no Google App Engine

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.

}

Page 54: Cloud Computing - Java no Google App Engine

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

Page 55: Cloud Computing - Java no Google App Engine

Dúvidas?

[email protected]

@fredmaia

@gojava

http://devsexperts.com