Plataforma Digital
com Google Cloud
Platform
Levando sua arquitetura para
as nuvens!
Collaborate. Innovate. Transform.
André Paulovich
arquiteto de softwares
andrepg@ciandt.com | @andrepaulovich
Collaborate. Innovate. Transform.
MCP | MCTS | MCT | MCAD | MCSD.Net | MVP Asp.Net 2011-2014
Vivemos uma nova era...
Nossa noção de “sucesso” mudou
muito…
Fonte: ProgrammableWeb
Clube dos Bilhões
5+ Bilhões de Calls/Dia1+ Bilhões de Calls/Dia
Como é possível?
Manutenível Disponível Escalável
Econômico
Manutenível Disponível Escalável
Econômico
Manutenível Disponível Escalável
Econômico
Manutenível Disponível Escalável
Econômico
Manutenível Disponível Escalável
Econômico
Plataforma Digital
Manutenível Disponível Escalável
Econômico
Porque eu escolheria a Google?
Razão #1 - Estar na mesma infraestrutura do Google
Desenvolver na mesma infra estrutura que permite ao Google responder
a bilhões de pesquisas em segundos.
E que também provê mais de 6 bilhões de horas de vídeo no YouTube
por mês, além de garantir um serviço de email a mais de 425 milhões de
usuários do Gmail.
● Rede global
● Redundância
● Infraestrutura inovadora
Distribuição Global
Razão #2 - Se concentrar no seu produto
Desenvolver rapidamente, publicar e interagir suas aplicações sem se
preocupar com “overheads” de administração. O Google vai gerenciar
sua aplicação, base de dados e todos os servidores de armazenamento
para você.
● Serviços gerenciados.
● SDK para desenvolvedores
● Painéis de administração simplificados
Razão #3 - Grande variedade de serviços
Máquinas virtuais, plataforma gerenciada, blog storage, bancos de
dados NoSQL e relacionais (MySQL). Big Data para análise de grandes
volumes de dados e tudo isso numa plataforma de serviços que irá
oferecer tudo que sua aplicação vai demandar arquiteturalmente.
● Computação
● Armazenamento
● Serviços
Razão #4 - Escalar para milhões de usuários
Aplicações hospedadas na plataforma do Google podem escalar
automaticamente para garantir a resposta da sua aplicação diretamente
proporcional ao tráfego demandado. Então você irá pagar apenas pelo
que realmente usar.
● Scale-up (adição de recursos)
● Scale-down (remoção de recursos)
Tempo
CapacidadedeTI
Carga
Alocação de
capacidades
Desperdício de
capacidades
Falta de
capacidades
Previsão de
carga
Padrão de Crescimento de Capacidade de TI
Carga
Redução do
investimento inicial
Redução do
excesso de TI
Sem falta de
capacidades
Redução das
capacidades
nos momentos
de redução da
carga
Tempo
CapacidadedeTI
Previsão
de carga
Escalável
Razão #5 - Performance garantida
A infraestrutura do Google garante consistência na performance de
CPU, memória e disco sempre! E a rede global de cache irá responder
rapidamente aos usuários onde quer que eles estejam no globo.
● CPU, Memória e Disco
● Rede Global
● Manutenção transparente
Razão #6 - Todo suporte que você precisar
Com uma comunidade que não para de crescer, uma rede de parceiros
e a possibilidade de adquirir um suporte “Premium” o Google, provê uma
completa variedade de recursos para ajudá-lo a iniciar e crescer usando
os recursos da plataforma.
Razão #7 - Preço, preço e preço
A precificação dos serviços do Google é muito agressiva. Eles realmente
fazem valer a “lei de Moore”. É comum o Google reduzir valores de seus
serviços.
Evoluindo na nuvem...
Níveis de aderência...
IaaS
Virtualização
Físico Virtual IaaS
Nuvem
PaaS
Virtualização
Físico Virtual IaaS PaaS
Nuvem
Exemplo de Configuração de AutoScaler
Sempre que você disponibiliza uma versão da sua aplicação, o Google
versiona cada deploy e lhe permite inclusive voltar para uma versão
anterior da aplicação com apenas um click.
● É boa uma prática, relacionar o número do seu build (jenkins) com o
nome da versão no “app engine” permitindo uma rastreabilidade.
“DevOps” de lambuja
A SDK não implementa 100% da especificação, mas não se preocupe
muito… já está quase lá.
AppEngine SDK não é JEE
Componentes mais comuns suportados
● Java Data Objects (JDO)
● Java Persistence API (JPA)
● Java Server Faces (JSF) 1.1 - 2.0
● Java Server Pages (JSP) + JSTL
● Java Servlet API 2.4
● JavaBeans™ Activation Framework (JAF)
● Java Architecture for XML Binding (JAXB)
● Java API for XML Web Services (JAX-WS)
● JavaMail
● XML processing APIs including DOM, SAX, and XSLT
● Enterprise Java Beans (EJB)
● JAX-RPC
● Java Database Connectivity (JDBC)
● Java EE™ Connector Architecture (JCA)
● Java Management Extensions (JMX)
● Java Message Service (JMS)
● Java Naming and Directory Interface (JNDI)
● Remote Method Invocation (RMI)
Tentativa de categorizar o que funciona ou não é compatível:
https://code.google.com/p/googleappengine/wiki/WillItPlayInJava
Componentes mais comuns não suportados
SaaS
Virtualização
Físico SaaSVirtual IaaS PaaS
Nuvem
Resume aí...
“On the line”
Clickgram
Você é o responsável pela
infraestrutura de um novo aplicativo
chamado Clickgram.
O Clickgram permite que qualquer
pessoa compartilhe uma foto com seus
amigos em apenas um clique!
Chegou o momento de você colocar o
aplicativo no ar e seu chefe exigiu que
não ocorram problemas de
escalabilidade ou de disponibilidade.
Requisição Resposta
JAVA
MySQLREDIS HD
Requisição Resposta
Servidor 01
JAVA
MySQLREDIS HD
Mas lembre-se de
que precisa ser
escalável!
Servidor 01
JAVA
MySQLREDIS HD
Servidor 02
JAVA
MySQLREDIS HD
Requisição Resposta Requisição Resposta
MySQLREDIS HD
Parece bom, mas as camadas de dados não são
escaláveis simplesmente “dobrando” os servidores.
E agora?!
Requisição Resposta
Servidor 01
JAVA
MySQLREDIS HD
Novamente parece muito bom!
Esta abordagem de montar um servidor mais potente
vai funcionar por um tempo, mas tem um limite físico.
Voltamos à estaca
zero!
Dica de ouro!
ServidorServidor
ServidorServidor
JAVA
MySQL
REDIS
HD
Isole cada componente da sua aplicação!
Problema: O banco de dados está muito lento.
O que fazer?
Servidor (master)Servidor
ServidorServidor
JAVA
MySQL
REDIS
HD
Um master-slave pode funcionar!
Servidor (slave)
MySQL
Os bancos relacionais,
são “limitados”!
(DBA´s por favor sem polêmica)
ServidorServidor
ServidorServidor
JAVA
NoSQL
REDIS
HD
Mas considere usar bancos NO-SQL
Problema: A quantidade de escritas e leituras no sistema de
arquivos (armazenamento de fotos) precisa aumentar.
O que fazer?
ServidorServidor
ServidorServidor
JAVA
NoSQL
REDIS
Storage
Não use um sistema de arquivos convencional.
Problema: O sistema de cache precisa de mais memória.
O que fazer?
ServidorServidor
ServidorServidor
JAVA
NoSQL
REDIS + Memória
Storage
Neste caso, aumentar a memória de um servidor
basta!
Problema: A aplicação não está atendendo todas as requisições
por conta de limitação do processamento.
O que fazer?
Servidor
Servidor
ServidorServidor
JAVA
NoSQL
REDIS + Memória
Storage
Dobramos a aplicação e adicionamos um balanceador
de carga! Voilá!
Servidor
JAVA
Servidor
Load
BalancerRequisição
Resposta
Servidor
Servidor
ServidorServidor
GAE
DataStore
GAE - MEMCACHE
Cloud
Storage
Servidor
GAE
Servidor
Cloud
NetworkingRequisição
Resposta
Visão usando a “plataforma digital” do google.
Servidor
ServidorServidor
GAE
DataStore
GAE - MEMCACHE
Servidor
GAE
Servidor
Cloud
NetworkingRequisição
Resposta
Indo ainda além… pense fora da caixa.
THANK
YOU FOR
YOUR
TIME!
Links úteis
● Google Cloud Platform Developers Portal: https://cloud.google.com/developers
● Google Developers Global Portal: https://developers.google.com
● Google Cloud Platform Products list: https://cloud.google.com/products/compute-engine
● Understanding Google APIs: https://fethidilmi.blogspot.com/2013/01/understandinggoogle-apis.html
Referências
● Google Cloud Platform: Quick Overview - Fethi Dilmi
● Google AppEngine: Desafios da adoção de cloud no mercado de seguros - Gustavo Concon
● Cloud Computing: De tendencia a realidade - Jose Papo

Pangea - Plataforma digital com Google Cloud Platform