Arquitetura de um sistema crítico de alta disponibilidade com soluções open source
-
Upload
danieldestro -
Category
Technology
-
view
7.276 -
download
3
description
Transcript of Arquitetura de um sistema crítico de alta disponibilidade com soluções open source
![Page 1: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/1.jpg)
![Page 2: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/2.jpg)
QCon São Paulo 2011
Arquitetura de um sistema crítico de alta disponibilidade com
soluções open source
![Page 3: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/3.jpg)
Palestrante
Daniel Destro do CarmoCiências da Computação (PUC/SP – 97/2000)MBA em TI (IPT/USP)12 anos atuando em TI (certificado SCJP, SCEA)
Desenvolvimento, consultoria e treinamentoArtigos publicados: GUJ e Java MagazinePalestras: Conexão Java e Just JavaAtualmente no SPC Brasil
Arquiteto de soluções / Infraestrutura
![Page 4: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/4.jpg)
SPC Brasil
Confederação Nacional dos Dirigentes LojistasFormada pelas Câmaras de Dirigentes Lojistas (CDL)
SPC BrasilSistema de informação das CDLs (+ de 2.200)Todas as capitais e principais cidadesInformação de crédito de PF e PJProdutos para o mercado de crédito
![Page 5: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/5.jpg)
SPC Brasil
Breve históricoSistema antigo escrito em Oracle Web Toolkit (PL/SQL)
Muitos problemasTrabalhoso, ruim de manter e escalar
Novo sistema escrito em Java 6Feito a partir do zeroNova especificação de negócio
![Page 6: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/6.jpg)
SPC Brasil
![Page 7: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/7.jpg)
SPC Brasil
Em números
300.000 clientes em todo Brasil
+ de 200.000 logins diários (48.000 operadores)
300.000 consultas por dia (pico de + 500 mil)Média de 15 e pico de 30 consultas por segundoHorários críticos das 9h-11h e das 15-17h
![Page 8: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/8.jpg)
SPC Brasil
Mais números
Banco de dados com 150 milhões de CPFse 18 milhões de CNPJs
Log de consultas chega a 1 bilhão de registros
2 Terabytes de dados em storage rápido (FC)
![Page 9: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/9.jpg)
SPC Brasil
Outras necessidades
Intensa troca de informações com parceiros
Carregamento e tratamento de muitas informações
Processamento offline (em lote) – consulta, relatório, …
Sistema crítico 24x7 com baixo tempo de resposta
![Page 10: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/10.jpg)
Solução Adotada
![Page 11: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/11.jpg)
Solução Adotada
AplicaçãoBaseada em soluções livres (open source)
Escolha gerencial para redução de custos
Soluções de mercado altamente utilizadas e confiáveis
Banco de dadosOracle 10g RAC (cluster)
![Page 12: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/12.jpg)
Solução Adotada
Oracle 10g RAC3 nós no clusterCrescimento de 50 gigas por mêsRodando sobre AIXMonitoração com Grid ControlReplicação dos dados com Data Guard (físico)
Datacenters separadados geograficamente
![Page 13: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/13.jpg)
Solução Adotada
Plataforma de desenvolvimento e runtimeTecnologia Java (versão 6) / JEEFrameworks: Spring e Hibernate (ejbless)
Lucene, Quartz, JBoss Netty,Apache Commons, XStream,Display Tag, Sitemesh, JAX-WS, etc
Servidores Web: Apache + JettyTestes: JUnit, JMeter
![Page 14: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/14.jpg)
Solução Adotada
Plataforma de desenvolvimento e runtimeCache: EhCache, MemcachedLoad balancer: HAProxyJMS: Apache ActiveMQSO: Red Hat Linux (server)Desenvolvimento: Eclipse + Git + Ubuntu Linux
![Page 15: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/15.jpg)
Servidores Web
Apache HTTP ServerPrecisa de motivos? Alguém sugere outro?
JettyContainer web JavaSimples, leve e eficienteCustomizável e extensívelFaz uso de IO assíncrono (NIO)Baixo consumo de memória e CPUUsado no Google App Engine (GAE)
![Page 16: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/16.jpg)
Frameworks
Spring + HibernateDupla é ótima alternativa ao EJBSimples de usar, poderoso e flexívelÓtimo suporte a IoC / DI, transações, etcGerenciamento do ciclo de vida dos beansIntegração com outros frameworksControle de segurança extensível com Spring SecurityPermite uso de aspectos (AOP)
![Page 17: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/17.jpg)
Cache
EhCacheDados pouco voláteis, mas muito acessadosReduzir acesso ao BD e melhorar tempo de resposta
MemcachedCache distribuido de objetos em memóriaVoltado para acelerar aplicações web dinâmicasGuarda pares de chave/valor de dados arbitráriosTempo de acesso O(1)Expiração dos dados armazenados
![Page 18: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/18.jpg)
Load Balancer
ApplianceHardware, em geral caro – cuida da porta de entradaFaz o load balance entre servidores físicos
HAProxySoftware de load balanceLeve, rápido e configurávelEstatísticas de uso
![Page 19: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/19.jpg)
Comunicação
JBoss NettyFramework para comunicação via rede (socket)Modelo baseado em eventos assíncronosAlta performance e escalabilidadeFácil desenvolvimento (handlers)Controle no número de workers
![Page 20: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/20.jpg)
Mensageria
Apache ActiveMQUsa protocolo OpenWire para Java (rápido)Suporte para Spring FrameworkPersistência com alto desempenho usando journalSuporta clusterização (modo master-slave)Oferece interface via API REST
![Page 21: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/21.jpg)
Indexação
Apache LuceneUsado para indexar e pesquisar dados de consumidores
150 milhões de CPFs e 18 milhões de CNPJs
QuartzAgendamento de processosIntegração com SpringFacilidade de uso
![Page 22: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/22.jpg)
Infraestruturae Arquitetura
![Page 23: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/23.jpg)
Alta disponibilidade
Maiores preocupaçõesBaixo tempo de respostaMinimizar consumo de recursosReduzir downtime (programado ou não)Atualização de versão em plena operação (sem parada)Escalável para atender crescimento da demanda
Estrutura foi de 2 para 4 servers (8 para 32 Gb RAM)Ter redundância de serviços (contingenciamento)Monitorar todos os serviços
![Page 24: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/24.jpg)
Infraestrutura
Sistema de consultasAtende diretamente os clientes (core da empresa)4 servers Dell (2 x Quad Core 2.33GHz, 32Gb RAM)
Outros sistemas3 servers Dell virtualizados (VMWare)
Banco de dados Oracle RAC3 servers IBM Power PC Risc (4 x 1.648MHz, 32 Gb RAM)
![Page 25: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/25.jpg)
Sistema de consultas
Infraestrutura
![Page 26: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/26.jpg)
Infraestrutura
Sistema de consultas – por servidor
![Page 27: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/27.jpg)
Infraestrutura
Monitoração dos serviços
![Page 28: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/28.jpg)
Infraestrutura
Monitoração do pool de conexões
![Page 29: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/29.jpg)
Arquitetura da Aplicação
JSP
Controller
Façade
Service
DAO
Domain
Remoting Handler Web Service
Socket SOAP
Hibernate
Spring
Jetty
Spring Security
![Page 30: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/30.jpg)
Arquitetura da Aplicação
Sistema de consultasTempo de resposta em pouco mais de 1 segundoAlta utilização de agentes paralelos (threads)Fontes de dados internas e externasAlguns processamentos vão para fila JMS
Consulta
Agente 1
Agente 2
Agente N
Serviço
Serviço
BD
![Page 31: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/31.jpg)
Arquitetura da Aplicação
Comm BrokerComunicação com bases exernas
SPCCommBrokerClient
Fornecedor 1
SistemasSPC
CommBroker
Fornecedor 2
OUTROS
LOGs
![Page 32: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/32.jpg)
Arquitetura da Aplicação
Comm BrokerUtilização do Netty
Netty Handler#1
Handler#2
Handler#N
CommBrokerServiceHandler
Service 1
Service 2
Service N
Socket
Socket
Socket
![Page 33: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/33.jpg)
Algumas considerações
Baremetal x VirtualizaçãoNosso core fica em servers exclusivosServiços offline estão virtualizados
Tenha redundância de TUDOSistemas (e pessoas) falham!
![Page 34: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/34.jpg)
Melhorias
![Page 35: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/35.jpg)
Tuning
Banco de dadosDBA deve efetivamente monitorar e cuidar do BDUsar índices e queries otimizadasAtivar cache de sequenceSegmentar dados de tabelas grandes e críticas (partição)Criar tabelas históricas para dados não importantesCuidado com locks (pode gerar contenção)
![Page 36: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/36.jpg)
Tuning
Memória-Xms1536m -Xmx1536m -Xmn128m -XX:MaxPermSize=256m
Memória da JVM
Eden Tenured Permanent
Memória do SO
Other
heap restante
![Page 37: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/37.jpg)
Tuning
Garbage Collector-XX:+UseConcMarkSweepGC -XX:+UseParNewGC-XX:+CMSPermGenSweepingEnabled-XX:+CMSClassUnloadingEnabled-Dsun.rmi.dgc.client.gcInterval=3600000-Dsun.rmi.dgc.server.gcInterval=3600000
[GC [ParNew: 110843K->4118K(118016K), 0.0102440 secs] 615483K->508855K(1035520K), 0.0105290 secs][GC [ParNew: 109078K->3158K(118016K), 0.0073700 secs] 613815K->508124K(1035520K), 0.0075610 secs][GC [ParNew: 108228K->4378K(118016K), 0.0103470 secs] 613195K->509817K(1035520K), 0.0105690 secs][GC [ParNew: 109338K->3851K(118016K), 0.0078400 secs] 614777K->509450K(1035520K), 0.0080830 secs]
![Page 38: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/38.jpg)
Tuning
TestesRealizar testes de carga e de estresse (JMeter)Medir os resultados e achar o ponto ideal
![Page 39: Arquitetura de um sistema crítico de alta disponibilidade com soluções open source](https://reader031.fdocumentos.tips/reader031/viewer/2022020101/54b550ae4a7959c22c8b45cd/html5/thumbnails/39.jpg)
Perguntas e Respostas