Digital Day BH - 19/09/205 - CI&T

Preview:

Citation preview

André Paulovich

Arquiteto de Softwares

ASPNET MVP 2011-2014

Arquitetando sistemas para obter o melhor da nuvem.

André Paulovichandrepg@ciandt.com | @andrepaulovich

MCP | MCTS | MCT | MCAD | MCSD.Net | MVP Asp.Net 2011-2014

Como é hoje?

Uso

Co

mp

uta

ção

Tempo

Uso

Inatividade

“Liga/Desliga“

• Cargas On/Off (ex.:. Job batch)• Desperdício da capacidade provisionada• Time to market pode ser retardado

Padrões de UsoImposto de rendaCadastro FIES

Uso

Co

mp

uta

ção

Tempo

“Crescimento Rápido“

• Serviços que precisam crescer e escalar• Crescer é um desafio grande na TI• Deployment complexo

Padrões de UsoWhatsappFacebookTwitter

Co

mp

uta

ção

Tempo

“Pico Imprevisível“

Uso

• Pico de demanda inesperada• Desempenho comprometido pelo pico• Difícil provisionar nos casos extremos

Padrões de UsoSite de Notícias“Earth Shake”

Co

mp

uta

ção

Tempo

Uso

“Pico Previsível“

• Serviços com micro sazonalidades• Picos devido a demandas periódicas• Complexidade da TI + desperdício

Padrões de UsoSistemas estudantisBancos

Mesmo “prevendo” você ainda tem um problema!

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

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

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

IPrevisão de carga

Escalável

Manutenível Disponível Escalável

Econômico

Comparativo simples!

https://awstcocalculator.com

Entenda o contexto

Big Users

Fonte: ProgrammableWeb

Clube dos Bilhões5+ Bilhões de Calls/Dia1+ Bilhões de Calls/Dia

A Internetdas coisas

E a exigência dos usuários é cada vez

MAIOR!!!

Evolução

Virtualização

Físico SaaSVirtual IaaS PaaS

Nuvem

35

Modelos

Seu Datacenter

Virtualization

O/S

Hardware

Network

Data

Applications

Firewall

Web Sites

Applications

Data

Serviços na Nuvem

Applications

Firewall Rules

Data

Virtual Network

Máquinas Virtuais

Virtual Network

Data

Applications

Firewall Rules

O/S

Quanto mais à direita, maior o foco no “negócio”

Cloud Services

90% das aplicações são assim.

Desafios arquiteturais

Posso pegar minha aplicação atual e publicá-la na nuvem para ter todas estas vantagens?

Ele continua sendo um

Porco!

“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 “recursos de nuvem” do google.

Servidor

Servidor Servidor

GAE

DataStore

GAE - MEMCACHE

Servidor

GAE

Servidor

Cloud NetworkingRequisição

Resposta

Indo ainda além… pense fora da caixa.

Comparando Nuvens!

• Não é tão simples.

• Esteja “por dentro” das vantagens específicas de cada nuvem.• Precificação• Modelo de cobrança• Tecnologias de plataforma e serviços

• Revisite sua arquitetura.• Seja flexível• Não tenha um escopo fechado

Perguntas?!

Por hoje é só pessoal!

Obrigado, velhinhos!

THANKYOU FOR

YOURTIME!