Pangea - Plataforma digital com Google Cloud Platform

Post on 12-Apr-2017

553 views 0 download

Transcript of Pangea - Plataforma digital com Google Cloud Platform

Plataforma Digital com Google Cloud PlatformLevando sua arquitetura para as nuvens!

Collaborate. Innovate. Transform.

André Paulovicharquiteto 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

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