2. 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
3.
4. 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.
5. 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?
9. 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
10. 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
11. 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
12. Principais tipos de cloud
IaaS - Infrastructure as a Service
SaaS – Software as a Service
PaaS – Plataform as a Service
13. 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
14. 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
15. 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
16. 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
17. 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
18. Vantagens do GAE
Escalabilidade infinita
Elasticidade
Disponibilidade
Mais barato
19. 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
22. 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
34. O que podemos utilizar no GAE
Struts 2
JSF 1.2 e JSF 2.0
Spring MVC
Flex
REST
VRaptor
35. 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
36. 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
38. 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);
39. 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
40. 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