• Save
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (pt-BR)
Upcoming SlideShare
Loading in...5
×
 

Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (pt-BR)

on

  • 1,156 views

 

Statistics

Views

Total Views
1,156
Views on SlideShare
1,097
Embed Views
59

Actions

Likes
9
Downloads
0
Comments
2

4 Embeds 59

https://bluesoft.acelerato.com 32
https://twitter.com 18
http://www.linkedin.com 6
https://www.linkedin.com 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • This is a Title Slide with Picture slide ideal for including a picture with a brief title, subtitle and presenter information. <br /> To customize this slide with your own picture: <br /> 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. <br />
  • This is a Remote Speaker Picture slide ideal for including a picture with the speaker’s name and title and company. <br /> To Replace the Picture on this sample slide (this applies to all slides in this template that contain replaceable pictures) <br /> 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. <br /> 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. <br />
  • 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. <br /> To customize this slide with your own picture: <br /> 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. <br />
  • 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. <br /> To customize this slide with your own picture: <br /> 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. <br />
  • 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. <br /> To customize this slide with your own picture: <br /> 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. <br />
  • 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. <br /> To customize this slide with your own picture: <br /> 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. <br />

Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (pt-BR) Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (pt-BR) Presentation Transcript

  • 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. |