Arquitetura de um sistema crítico de alta disponibilidade com soluções open source

  • View
    7.272

  • Download
    3

Embed Size (px)

DESCRIPTION

A plataforma Java revolucionou o panorama do desenvolvimento com a sua comunidade ativa, de onde originaram muitos projetos e iniciativas de soluções open source. Diversas soluções nasceram e são utilizadas com frequência, mas podem apresentar problemas comuns se não tomarmos o devido cuidado. Será apresentada uma abordagem de como utilizar software livre, como os populares Spring, Hibernate, Netty e Jetty com clusterização e virtualização, em uma arquitetura focada em um sistema crítico (24x7) de alta disponibilidade que atende milhares de dezenas de solicitações diariamente, no mercado de 300 mil cientes e 430 mil usuários do SPC. Veremos problemas enfrentados e as medidas tomadas em situações diversas, debatendo detalhes técnicos e gargalos comuns que podem aparecer.

Text of Arquitetura de um sistema crítico de alta disponibilidade com soluções open source

  • 1.

2. QCon So Paulo 2011
Arquitetura de um sistema crtico de alta disponibilidade com solues open source
3. Palestrante
Daniel Destro do Carmo
Cincias da Computao (PUC/SP 97/2000)
MBA em TI (IPT/USP)
12 anosatuandoem TI (certificado SCJP, SCEA)
Desenvolvimento, consultoria e treinamento
Artigospublicados: GUJ e Java Magazine
Palestras: Conexo Java e Just Java
Atualmente no SPC Brasil
Arquiteto de solues / Infraestrutura
4. SPC Brasil
ConfederaoNacional dos DirigentesLojistas
FormadapelasCmaras de DirigentesLojistas (CDL)
SPC Brasil
Sistema de informao das CDLs (+ de 2.200)
Todas as capitais e principaiscidades
Informao de crdito de PF e PJ
Produtospara o mercado de crdito
5. SPC Brasil
Brevehistrico
Sistemaantigoescritoem Oracle Web Toolkit(PL/SQL)
Muitosproblemas
Trabalhoso, ruim de manter e escalar
Novo sistemaescritoem Java 6
Feito a partir do zero
Nova especificao de negcio
6. SPC Brasil
7. SPC Brasil
Emnmeros
300.000 clientesemtodoBrasil
+ de 200.000 logins dirios (48.000 operadores)
300.000 consultaspordia (pico de + 500 mil)
Mdia de 15 e pico de 30 consultasporsegundo
Horrioscrticos das 9h-11h e das 15-17h
8. SPC Brasil
Maisnmeros
Banco de dados com 150 milhes de CPFs
e 18 milhes de CNPJs
Log de consultaschega a 1 bilho de registros
2 Terabytes de dados emstoragerpido (FC)
9. SPC Brasil
Outrasnecessidades
Intensatroca de informaes com parceiros
Carregamento e tratamento de muitasinformaes
Processamentooffline (emlote) consulta, relatrio,
Sistemacrtico 24x7 com baixo tempo de resposta
10. Soluo Adotada
11. SoluoAdotada
Aplicao
Baseadaemsolueslivres (open source)
Escolhagerencialparareduo de custos
Solues de mercadoaltamenteutilizadas e confiveis
Banco de dados
Oracle 10g RAC (cluster)
12. SoluoAdotada
Oracle 10g RAC
3 ns no cluster
Crescimento de 50 gigasporms
Rodandosobre AIX
Monitorao com Grid Control
Replicao dos dados com Data Guard (fsico)
Datacenters separadadosgeograficamente
13. SoluoAdotada
Plataforma de desenvolvimento e runtime
Tecnologia Java (verso 6) / JEE
Frameworks: Spring e Hibernate (ejbless)
Lucene, Quartz, JBossNetty,
Apache Commons, XStream,
Display Tag, Sitemesh, JAX-WS, etc
Servidores Web: Apache + Jetty
Testes: JUnit, JMeter
14. SoluoAdotada
Plataforma de desenvolvimento e runtime
Cache: EhCache, Memcached
Load balancer: HAProxy
JMS: Apache ActiveMQ
SO: Red Hat Linux (server)
Desenvolvimento: Eclipse + Git + Ubuntu Linux
15. Servidores Web
Apache HTTP Server
Precisa de motivos? Algumsugere outro?
Jetty
Container web Java
Simples, leve e eficiente
Customizvel e extensvel
Fazuso de IO assncrono (NIO)
Baixoconsumo de memria e CPU
Usado no Google App Engine (GAE)
16. Frameworks
Spring + Hibernate
Dupla timaalternativaao EJB
Simples de usar, poderoso e flexvel
timosuporte a IoC / DI, transaes, etc
Gerenciamento do ciclo de vida dos beans
Integraocom outros frameworks
Controle de seguranaextensvel com Spring Security
Permiteuso de aspectos (AOP)
17. Cache
EhCache
Dados poucovolteis, mas muitoacessados
Reduziracessoao BD e melhorar tempo de resposta
Memcached
Cache distribuido de objetosemmemria
Voltadoparaaceleraraplicaes web dinmicas
Guarda pares de chave/valor de dados arbitrrios
Tempo de acesso O(1)
Expirao dos dados armazenados
18. Load Balancer
Appliance
Hardware, emgeralcaro cuida da porta de entrada
Faz o load balance entre servidoresfsicos
HAProxy
Software de load balance
Leve, rpido e configurvel
Estatsticas de uso
19. Comunicao
JBossNetty
Framework paracomunicao via rede (socket)
Modelobaseadoemeventosassncronos
Alta performance e escalabilidade
Fcildesenvolvimento (handlers)
Controle no nmero de workers
20. Mensageria
Apache ActiveMQ
UsaprotocoloOpenWirepara Java (rpido)
Suportepara Spring Framework
Persistncia com alto desempenhousandojournal
Suportaclusterizao (modomaster-slave)
Oferece interface via API REST
21. Indexao
Apache Lucene
Usadoparaindexar e pesquisar dados de consumidores
150 milhes de CPFs e 18 milhes de CNPJs
Quartz
Agendamento de processos
Integrao com Spring
Facilidade de uso
22. Infraestrutura
e Arquitetura
23. Alta disponibilidade
Maiorespreocupaes
Baixo tempo de resposta
Minimizarconsumo de recursos
Reduzirdowntime (programadoouno)
Atualizao de versoem plena operao (semparada)
Escalvelparaatendercrescimento da demanda
Estruturafoi de 2 para 4 servers (8 para 32 Gb RAM)
Terredundncia de servios (contingenciamento)
Monitorartodososservios
24. Infraestrutura
Sistema de consultas
Atendediretamenteosclientes (coreda empresa)
4 servers Dell (2 x Quad Core 2.33GHz, 32Gb RAM)
Outros sistemas
3 servers Dell virtualizados (VMWare)
Banco de dados Oracle RAC
3 servers IBM Power PC Risc (4 x 1.648MHz, 32 Gb RAM)
25. Sistema de consultas
Infraestrutura
26. Infraestrutura
Sistema de consultas porservidor
27. Infraestrutura
Monitorao dos servios
28. Infraestrutura
Monitorao do pool de conexes
29. Arquitetura da Aplicao
Spring
Spring Security
JSP
Socket
SOAP
Domain
Controller
Remoting Handler
Web Service
Faade
Service
DAO
Hibernate
Jetty
30. Arquitetura da Aplicao
Sistema de consultas
Tempo de respostaempoucomais de 1 segundo
Alta utilizao de agentesparalelos (threads)
Fontes de dados internas e externas
Algunsprocessamentosvoparafila JMS
Consulta
Agente 1
BD
Agente 2
Servio
Agente N
Servio
31. Arquitetura da Aplicao
Comm Broker
Comunicao com bases exernas
Fornecedor 1
SPC
Comm
Broker
SPC
Comm
Broker
Client
Sistemas
Fornecedor 2
OUTROS
LOGs
32. Arquitetura da Aplicao
Comm Broker
Utilizao do Netty
Netty
Handler
#1
Handler
#2
Handler
#N
Comm
Broker
Service
Handler
Service 1
Socket
Service 2
Socket
Service N
Socket
33. Algumasconsideraes
Baremetal x Virtualizao
Nossocoreficaem servers exclusivos
Serviosofflineestovirtualizados
Tenharedundncia de TUDO
Sistemas (e pessoas) falham!
34. Melhorias
35. Tuning
Banco de dados
DBA deveefetivamentemonitorar e cuidar do BD
Usarndices e queries otimizadas
Ativar cache de sequence
Segmentar dados de tabelasgrandes e crticas (partio)
Criartabelashistricaspara dados noimportantes
Cuidado com locks (podegerarconteno)
36. Tuning
Memria
-Xms1536m -Xmx1536m -Xmn128m -XX:MaxPermSize=256m
Memria do SO
Memria da JVM
Eden
Tenured
Permanent
Other
heap
restante
37. 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]
38. Tuning
Testes
Realizartestes de carga e de estresse (JMeter)
Medirosresultados e achar o ponto ideal
39. Perguntas e Respostas
40. Obrigado!
java.danieldestro.com.br
danieldestro@gmail.com
about.me/danieldestro
@danieldestro