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!