modernização de sistemas de gestão

27
Proposta de Modernização de Sistemas de Gestão Rafael Chaves http://abstratt.com

Upload: rachaves

Post on 21-Jul-2015

52 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Modernização de Sistemas de Gestão

Proposta de Modernização de Sistemas de GestãoRafael Chaveshttp://abstratt.com

Page 2: Modernização de Sistemas de Gestão

Contexto

Page 3: Modernização de Sistemas de Gestão

Sistema de gestão legado

⬇Interface com usuário antiquada

⬇Lock-in com a tecnologia legada

⬇Difícil encontrar mão de obra

Page 4: Modernização de Sistemas de Gestão

Possibilidades (não mutuamente exclusivas)

➡ Reescrita manual ou automatizada de funcionalidade existente em arquitetura nova➡ Integração da funcionalidade existente (via web services)➡ Adoção de componentes genéricos de mercado➡ Manutenção de partes da aplicação legada sem alterações

Page 5: Modernização de Sistemas de Gestão

Base Técnica da Solução

Page 6: Modernização de Sistemas de Gestão

Orientação a Serviços e Componentes

● Sistema distribuído, separado em componentes○ componentes são autônomos○ comunicam via mensagens (via ESB)○ isolados, sem conhecimento direto

⬆ implantação/desenvolvimento independente⬆ integração sistemas internos com terceiros

Page 7: Modernização de Sistemas de Gestão

Serviços e Componentes

Componentes○ unidades de empacotamento e implantação○ um componente por contexto (domínio)○ componentes de negócio e técnicos ○ um componente, muitos serviços

Serviços○ funcionalidade exposta/consumida por componentes

Page 8: Modernização de Sistemas de Gestão

Componentes por tipo de domínio

Componentes de negócio (verticais)○ maior parte da aplicação, servem os stakeholders

do negócio○ contas a pagar, distribuição ou mais específicos

Componentes técnicos (horizontais)○ domínios: logging, posicionamento global,

provedores de pagamento○ normalmente providos por terceiros

Page 9: Modernização de Sistemas de Gestão

Componentes/serviços por origem

● Novos○ criados na empresa, rodam no serv. de aplicações

● Legados○ funcionalidade existente (em legado

Progress/Delphi/etc)● De terceiros

○ funcionalidade adquirida, rodam externamente ao serv. de aplicações

⬆ todos expostos no ESB de maneira uniforme⬆ substituíveis (legado <-> novo, legado <-> 3o, etc)

Page 10: Modernização de Sistemas de Gestão

Proposta Técnica

Page 11: Modernização de Sistemas de Gestão

● Entregar valor continuamente● Evitar lock-in com produtos e tecnologias● Simplificar o fluxo de trabalho do desenvolvimento● Abraçar a heterogeneidade de sistemas grandes e

complexos● Progredir com rapidez e ainda evitar regressões● Preservar valor investido no legado, e no

desenvolvimento dos novos componentes● Promover uma cultura de modularidade● Criar uma solução que está preparada para lidar com

mudanças técnicas e de negócio

Objetivos

Page 12: Modernização de Sistemas de Gestão

Estratégias propostas

1. Usar SOA/ESB2. Usar JavaEE/EJB como tecnologia preferencial

(poderia mudar no futuro)3. Cada componente tem seu próprio banco de dados4. Encapsular funcionalidade legada em web services5. Verificar contrato de componentes via testes

automatizados6. Considerar oportunidades para geração de código7. Análisar escopo e estrutura do ERP legado8. Implementar uma aplicação simples de ponta-a-ponta

via abordagem proposta9. Continuar a mover partes do ERP para o ESB

Page 13: Modernização de Sistemas de Gestão

Estratégia 1

Usar SOA/ESB● mas componentes não precisam saber disso● componente é utilizável/testável sem ESB● conexão entre componente e ESB é um elemento

aditivo/substituível

⬆facilita desenvolvimento (requisitos de ambiente mais simples)⬆evita lock-in no fornecedor ou tecnologia

Page 14: Modernização de Sistemas de Gestão

Estratégia 2

Usar JavaEE/EJB como tecnologia padrão hoje● no futuro outra escolha pode fazer mais sentido● componentes diferentes podem vir a usar tecnologias

diferentes (Java e Spring, ou mesmo não-JVM)

⬆ evita criar o novo legado⬆ permite evolução do padrão de tempos em tempos

Page 15: Modernização de Sistemas de Gestão

Estratégia 3

Cada componente tem seu próprio banco de dados

○ esquema e dados pertencem ao componente○ outros componentes usam ESB para acessar

dados/funcionalidade

⬆ evita acoplamento entre componentes⬆ componente pode evoluir sem quebrar outros

Page 16: Modernização de Sistemas de Gestão

Encapsular funcionalidade legada em web services● consumidores não sabem se legado/moderno/3o

● preservação do legado não atrasa evolução do sistema como um todo

⬆ preserva o investimento feito, sem impedir evolução

Estratégia 4

Page 17: Modernização de Sistemas de Gestão

Estratégia 5

Verificar contrato de componentes via testes automatizados● contra a API (mais estável, acessível), não contra a GUI● para substituir um componente (legado -> novo ou 3o),

basta fazer os testes passarem contra a nova implementação

● testes executam em ambiente de integração contínua

⬆ permite evoluir com segurança, sem regressões

Page 18: Modernização de Sistemas de Gestão

Estratégia 6

Considerar oportunidades para geração de código● para produzir wrappers para serviços legados● ou mesmo para implementar serviços em JavaEE

⬆ aumento da produtividade/turnaround

Page 19: Modernização de Sistemas de Gestão

Análisar escopo e estrutura do ERP legado● mapeamento inicial de subsistemas como candidatos a

reescrita, integração como legado, substituição por 3os

● priorização das funcionalidades/subsistemas deveriam ser portados/integrados em valor e risco relativos

Estratégia 7

Page 20: Modernização de Sistemas de Gestão

Estratégia 8

Implementar uma aplicação simples de ponta-a-ponta via abordagem proposta● encapsular funcionalidade existente na tecnologia

legada em um web service conectado ao ESB● ou portar funcionalidade para JavaEE e expor via ESB● deveria ser acessível por GUI existente ou a ser criada● esforço paralelo com participação primária do consultor

⬆ piloto para estabelecer e documentar um padrão para o desenvolvimento na nova abordagem⬆ impacto limitado na carga de trabalho do time

Page 21: Modernização de Sistemas de Gestão

Estratégia 9

Continuar a mover partes do ERP para o ESB● re-escrever vs. integrar existente vs. integrar de 3os

● esforço contínuo e incremental (meses, mesmo anos)● foco onde há maior valor● time assume a condução do projeto

⬆ time gradualmente absorve cultura de serviços, componentes e testes automatizados⬆ valor é entregue desde o início, e continuamente

Page 22: Modernização de Sistemas de Gestão

Credenciais

Page 23: Modernização de Sistemas de Gestão

Histórico

Rafael Chaves ([email protected]) desenvolve software há mais de 15 anos● Experiência desenvolvendo software básico em Java como

desenvolvedor da IBM nos projetos Eclipse e Jazz (Ottawa, Canadá, 2002-2006)

● Experiência como desenvolvedor sênior/arquiteto/líder técnico na Genologics (Victoria, Canadá, 2008-2013)

● Consultor independente (Abstratt) em arquitetura, melhoramento e modernização de software e desenvolvimento baseado em modelos (desde 2013)

Page 24: Modernização de Sistemas de Gestão

Java/JavaEE

15+ anos de experiência em tecnologia Java

Diversas tecnologias para aplicações de negócios (EJB, Hibernate, JTS, Spring-*, JNDI, LDAP, Grails)

Diversas tecnologias para aplicações distribuídas (JMS, CORBA, RMI, JAX-RS, JAXB)

APIs para software básico: threads, sockets, classloaders

Page 25: Modernização de Sistemas de Gestão

Componentes e Serviços

Parte do time que portou o runtime do Eclipse para OSGi (SOA intra-JVM) na versão 3.0 (IBM Canada, 2003-2004)

Liderou um projeto para componentização de uma base de código monolítica com 6 anos de existência (Genologics, 2009)

Liderou o desenvolvimento de uma API REST que permitia a clientes estender a funcionalidade do produto (Genologics, 2011-2013)

Longa experiência com modularização, projetos de APIs, e desenvolvimento efetivo com bases de código extensas

Page 26: Modernização de Sistemas de Gestão

Modernização

Participou de vários projetos de modernização ao longo dos anos. Estratégias mais efetivas:● fazer entregas incrementais● estabelecer interfaces claras entre componentes● permitir evolução segura através de testes automatizados● usar geração de código para eliminar boilerplate requerido

em integração de componentes distribuídos

Page 27: Modernização de Sistemas de Gestão

Contato

● web: http://abstratt.com● email: [email protected]● cidade: Florianópolis-SC