Arquitetura de Convivência:
Escalabilidade e Evolução Planejada
de Sistemas Legados
Paulo Azevedo
Quem sou eu?
[email protected]
pr.azevedo.bh
prazevedo
@pazevedobh
●
Arquiteto de Sistemas - base
RJ
●
Especializado em tecnologias
Microsoft
Contexto da Aplicação
Características
●
Sistema Acadêmico Financeiro
○ 350.000 Alunos
○ 6.000 Professores
○ 3.000 Funcionários
●
Universidade com 80 unidades em todo o Brasil
●
Aplicação não suportava o crescimento da corporação
○ “Sensação” de performance ruim
○ Dificil evolução
Avaliação Arquitetural
●
Sistema complexo, construído ao longo de 14 anos, sem testes
unitários e com baixa documentação.
○ 14.000 páginas ASP
○ 300 Classes VB
○ 800 Relatórios Delphi/Crystal
○ 2.750 Tabelas
○ 2.209 Stored Procedures
SIA - Avaliação Arquitetural
●
●
●
Farm da Aplicação
○ 11 Servidores Físicos
■ Windows Server 2003 32 bits
■ Internet Information Server 6.0
■ Hardware super dimensionado
● 24 Cores
● 192 GB RAM
○ 3 Servidores Virtuais (VMWare)
■ Windows Server 2003 32 bits
■ Internet Information Server 6.0
Banco de dados - EXADATA
Balanceamento de carga - BIG IP
○ Afinidade de Servidores
Grande Desafio: Como migrar esta
aplicação sem “engessar” a evolução do
negócio?
Estratégias de evolução
●
Migração total
●
Migração automática
●
Arquitetura de Convivência
Migração Total
Migração Total X Arquitetura de Convivência ?????
●
Proof of Concept
●
O que medir?
●
Como fazer?
Migração automática
Arquitetura de Convivência
Arquitetura de Convivência - Cache Distribuído
●
AppFabric.Cache
○ Cluster
■ Tolerância a Falhas
■ Escalabilidade
●
Benefício imediato
○ Balanceamento de
carga mais efetivo (fim
da afinidade de
servidores)
Arquitetura de Convivência - Integração ASP Clássico
Web Server (IIS 7.5)
ASP 3.0 (Clássico)
SharedCache.inc
Wrapper de Métodos da Session e de Application
default do ASP:
Application.Get(key)
Application.Set(key, value)
Application.Let(key, value)
Application.Remove(key)
Application.Count()
Session.SessionId
Session.Get(key)
Session.Set(key, value)
Session.Let(key, value)
Session.Remove(key)
Session.Abandon()
Session.RemoveAll()
Session.CodePage
Session.Lcid
Session.Timeout
Global.asa
Referencia de object para objSharedCache
da biblioteca CacheClient.dll no namespace
CacheAppFabric.CacheUtil
COM Interop
CacheClient.dll
.Net
Shared Cache
Shared Cache
(MSShared
AppFabric
Cache
Cache
(MS AppFabric
Cluster)
(MS AppFabric
Cache)
Cache)
Arquitetura de Convivência - Evolução dos Servidores
●
Servidores de Aplicação:
○ Windows Server 2008 R2 64 Bits
○ IIS 7.5
●
Relatórios Crystal não rodou em Windows Server 2008.
Permaneceu em Windows Server 2003.
Arquitetura de Convivência - Topologia
Da PoC para o MTP
Testes Arquiteturais e de Performance
●
Cliente não via valor!!!!
●
Ambiente precisa ser igual ao REAL
●
Simulação de situação REAL
●
Baseline X Novo
●
Com e sem links
Derrubando Mitos
●
Seus problemas de performance podem estar escondidos atrás
de onde você sempre achou funcionar bem:
○
Acesso a Banco de Dados funciona?
○
Balanceamento de Carga funciona?
○
Rede como um todo esta respondendo bem?
Derrubando Mitos
O problema é da aplicação?????
●
Arquitetura antiga
●
Mesma carga
●
Mesmas funcionalidades
●
Max de 360 ms X 65 s
Baseline DC
Baseline CSC
Derrubando Mitos
Novo Ambiente DC
Com a arquitetura de
convivência o comportamento
permanece….
●
Max de 360 ms X 49 s
Novo Ambiente CSC
Derrubando Mitos - Acesso ao Banco de Dados
●
Driver Oracle mostrou erros após 1000 execuções consecutivas
●
Como refatorar ??? 14.000 páginas ??????
●
Análise de IMPACTO é essencial
○ 400 artefatos selecionados
Estratégia de Implantação Adotada
Vs
Plano de Rollouts
Acompanhamento dos Rollouts
●
Plano de contingência/rollback preparado e em 3 níveis,
validados nos testes arquiteturais
○ Nível 1: Máquinas inativas preparadas para resolver
problemas de carga
○ Nível 2: Chaveamento da solução de cache distribuído
(voltando afinidade de sessão)
○ Nível 3: Fallback para os servidores antigos: mudança de
roteamentos para aponta para servidores antigos
●
Sala de guerra em cada implantação envolvendo gestores de TI,
equipe de infra estrutura, arquitetos e desenvolvedores
Futuro
Evoluindo……….
●
SIA ALUNO - Crossbrowser e Crossplatform - Go Live gradual a
partir Out/14
●
Funcionalidades Acadêmicas e Financeiras em desenvolvimento
●
Farm Crystal eliminada - Substituída por SQL Reporting Services
●
Maior Aproveitamento do Hardware
○ 16 worker process por server (Web Garden)
○ Redução da farm administrativa (9 => 5)
DÚVIDAS?
[email protected]
pr.azevedo.bh
prazevedo
@pazevedobh
THANK
YOU
FOR YOUR
TIME!
Download

Arquitetura de Convivência: