Java no Google App Engine - TDC2011

Preview:

Citation preview

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

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.

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?

E se os acessos quadruplicarem?

E se for 10 vezes, 100 vezes mais acessos?

Mas e seu servidor, aguenta o tranco?

Seu momento de glória...

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

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

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,

porém mais simples

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

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

Persistência com Big Table (NoSQL)

Pague apenas pelo que usar

Vantagens do GAE

Escalabilidade infinita

Elasticidade

Disponibilidade

Mais barato

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

Número de desenvolvedores usando

Número de aplicações no GAE

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

Gostei! Quero começar a usar!

Quanto custa?

Começe sem pagar!

Armazenamento de dados

Custo real dos recursos

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

Como começo a desenvolver?

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

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

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

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

Alternativas

Usar código específico

Datastore Low-level API (muito complexa)

Novos frameworks: Objectify, Twig, SimpleDS

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);

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

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

Obrigado!

fredericomaia10@gmail.com

@fredmaia

Frederico Maia

http://devsexperts.com

Recommended