Cloud Computing - Java no Google App Engine

Preview:

DESCRIPTION

 

Citation preview

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

Dúvidas?

fredericomaia10@gmail.com

@fredmaia

@gojava

http://devsexperts.com