SlideShare une entreprise Scribd logo
1  sur  35
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
TDC 2014, HPC
Blueprints & Patterns de Arquitetura
Para Sistemas que Escalam Linearmente
Ricardo Ferreira
Principal Solutions Architect
Oracle FMW Architects Team (The A-Team)
08 de Agosto, 2014
The Developers Conference 2014, Trilha HPC
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Ricardo Ferreira
– Principal Solutions Architect, Oracle
Sobre o Palestrante
The Developers Conference 2014, Trilha HPC 2
@jricardoferreir
https://blogs.oracle.com/middlewareplace
www.linkedin.com/profile/view?id=13126927
www.ateam-oracle.com/a-team-chronicles
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
“Possuo um sistema que atualmente
suporta 500 TPS, executando numa
infra-estrutura de dois servidores de
última geração.
Visando dobrar a escalabilidade,
adicionei mais outros dois
servidores com a mesma
configuração, mas ao invés de
atingir 1000 TPS, o sistema fica em
torno de ~750 TPS...”
The Developers Conference 2014, Trilha HPC 3
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
“Meu sistema precisa executar
suas transações em uma latência
máxima de 250ms devido a
questões de SLA com o cliente.
Devido a um aumento da carga, vi
que mesmo depois de investir em
mais hardware, não consigo ter
uma latência previsível. A carga
aumenta e o SLA quebra...”
The Developers Conference 2014, Trilha HPC 4
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
“Meu negócio depende de uma
aplicação transacional crítica. Fazer
mais transações significa obter um
faturamento maior.
Não sei mais o que faço. Já dobrei a
infraestrutura atual, a equipe de
desenvolvimento otimizou o código
mas o throughput não melhora.”
The Developers Conference 2014, Trilha HPC 5
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• Escalabilidade
– Comportamento de um sistema quando a
carga total suportada aumenta a medida que
os recursos de hardware também
aumentam.
• Escalabilidade Linear
– Cenário onde a carga suportada aumenta e o
throughput também aumenta
proporcionalmente, porém mantendo
sempre a latência de cada transação.
• Escalabilidade Limite
– O limite no qual o sistema pára de escalar,
em decorrência do aumento da carga, com
ou sem aumento dos recursos de hardware.
Gargalo puro!
Alinhando os Conceitos sobre Escalabilidade
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Anatomia de uma Aplicação Transacional Típica
Visão Lógica de uma Arquitetura de Software Projetada para OLTP
Camada de Lógica
& de Negócio
Camada de
Apresentação
Camada de Dados
& de Persistência
Model-View-Controller, Front
Controller, Composite View,
Intercepting Filter, Service
Locator, Transfer Object, View
Helper, Business Delegate
JavaServer Faces, Tapestry,
Spring MVC, ADF, Seam, UI,
Struts, Wicket, Play, GWT
Session Facade, Application
Service, Transfer Object, Value
List Handler, Composite Entity,
Business Object, Data Access
Object, Domain Store, Broker
Enterprise JavaBeans, POJO,
Spring, Message Driven-Bean,
RMI, Web Services, REST
Data Access Object, Transfer
Object, Domain Store, Web
Service Broker, Decorator,
Proxy, Flyweight, Command,
Memento, Adapter, Bridge
Java Persistence API, Toplink,
EclipseLink, Hibernate, Kodo,
iBatis, OJB, Prevayler,
Speedo
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Anatomia de uma Aplicação Transacional Típica
Visão Física de uma Arquitetura de Software Projetada para OLTP
AppServer Cluster “A”
AppServer Cluster “B”
DBMS
Cluster
I/O I/O
LoadBalancer
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Técnicas de Escalabilidade em Aplicações Transacionais
Escalabilidade Vertical: Mais Hardware significa Mais Processamento
1 Gb/s Ethernet | 96 GB de RAM
16 Cores (2x Intel Xeon 8 Cores)
3 Gb/s Ethernet | 256 GB de RAM
16 Cores (2x Intel Xeon 8 Cores)
Upgrade
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Curiosidade: Serialização versus Throughput
• Servidor com 04 cores Intel Xeon
– 1 GB/s Ethernet = ~128MB/s
– Na teoria: ~645K Objetos / Seg
– Na prática: ~600 Objetos / Seg
• CPU se torna o principal gargalo
– Serialização consume vários clocks
– Threads precisam estar dedicados
– Solução: colocar vários servidores em
cluster para distribuir a carga
public class Customer
implements Serializable {
private UUID custId;
private String name;
private Date birthDate;
private long lastUsage;
}
~208 Bytes
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Técnicas de Escalabilidade em Aplicações Transacionais
Escalabilidade Horizontal: Mais Servidores para Distribuição da Carga
AppServer Cluster “A”
AppServer Cluster “B”
DBMS
Cluster
I/O I/O
LoadBalancer
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Técnicas de Escalabilidade em Aplicações Transacionais
Escalabilidade Horizontal: Mais Servidores para Distribuição da Carga
DBMS
Cluster
I/O I/O
LoadBalancer
AppServer Cluster “A”
AppServer Cluster “B”
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Curiosidade: Transações versus Threading
• Atomicidade
• Consistência
• Isolamento
• Durabilidade
 DBMS é confiável devido ao ACID
– Confiabilidade vem sempre antes de performance.
– Este é um trade-off arquitetural clássico.
 Isolamento é o principal atributo
– Sem ele os demais atributos não fazem sentido.
– Para isolar as transações é necessário serializar.
– Serialização limita throughput e causa contenção de
I/O no pool de threads das aplicações.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Arquiteturas baseadas
em DBMS funcionaram
bem durante anos. Que
espécie de palhaçada é
essa agora ???
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
#1 Pattern
Escalando as Aplicações Junto com o Volume de Dados
The Developers Conference 2014, Trilha HPC 15
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Contexto: Dados Atualmente Residem no DBMS
Por quê as Aplicações precisam do DBMS para Manipular os Dados?
Switch de Rede
I/O
I/O
I/O
I/O
BasesBases
de Dadosde Dados
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Problema: Canal de Rede não Acompanha Crescimento
Distância entre as Aplicações e os Dados Provoca Perda de Throughput
Switch de Rede
I/O
I/O
I/O
I/O
BasesBases
de Dadosde Dados
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Solução: In-Memory Data Grid Conectado às Aplicações
Dados devem Residir no In-Memory Data Grid e Dormir no DBMS/Storage
Escalar Escalar
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
#2 Pattern
Remoção do I/O do Caminho Crítico das Transações
The Developers Conference 2014, Trilha HPC 19
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Contexto: Sincronização entre Aplicações e o DBMS
Por quê precisamos do DBMS para obter Consistência de Dados?
BasesBases
de Dadosde Dados
BasesBases
de Dadosde Dados
2PC 2PC
Sincronismo de Dados através de Replicação
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Problema: Muito Sincronismo Cria Contenção de I/O
Pool de Threads da Aplicação em Espera pela Confirmação do DBMS
TX 1
TX 2
TX 3
TX 4
TX 5
TX 6
TX 7
TX 8
TX 9
BasesBases
de Dadosde Dados
I/O
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Solução: Transações Efetuadas de Forma Assíncrona
Pool de Threads mais Eficiente sem as Contenções de I/O do DBMS
BasesBases
de Dadosde Dados
AsyncWrite
Queueing
AsyncWrite
Queueing
AplicaçãoAplicação In-MemoryIn-Memory
Data GridData Grid
Pool de
Threads
Pool de
Threads
Pool de
Threads
Pool de
Threads
Pool de
Threads
Pool de
Threads
Pool de
Threads
Pool de
Threads
Pool de
Threads
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
#3 Pattern
Maior Controle sobre as Pausas de GC da VM
The Developers Conference 2014, Trilha HPC 23
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Contexto: Plataformas baseadas em VM usam GC
Por quê uma VM fica em Pausa Utilizando a CPU somente para GC?
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Problema: Pausas Frequentes de GC Aumenta Latência
Escalabilidade Linear Comprometida devido a Latências Muito Altas
348ms
125ms 187ms 31ms 5ms
696ms
304ms 331ms 54ms 7ms
232ms
87ms 102ms 38ms 5ms
Exemplos de SLA para a Transação
Abaixo ou Até 250ms Acima de 250ms
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Solução: Offloading de Objetos da Memória Heap
Redução do Footprint da VM através de Objetos Alocados Off-Heap
Off-Heap da Sessão HTTPOff-Heap da Sessão HTTP Off-Heap de Dados do IMDGOff-Heap de Dados do IMDG
In-MemoryIn-Memory
Data GridData Grid
Heap
Média de 8GB
RAM
Mais de 64GB
SSD/HD
Mais de 1TB
Storage
AplicaçãoAplicação Sessão
HTTP
In-Memory Data GridIn-Memory Data Grid
~65% de Offload *
-Xms768m -Xmx768m
* Aplicação Java EE baseada em JSF, CDI, MyFaces, Tomahawk & RestEasy
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Solução: Usando G1 do Oracle JDK 1.7.4+
Tempo de GC mais Previsível usando o Algoritmo Garbage First
java -server –d64 –Xms8g –Xmx8g
–XX:UseConcMarkSweepGC –XX:UseTLAB
-XX:+AggressiveOpts –XX:NewRatio=2
-XX:SurvivorRatio=8 –XX:NewSize=4m
–XX:MaxNewSize=4 –XX:MaxPermSize=8
-XX:UseAltSigns -XX:+UseLargePages
-XX:LargePageSizeInBytes=8192m
java –Xms8g –Xmx8g –XX:+UseG1GC
-XX:MaxGCPauseMillis=250ms
GC Tradicional (Ex: CMS) GC usando G1
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
#4 Pattern
Processamento Analítico Concomitante com as Transações
The Developers Conference 2014, Trilha HPC 28
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Contexto: Análise de Dados hoje é feita Post-Mortem
Por quê a Análise é feita Somente Depois da Gravação dos Dados?
BasesBases
de Dadosde Dados
SELECT * FROM BID
WHERE ID = 1 AND...
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Problema: Volume de Dados Inviabiliza OLAP Tradicional
Terabytes/Petabytes de Dados já não Cabem em Simples Janelas Batch
ETL
ETL
ETL
ETL
ExtractExtract
Tabelas deTabelas de
StagingStaging
BI & AnalyticsBI & Analytics
Captura
(~24 horas)
Agregação
(~8 horas)
SQL
SQL
SQL
SQL
SQL
SQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Solução: Processamento Contínuo das Transações
CEP Analisando Continuamente Eventos do In-Memory Data Grid
In-Memory Data GridIn-Memory Data Grid
CEPCEP
Async
Write
Async
Event
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Leitura Recomendada
Architecting Infinitely Scalable Systems
“Life Beyond Distributed Transactions: An Apostate’s Opinion”
http://www.cidrdb.org/cidr2007/papers/cidr07p15.pdf
Pat Helland | SalesForce
Distinguished Software Architect
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Vídeo Recomendado
Scalability with Distributed Data Grids
“Google Talks 2007 Event: Oracle Coherence Data Grid”
http://www.youtube.com/watch?v=W3W10J3uWxY
Cameron Purdy | Oracle
VP of Java Development
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Vídeo Recomendado
Solving Business Crisis with Fast Data
“Big/Fast Data World Keynote at Innovation World 2013”
http://www.youtube.com/watch?v=wALeG86puGs
Dr. John Bates | Software AG
Chief Marketing Officer
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Contenu connexe

Tendances

Criando Aplicações Serverless - ARC302 - Sao Paulo Summit
Criando Aplicações Serverless -  ARC302 - Sao Paulo SummitCriando Aplicações Serverless -  ARC302 - Sao Paulo Summit
Criando Aplicações Serverless - ARC302 - Sao Paulo SummitAmazon Web Services
 
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServeAWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServeAmazon Web Services LATAM
 
Lean enterprise: Princípios que estao transformando a Inovaçao Corporativa
Lean enterprise: Princípios que estao transformando a Inovaçao Corporativa Lean enterprise: Princípios que estao transformando a Inovaçao Corporativa
Lean enterprise: Princípios que estao transformando a Inovaçao Corporativa Amazon Web Services LATAM
 
Introdução a Cloud Computing com Amazon Web Services
Introdução a Cloud Computing com Amazon Web ServicesIntrodução a Cloud Computing com Amazon Web Services
Introdução a Cloud Computing com Amazon Web ServicesJose Papo, MSc
 
SAP na Nuvem da AWS - Benefícios de Negócio
SAP na Nuvem da AWS - Benefícios de NegócioSAP na Nuvem da AWS - Benefícios de Negócio
SAP na Nuvem da AWS - Benefícios de NegócioAmazon Web Services LATAM
 
AWS Webinar Series Brasil: Como sair de seu datacenter e modernizar cargas de...
AWS Webinar Series Brasil: Como sair de seu datacenter e modernizar cargas de...AWS Webinar Series Brasil: Como sair de seu datacenter e modernizar cargas de...
AWS Webinar Series Brasil: Como sair de seu datacenter e modernizar cargas de...Amazon Web Services LATAM
 
Otimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWSOtimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWSAmazon Web Services LATAM
 
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdfAWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdfAmazon Web Services LATAM
 
Webinar: Como explorar os recursos de aprendizagem da AWS
Webinar: Como explorar os recursos de aprendizagem da AWSWebinar: Como explorar os recursos de aprendizagem da AWS
Webinar: Como explorar os recursos de aprendizagem da AWSAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAmazon Web Services LATAM
 
Explorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon AuroraExplorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon AuroraAmazon Web Services LATAM
 
17h30 aws-databases-summit
17h30   aws-databases-summit17h30   aws-databases-summit
17h30 aws-databases-summitinfolive
 
Instâncias spot para ambientes de produção sem comprometer a disponibilidade
Instâncias spot para ambientes de produção sem comprometer a disponibilidadeInstâncias spot para ambientes de produção sem comprometer a disponibilidade
Instâncias spot para ambientes de produção sem comprometer a disponibilidadeAmazon Web Services LATAM
 

Tendances (20)

Criando Aplicações Serverless - ARC302 - Sao Paulo Summit
Criando Aplicações Serverless -  ARC302 - Sao Paulo SummitCriando Aplicações Serverless -  ARC302 - Sao Paulo Summit
Criando Aplicações Serverless - ARC302 - Sao Paulo Summit
 
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServeAWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
AWS Initiate week 2020 - Adoção de Nuvem com AWS ProServe
 
Paa s evento
Paa s eventoPaa s evento
Paa s evento
 
Lean enterprise: Princípios que estao transformando a Inovaçao Corporativa
Lean enterprise: Princípios que estao transformando a Inovaçao Corporativa Lean enterprise: Princípios que estao transformando a Inovaçao Corporativa
Lean enterprise: Princípios que estao transformando a Inovaçao Corporativa
 
Falando de TCO na Nuvem AWS
Falando de TCO na Nuvem AWSFalando de TCO na Nuvem AWS
Falando de TCO na Nuvem AWS
 
Introdução a Cloud Computing com Amazon Web Services
Introdução a Cloud Computing com Amazon Web ServicesIntrodução a Cloud Computing com Amazon Web Services
Introdução a Cloud Computing com Amazon Web Services
 
SAP na Nuvem da AWS - Benefícios de Negócio
SAP na Nuvem da AWS - Benefícios de NegócioSAP na Nuvem da AWS - Benefícios de Negócio
SAP na Nuvem da AWS - Benefícios de Negócio
 
Bancos de Dados na AWS
Bancos de Dados na AWSBancos de Dados na AWS
Bancos de Dados na AWS
 
AWS Webinar Series Brasil: Como sair de seu datacenter e modernizar cargas de...
AWS Webinar Series Brasil: Como sair de seu datacenter e modernizar cargas de...AWS Webinar Series Brasil: Como sair de seu datacenter e modernizar cargas de...
AWS Webinar Series Brasil: Como sair de seu datacenter e modernizar cargas de...
 
Otimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWSOtimizando e reduzindo custos na Nuvem da AWS
Otimizando e reduzindo custos na Nuvem da AWS
 
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdfAWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
AWS Initiate week 2020 - Security Framework: jornada de segurança na nuvem.pdf
 
Construindo um Data Lake na AWS
Construindo um Data Lake na AWSConstruindo um Data Lake na AWS
Construindo um Data Lake na AWS
 
Webinar: Como explorar os recursos de aprendizagem da AWS
Webinar: Como explorar os recursos de aprendizagem da AWSWebinar: Como explorar os recursos de aprendizagem da AWS
Webinar: Como explorar os recursos de aprendizagem da AWS
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
Explorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon AuroraExplorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon Aurora
 
17h30 aws-databases-summit
17h30   aws-databases-summit17h30   aws-databases-summit
17h30 aws-databases-summit
 
Padrões de Arquitetura na Nuvem da AWS
Padrões de Arquitetura na Nuvem da AWSPadrões de Arquitetura na Nuvem da AWS
Padrões de Arquitetura na Nuvem da AWS
 
Instâncias spot para ambientes de produção sem comprometer a disponibilidade
Instâncias spot para ambientes de produção sem comprometer a disponibilidadeInstâncias spot para ambientes de produção sem comprometer a disponibilidade
Instâncias spot para ambientes de produção sem comprometer a disponibilidade
 
Introducao à Nuvem da Amazon Web Services
Introducao à Nuvem da Amazon Web ServicesIntroducao à Nuvem da Amazon Web Services
Introducao à Nuvem da Amazon Web Services
 
[Webinar] AWS Storage Day - Português
[Webinar] AWS Storage Day - Português[Webinar] AWS Storage Day - Português
[Webinar] AWS Storage Day - Português
 

Similaire à Blueprints e Padrões de Arquitetura para Sistemas que Escalam Linearmente

Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLMySQL Brasil
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaMySQL Brasil
 
Guia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoGuia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoMySQL Brasil
 
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...MySQL Brasil
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014MySQL Brasil
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014MySQL Brasil
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15MySQL Brasil
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...MySQL Brasil
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...iMasters
 
Construção da Plataforma de dados Autônoma e em Escala
Construção da Plataforma de dados Autônoma e em EscalaConstrução da Plataforma de dados Autônoma e em Escala
Construção da Plataforma de dados Autônoma e em Escalarkwseijuurou
 
Soluçõo Oracle Cloud VMware
Soluçõo Oracle Cloud VMwareSoluçõo Oracle Cloud VMware
Soluçõo Oracle Cloud VMwareOracle
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQLMySQL Brasil
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014MySQL Brasil
 
Oracle Service Bus - HP Brazil
Oracle Service Bus - HP BrazilOracle Service Bus - HP Brazil
Oracle Service Bus - HP BrazilNorberto Enomoto
 
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPAlta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPMySQL Brasil
 
O que você gostaria de saber sobre Virtualização, mas não tinha para quem per...
O que você gostaria de saber sobre Virtualização, mas não tinha para quem per...O que você gostaria de saber sobre Virtualização, mas não tinha para quem per...
O que você gostaria de saber sobre Virtualização, mas não tinha para quem per...Matheus Ramos
 

Similaire à Blueprints e Padrões de Arquitetura para Sistemas que Escalam Linearmente (20)

Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQL
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e Java
 
Guia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoGuia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produto
 
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
TRIO IT - Resumo
TRIO IT - ResumoTRIO IT - Resumo
TRIO IT - Resumo
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
 
Construção da Plataforma de dados Autônoma e em Escala
Construção da Plataforma de dados Autônoma e em EscalaConstrução da Plataforma de dados Autônoma e em Escala
Construção da Plataforma de dados Autônoma e em Escala
 
Soluçõo Oracle Cloud VMware
Soluçõo Oracle Cloud VMwareSoluçõo Oracle Cloud VMware
Soluçõo Oracle Cloud VMware
 
Arquiteturas de referência MySQL
Arquiteturas de referência MySQLArquiteturas de referência MySQL
Arquiteturas de referência MySQL
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Oracle Service Bus - HP Brazil
Oracle Service Bus - HP BrazilOracle Service Bus - HP Brazil
Oracle Service Bus - HP Brazil
 
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPAlta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
 
O que você gostaria de saber sobre Virtualização, mas não tinha para quem per...
O que você gostaria de saber sobre Virtualização, mas não tinha para quem per...O que você gostaria de saber sobre Virtualização, mas não tinha para quem per...
O que você gostaria de saber sobre Virtualização, mas não tinha para quem per...
 

Blueprints e Padrões de Arquitetura para Sistemas que Escalam Linearmente

  • 1. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | TDC 2014, HPC Blueprints & Patterns de Arquitetura Para Sistemas que Escalam Linearmente Ricardo Ferreira Principal Solutions Architect Oracle FMW Architects Team (The A-Team) 08 de Agosto, 2014 The Developers Conference 2014, Trilha HPC
  • 2. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Ricardo Ferreira – Principal Solutions Architect, Oracle Sobre o Palestrante The Developers Conference 2014, Trilha HPC 2 @jricardoferreir https://blogs.oracle.com/middlewareplace www.linkedin.com/profile/view?id=13126927 www.ateam-oracle.com/a-team-chronicles
  • 3. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | “Possuo um sistema que atualmente suporta 500 TPS, executando numa infra-estrutura de dois servidores de última geração. Visando dobrar a escalabilidade, adicionei mais outros dois servidores com a mesma configuração, mas ao invés de atingir 1000 TPS, o sistema fica em torno de ~750 TPS...” The Developers Conference 2014, Trilha HPC 3
  • 4. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | “Meu sistema precisa executar suas transações em uma latência máxima de 250ms devido a questões de SLA com o cliente. Devido a um aumento da carga, vi que mesmo depois de investir em mais hardware, não consigo ter uma latência previsível. A carga aumenta e o SLA quebra...” The Developers Conference 2014, Trilha HPC 4
  • 5. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | “Meu negócio depende de uma aplicação transacional crítica. Fazer mais transações significa obter um faturamento maior. Não sei mais o que faço. Já dobrei a infraestrutura atual, a equipe de desenvolvimento otimizou o código mas o throughput não melhora.” The Developers Conference 2014, Trilha HPC 5
  • 6. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | • Escalabilidade – Comportamento de um sistema quando a carga total suportada aumenta a medida que os recursos de hardware também aumentam. • Escalabilidade Linear – Cenário onde a carga suportada aumenta e o throughput também aumenta proporcionalmente, porém mantendo sempre a latência de cada transação. • Escalabilidade Limite – O limite no qual o sistema pára de escalar, em decorrência do aumento da carga, com ou sem aumento dos recursos de hardware. Gargalo puro! Alinhando os Conceitos sobre Escalabilidade
  • 7. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Anatomia de uma Aplicação Transacional Típica Visão Lógica de uma Arquitetura de Software Projetada para OLTP Camada de Lógica & de Negócio Camada de Apresentação Camada de Dados & de Persistência Model-View-Controller, Front Controller, Composite View, Intercepting Filter, Service Locator, Transfer Object, View Helper, Business Delegate JavaServer Faces, Tapestry, Spring MVC, ADF, Seam, UI, Struts, Wicket, Play, GWT Session Facade, Application Service, Transfer Object, Value List Handler, Composite Entity, Business Object, Data Access Object, Domain Store, Broker Enterprise JavaBeans, POJO, Spring, Message Driven-Bean, RMI, Web Services, REST Data Access Object, Transfer Object, Domain Store, Web Service Broker, Decorator, Proxy, Flyweight, Command, Memento, Adapter, Bridge Java Persistence API, Toplink, EclipseLink, Hibernate, Kodo, iBatis, OJB, Prevayler, Speedo
  • 8. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Anatomia de uma Aplicação Transacional Típica Visão Física de uma Arquitetura de Software Projetada para OLTP AppServer Cluster “A” AppServer Cluster “B” DBMS Cluster I/O I/O LoadBalancer
  • 9. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Técnicas de Escalabilidade em Aplicações Transacionais Escalabilidade Vertical: Mais Hardware significa Mais Processamento 1 Gb/s Ethernet | 96 GB de RAM 16 Cores (2x Intel Xeon 8 Cores) 3 Gb/s Ethernet | 256 GB de RAM 16 Cores (2x Intel Xeon 8 Cores) Upgrade
  • 10. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Curiosidade: Serialização versus Throughput • Servidor com 04 cores Intel Xeon – 1 GB/s Ethernet = ~128MB/s – Na teoria: ~645K Objetos / Seg – Na prática: ~600 Objetos / Seg • CPU se torna o principal gargalo – Serialização consume vários clocks – Threads precisam estar dedicados – Solução: colocar vários servidores em cluster para distribuir a carga public class Customer implements Serializable { private UUID custId; private String name; private Date birthDate; private long lastUsage; } ~208 Bytes
  • 11. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Técnicas de Escalabilidade em Aplicações Transacionais Escalabilidade Horizontal: Mais Servidores para Distribuição da Carga AppServer Cluster “A” AppServer Cluster “B” DBMS Cluster I/O I/O LoadBalancer
  • 12. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Técnicas de Escalabilidade em Aplicações Transacionais Escalabilidade Horizontal: Mais Servidores para Distribuição da Carga DBMS Cluster I/O I/O LoadBalancer AppServer Cluster “A” AppServer Cluster “B”
  • 13. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Curiosidade: Transações versus Threading • Atomicidade • Consistência • Isolamento • Durabilidade  DBMS é confiável devido ao ACID – Confiabilidade vem sempre antes de performance. – Este é um trade-off arquitetural clássico.  Isolamento é o principal atributo – Sem ele os demais atributos não fazem sentido. – Para isolar as transações é necessário serializar. – Serialização limita throughput e causa contenção de I/O no pool de threads das aplicações.
  • 14. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Arquiteturas baseadas em DBMS funcionaram bem durante anos. Que espécie de palhaçada é essa agora ???
  • 15. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | #1 Pattern Escalando as Aplicações Junto com o Volume de Dados The Developers Conference 2014, Trilha HPC 15
  • 16. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Contexto: Dados Atualmente Residem no DBMS Por quê as Aplicações precisam do DBMS para Manipular os Dados? Switch de Rede I/O I/O I/O I/O BasesBases de Dadosde Dados
  • 17. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Problema: Canal de Rede não Acompanha Crescimento Distância entre as Aplicações e os Dados Provoca Perda de Throughput Switch de Rede I/O I/O I/O I/O BasesBases de Dadosde Dados
  • 18. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Solução: In-Memory Data Grid Conectado às Aplicações Dados devem Residir no In-Memory Data Grid e Dormir no DBMS/Storage Escalar Escalar
  • 19. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | #2 Pattern Remoção do I/O do Caminho Crítico das Transações The Developers Conference 2014, Trilha HPC 19
  • 20. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Contexto: Sincronização entre Aplicações e o DBMS Por quê precisamos do DBMS para obter Consistência de Dados? BasesBases de Dadosde Dados BasesBases de Dadosde Dados 2PC 2PC Sincronismo de Dados através de Replicação
  • 21. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Problema: Muito Sincronismo Cria Contenção de I/O Pool de Threads da Aplicação em Espera pela Confirmação do DBMS TX 1 TX 2 TX 3 TX 4 TX 5 TX 6 TX 7 TX 8 TX 9 BasesBases de Dadosde Dados I/O
  • 22. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Solução: Transações Efetuadas de Forma Assíncrona Pool de Threads mais Eficiente sem as Contenções de I/O do DBMS BasesBases de Dadosde Dados AsyncWrite Queueing AsyncWrite Queueing AplicaçãoAplicação In-MemoryIn-Memory Data GridData Grid Pool de Threads Pool de Threads Pool de Threads Pool de Threads Pool de Threads Pool de Threads Pool de Threads Pool de Threads Pool de Threads
  • 23. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | #3 Pattern Maior Controle sobre as Pausas de GC da VM The Developers Conference 2014, Trilha HPC 23
  • 24. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Contexto: Plataformas baseadas em VM usam GC Por quê uma VM fica em Pausa Utilizando a CPU somente para GC?
  • 25. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Problema: Pausas Frequentes de GC Aumenta Latência Escalabilidade Linear Comprometida devido a Latências Muito Altas 348ms 125ms 187ms 31ms 5ms 696ms 304ms 331ms 54ms 7ms 232ms 87ms 102ms 38ms 5ms Exemplos de SLA para a Transação Abaixo ou Até 250ms Acima de 250ms
  • 26. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Solução: Offloading de Objetos da Memória Heap Redução do Footprint da VM através de Objetos Alocados Off-Heap Off-Heap da Sessão HTTPOff-Heap da Sessão HTTP Off-Heap de Dados do IMDGOff-Heap de Dados do IMDG In-MemoryIn-Memory Data GridData Grid Heap Média de 8GB RAM Mais de 64GB SSD/HD Mais de 1TB Storage AplicaçãoAplicação Sessão HTTP In-Memory Data GridIn-Memory Data Grid ~65% de Offload * -Xms768m -Xmx768m * Aplicação Java EE baseada em JSF, CDI, MyFaces, Tomahawk & RestEasy
  • 27. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Solução: Usando G1 do Oracle JDK 1.7.4+ Tempo de GC mais Previsível usando o Algoritmo Garbage First java -server –d64 –Xms8g –Xmx8g –XX:UseConcMarkSweepGC –XX:UseTLAB -XX:+AggressiveOpts –XX:NewRatio=2 -XX:SurvivorRatio=8 –XX:NewSize=4m –XX:MaxNewSize=4 –XX:MaxPermSize=8 -XX:UseAltSigns -XX:+UseLargePages -XX:LargePageSizeInBytes=8192m java –Xms8g –Xmx8g –XX:+UseG1GC -XX:MaxGCPauseMillis=250ms GC Tradicional (Ex: CMS) GC usando G1
  • 28. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | #4 Pattern Processamento Analítico Concomitante com as Transações The Developers Conference 2014, Trilha HPC 28
  • 29. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Contexto: Análise de Dados hoje é feita Post-Mortem Por quê a Análise é feita Somente Depois da Gravação dos Dados? BasesBases de Dadosde Dados SELECT * FROM BID WHERE ID = 1 AND...
  • 30. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Problema: Volume de Dados Inviabiliza OLAP Tradicional Terabytes/Petabytes de Dados já não Cabem em Simples Janelas Batch ETL ETL ETL ETL ExtractExtract Tabelas deTabelas de StagingStaging BI & AnalyticsBI & Analytics Captura (~24 horas) Agregação (~8 horas) SQL SQL SQL SQL SQL SQL
  • 31. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Solução: Processamento Contínuo das Transações CEP Analisando Continuamente Eventos do In-Memory Data Grid In-Memory Data GridIn-Memory Data Grid CEPCEP Async Write Async Event
  • 32. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Leitura Recomendada Architecting Infinitely Scalable Systems “Life Beyond Distributed Transactions: An Apostate’s Opinion” http://www.cidrdb.org/cidr2007/papers/cidr07p15.pdf Pat Helland | SalesForce Distinguished Software Architect
  • 33. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Vídeo Recomendado Scalability with Distributed Data Grids “Google Talks 2007 Event: Oracle Coherence Data Grid” http://www.youtube.com/watch?v=W3W10J3uWxY Cameron Purdy | Oracle VP of Java Development
  • 34. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Vídeo Recomendado Solving Business Crisis with Fast Data “Big/Fast Data World Keynote at Innovation World 2013” http://www.youtube.com/watch?v=wALeG86puGs Dr. John Bates | Software AG Chief Marketing Officer
  • 35. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

Notes de l'éditeur

  1. This is a Title Slide with Picture slide ideal for including a picture with a brief title, subtitle and presenter information. To customize this slide with your own picture: Right-click the slide area and choose Format Background from the pop-up menu. From the Fill menu, click Picture and texture fill. Under Insert from: click File. Locate your new picture and click Insert.
  2. This is a Remote Speaker Picture slide ideal for including a picture with the speaker’s name and title and company. To Replace the Picture on this sample slide (this applies to all slides in this template that contain replaceable pictures) Select the sample picture and press Delete. Click the icon inside the shape to open the Insert Picture dialog box. Navigate to the location where the picture is stored, select desired picture and click on the Insert button to fit the image proportionally within the shape. Note: Do not right-click the image to change the picture inside the picture placeholder. This will change the frame size of the picture placeholder. Instead, follow the steps outlined above.
  3. This is a Section Header with Picture slide ideal for including a picture with a brief title and optional subtitle. This slide can also be used as a Q and A slide. To customize this slide with your own picture: Right-click the slide area and choose Format Background from the pop-up menu. From the Fill menu, click Picture and texture fill. Under Insert from: click File. Locate your new picture and click Insert.
  4. This is a Section Header with Picture slide ideal for including a picture with a brief title and optional subtitle. This slide can also be used as a Q and A slide. To customize this slide with your own picture: Right-click the slide area and choose Format Background from the pop-up menu. From the Fill menu, click Picture and texture fill. Under Insert from: click File. Locate your new picture and click Insert.
  5. This is a Section Header with Picture slide ideal for including a picture with a brief title and optional subtitle. This slide can also be used as a Q and A slide. To customize this slide with your own picture: Right-click the slide area and choose Format Background from the pop-up menu. From the Fill menu, click Picture and texture fill. Under Insert from: click File. Locate your new picture and click Insert.
  6. This is a Section Header with Picture slide ideal for including a picture with a brief title and optional subtitle. This slide can also be used as a Q and A slide. To customize this slide with your own picture: Right-click the slide area and choose Format Background from the pop-up menu. From the Fill menu, click Picture and texture fill. Under Insert from: click File. Locate your new picture and click Insert.