Plataforma Digital com Google Cloud PlatformLevando sua arquitetura para as nuvens!
Collaborate. Innovate. Transform.
André Paulovicharquiteto de softwares
[email protected] | @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
Cap
acid
ade
de T
I
Carga
Alocação de capacidades
Desperdício de capacidades
Falta de capacidades
Previsão de carga
Padrão de Crescimento de Capacidade de TI
CargaReduçã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
Cap
acid
ade
de T
I
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!
Servidor Servidor
Servidor Servidor
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
Servidor Servidor
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)
Servidor Servidor
Servidor Servidor
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?
Servidor Servidor
Servidor Servidor
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?
Servidor Servidor
Servidor Servidor
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
Servidor Servidor
JAVA
NoSQL
REDIS + Memória
Storage
Dobramos a aplicação e adicionamos um balanceador de carga! Voilá!
Servidor
JAVA
Servidor
LoadBalancerRequisição
Resposta
Servidor
Servidor
Servidor Servidor
GAE
DataStore
GAE - MEMCACHE
Cloud Storage
Servidor
GAE
Servidor
Cloud NetworkingRequisição
Resposta
Visão usando a “plataforma digital” do google.
Servidor
Servidor Servidor
GAE
DataStore
GAE - MEMCACHE
Servidor
GAE
Servidor
Cloud NetworkingRequisição
Resposta
Indo ainda além… pense fora da caixa.
THANKYOU FOR
YOURTIME!
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
Top Related