modernização de sistemas de gestão
TRANSCRIPT
![Page 1: Modernização de Sistemas de Gestão](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/1.jpg)
Proposta de Modernização de Sistemas de GestãoRafael Chaveshttp://abstratt.com
![Page 2: Modernização de Sistemas de Gestão](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/2.jpg)
Contexto
![Page 3: Modernização de Sistemas de Gestão](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/5.jpg)
Base Técnica da Solução
![Page 6: Modernização de Sistemas de Gestão](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/10.jpg)
Proposta Técnica
![Page 11: Modernização de Sistemas de Gestão](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/11.jpg)
● 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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/15.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/16.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/17.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/20.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/22.jpg)
Credenciais
![Page 23: Modernização de Sistemas de Gestão](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/24.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/25.jpg)
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](https://reader030.vdocuments.pub/reader030/viewer/2022032617/55ae12301a28aba03b8b4758/html5/thumbnails/26.jpg)
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