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.
Arquitetura de um sistema crítico de alta disponibilidade com soluções open source
1.
2. QCon São Paulo 2011 Arquitetura de um sistema crítico de alta disponibilidade com soluções open source
3. Palestrante Daniel Destro do Carmo Ciências da Computação (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: Conexão Java e Just Java Atualmente no SPC Brasil Arquiteto de soluções / Infraestrutura
4. SPC Brasil ConfederaçãoNacional dos DirigentesLojistas FormadapelasCâmaras de DirigentesLojistas (CDL) SPC Brasil Sistema de informação das CDLs (+ de 2.200) Todas as capitais e principaiscidades Informação de crédito de PF e PJ Produtospara o mercado de crédito
5. SPC Brasil Brevehistórico Sistemaantigoescritoem Oracle Web Toolkit(PL/SQL) Muitosproblemas Trabalhoso, ruim de manter e escalar Novo sistemaescritoem Java 6 Feito a partir do zero Nova especificação de negócio
7. SPC Brasil Emnúmeros 300.000 clientesemtodoBrasil + de 200.000 logins diários (48.000 operadores) 300.000 consultaspordia (pico de + 500 mil) Média de 15 e pico de 30 consultasporsegundo Horárioscríticos das 9h-11h e das 15-17h
8. SPC Brasil Maisnúmeros Banco de dados com 150 milhões de CPFs e 18 milhões de CNPJs Log de consultaschega a 1 bilhão de registros 2 Terabytes de dados emstoragerápido (FC)
9. SPC Brasil Outrasnecessidades Intensatroca de informações com parceiros Carregamento e tratamento de muitasinformações Processamentooffline (emlote) – consulta, relatório, … Sistemacrítico 24x7 com baixo tempo de resposta
11. SoluçãoAdotada Aplicação Baseadaemsoluçõeslivres (open source) Escolhagerencialpararedução de custos Soluções de mercadoaltamenteutilizadas e confiáveis Banco de dados Oracle 10g RAC (cluster)
12. SoluçãoAdotada Oracle 10g RAC 3 nós no cluster Crescimento de 50 gigaspormês Rodandosobre AIX Monitoração com Grid Control Replicação dos dados com Data Guard (físico) Datacenters separadadosgeograficamente
13. SoluçãoAdotada Plataforma de desenvolvimento e runtime Tecnologia Java (versão 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. SoluçãoAdotada 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? Alguémsugere outro? Jetty Container web Java Simples, leve e eficiente Customizável e extensível Fazuso de IO assíncrono (NIO) Baixoconsumo de memória e CPU Usado no Google App Engine (GAE)
16. Frameworks Spring + Hibernate Dupla é ótimaalternativaao EJB Simples de usar, poderoso e flexível Ótimosuporte a IoC / DI, transações, etc Gerenciamento do ciclo de vida dos beans Integraçãocom outros frameworks Controle de segurançaextensível com Spring Security Permiteuso de aspectos (AOP)
17. Cache EhCache Dados poucovoláteis, mas muitoacessados Reduziracessoao BD e melhorar tempo de resposta Memcached Cache distribuido de objetosemmemória Voltadoparaaceleraraplicações web dinâmicas Guarda pares de chave/valor de dados arbitrários Tempo de acesso O(1) Expiração dos dados armazenados
18. Load Balancer Appliance Hardware, emgeralcaro – cuida da porta de entrada Faz o load balance entre servidoresfísicos HAProxy Software de load balance Leve, rápido e configurável Estatísticas de uso
19. Comunicação JBossNetty Framework paracomunicação via rede (socket) Modelobaseadoemeventosassíncronos Alta performance e escalabilidade Fácildesenvolvimento (handlers) Controle no número de workers
20. Mensageria Apache ActiveMQ UsaprotocoloOpenWirepara Java (rápido) Suportepara Spring Framework Persistência com alto desempenhousandojournal Suportaclusterização (modomaster-slave) Oferece interface via API REST
21. Indexação Apache Lucene Usadoparaindexar e pesquisar dados de consumidores 150 milhões de CPFs e 18 milhões de CNPJs Quartz Agendamento de processos Integração com Spring Facilidade de uso
23. Alta disponibilidade Maiorespreocupações Baixo tempo de resposta Minimizarconsumo de recursos Reduzirdowntime (programadoounão) Atualização de versãoem plena operação (semparada) Escalávelparaatendercrescimento da demanda Estruturafoi de 2 para 4 servers (8 para 32 Gb RAM) Terredundância de serviços (contingenciamento) Monitorartodososserviços
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)
29. Arquitetura da Aplicação Spring Spring Security JSP Socket SOAP Domain Controller Remoting Handler Web Service Façade Service DAO Hibernate Jetty
30. Arquitetura da Aplicação Sistema de consultas Tempo de respostaempoucomais de 1 segundo Alta utilização de agentesparalelos (threads) Fontes de dados internas e externas Algunsprocessamentosvãoparafila JMS Consulta Agente 1 BD Agente 2 Serviço Agente N Serviço
31. Arquitetura da Aplicação Comm Broker Comunicação com bases exernas Fornecedor 1 SPC Comm Broker SPC Comm Broker Client Sistemas Fornecedor 2 OUTROS LOGs
32. Arquitetura da Aplicação Comm Broker Utilização do Netty Netty Handler #1 Handler #2 Handler #N Comm Broker Service Handler Service 1 Socket Service 2 Socket Service N Socket
33. Algumasconsiderações Baremetal x Virtualização Nossocoreficaem servers exclusivos Serviçosofflineestãovirtualizados Tenharedundância de TUDO Sistemas (e pessoas) falham!
35. Tuning Banco de dados DBA deveefetivamentemonitorar e cuidar do BD Usaríndices e queries otimizadas Ativar cache de sequence Segmentar dados de tabelasgrandes e críticas (partição) Criartabelashistóricaspara dados nãoimportantes Cuidado com locks (podegerarcontenção)
36. Tuning Memória -Xms1536m -Xmx1536m -Xmn128m -XX:MaxPermSize=256m Memória do SO Memória da JVM Eden Tenured Permanent Other heap restante