41

Java no Google App Engine - TDC2011

Embed Size (px)

Citation preview

Page 1: Java no Google App Engine - TDC2011
Page 2: Java no Google App Engine - TDC2011

Apresentação

Frederico Maia Arantes / @fredmaia

Programador Java EE na PC Sistemas

Oracle Certified Java SE 6 Programmer (OCJP 6)

Instrutor Java na Supera Tecnologia

Um dos coordenadores do grupo Gojava

Artigo publicado na Easy Java Magazine 6

http://devsexperts.com

Page 3: Java no Google App Engine - TDC2011
Page 4: Java no Google App Engine - TDC2011

O conceito de cloud computing refere-se à utilização da memória, armazenamento,

processamento e/ou serviços de computadores e servidores compartilhados e interligados por meio da Internet, seguindo o

princípio da computação em grade.

Page 5: Java no Google App Engine - TDC2011

O que você acha de sua aplicação ficar famosa e você começar a ter 200 mil

acessos por dia?

E se ela dobrar estes acessos da noite pro dia?

Page 6: Java no Google App Engine - TDC2011

E se os acessos quadruplicarem?

Page 7: Java no Google App Engine - TDC2011

E se for 10 vezes, 100 vezes mais acessos?

Mas e seu servidor, aguenta o tranco?

Page 8: Java no Google App Engine - TDC2011

Seu momento de glória...

Page 9: Java no Google App Engine - TDC2011

Cloud Computing

Surgiu por volta de 2008

Também conhecido como Computação em Nuvem

Google, IBM e Microsoft foram pioneiras

Nova fronteira da era digital

Page 10: Java no Google App Engine - TDC2011

Entendendo a Cloud Computing

Estamos acostumados a salvar tudo em nossos

computadores físicos, localmente

Em um ambiente empresarial podemos acessar

arquivos e aplicações em um servidor

Uma vantangem é não precisar da internet

Page 11: Java no Google App Engine - TDC2011

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: Java no Google App Engine - TDC2011

IaaS - Infrastructure as a Service

SaaS – Software as a Service

PaaS – Plataform as a Service

Principais tipos de cloud

Page 13: Java no Google App Engine - TDC2011

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: Java no Google App Engine - TDC2011

DropBox (SaaS)

Serviço para armazenamento de arquivos

Documentos sincronizados

Mantém versões de arquivos anteriores

Semelhante ao SVN usado por desenvolvedores,

porém mais simples

Page 15: Java no Google App Engine - TDC2011

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: Java no Google App Engine - TDC2011

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: Java no Google App Engine - TDC2011

Google App Engine (PaaS)

Infraestrutura e qualidade do Google

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

Persistência com Big Table (NoSQL)

Pague apenas pelo que usar

Page 18: Java no Google App Engine - TDC2011

Vantagens do GAE

Escalabilidade infinita

Elasticidade

Disponibilidade

Mais barato

Page 19: Java no Google App Engine - TDC2011

Mais vantagens do GAE

Desenvolvimento fácil

Ambiente simulado localmente

Confiável, mesmo com uma carga pesada e

grandes quantidades de dados

Ajuste e balanceamento de carga automático

Page 20: Java no Google App Engine - TDC2011

Número de desenvolvedores usando

Page 21: Java no Google App Engine - TDC2011

Número de aplicações no GAE

Page 22: Java no Google App Engine - TDC2011

APIs de Serviço

Cache de memória (implementa JCache)

Solicitações HTTP e HTTPS (java.net)

Mensagens de email (JavaMail)

Manipulação de Imagens

Login com contas do Google

Cron, ferramenta que agenda tarefas

Page 23: Java no Google App Engine - TDC2011

Gostei! Quero começar a usar!

Quanto custa?

Page 24: Java no Google App Engine - TDC2011

Começe sem pagar!

Page 25: Java no Google App Engine - TDC2011

Armazenamento de dados

Page 26: Java no Google App Engine - TDC2011

Custo real dos recursos

Page 27: Java no Google App Engine - TDC2011

Gostei mais ainda dos preços e das cotas gratuitas!

Como começo a desenvolver?

Page 28: Java no Google App Engine - TDC2011

Ambiente de Desenvolvimento

Eclipse + AppEngine SDK + Plugin

One-click deploy

Page 29: Java no Google App Engine - TDC2011

Fácil Gerenciamento

Page 30: Java no Google App Engine - TDC2011

Fácil Gerenciamento

Page 31: Java no Google App Engine - TDC2011

Fácil Gerenciamento

Page 32: Java no Google App Engine - TDC2011

Fácil Gerenciamento

Page 33: Java no Google App Engine - TDC2011

Padronização

Servlets 2.5 e JSP 2

JPA 1 e JDO 2

java.net

JavaMail

Jcache

JSE 5 e 6

Page 34: Java no Google App Engine - TDC2011

O que podemos utilizar no GAE

Struts 2

JSF 1.2 e JSF 2.0

Spring MVC

Flex

REST

VRaptor

Page 35: Java no Google App Engine - TDC2011

Fique atento

BigTable não é relacional (Nosql)

Acessar BigTable com JPA pode ser

complicado

Mesmo com JPA suas aplicações podem não

ser mais tão portáveis

Page 36: Java no Google App Engine - TDC2011

Desvantagens

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

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 37: Java no Google App Engine - TDC2011

Alternativas

Usar código específico

Datastore Low-level API (muito complexa)

Novos frameworks: Objectify, Twig, SimpleDS

Page 38: Java no Google App Engine - TDC2011

Objectify

Objectify ofy = ObjectifyService.begin(); // Simple create Car porsche = new Car("2FAST", "red"); ofy.put(porsche); assert porsche.id != null; // id was autogenerated // Get it back Car fetched1 = ofy.get(new Key<Car>(Car.class, porsche.id)); Car fetched2 = ofy.get(Car.class, porsche.id); // equivalent assert areEqual(porsche, fetched1, fetched2); // Delete it ofy.delete(porsche);

Page 39: Java no Google App Engine - TDC2011

Concluindo

Existem vantagens e desvantagens

Perdemos características como BD relacional,

porém ganhamos em outras

Preocupação com coisas novas

Em cloud é preciso confiar no seu fornecedor

Page 40: Java no Google App Engine - TDC2011

Novidade! Google Cloud SQL

Ambiente MySQL com acesso Java via JDBC

Backup e escalonamento (quando necessário), são

feitos automaticamente pela plataforma.

Alta disponibilidade e confiabilidade: dados

replicados em múltiplos datacenters;

Falhas de hardware em um servidor, rack ou mesmo

datacenter inteiro, são gerenciadas pela plataforma

Page 41: Java no Google App Engine - TDC2011

Obrigado!

[email protected]

@fredmaia

Frederico Maia

http://devsexperts.com