Desmistificando SOA SERVICE-ORIENTED ARCHITECTURE Patrick de Faria – [email protected] Desmistificando SOA Módulo 1 – Primeiro os Negócios Ambiente Competitivo Atual Hiper-Competição: • Hiper-Competição • Clientes: • Cada vez compram menos • Cada vez mais exigentes • Cada vez menos fiéis Significa estar o tempo todo criando estratégias para conseguir vantagens e eliminar as da concorrência • Rápidos ciclos de produtos • Empresas precisam ser capazes de responder rapidamente a competição, as demandas dos consumidores e as mudanças do mercado • Empresas precisam ser ágeis e flexíveis Dismistificando SOA Módulo 1 – Primeiro os Negócios O Valor do Tempo de Resposta Time to Market: Tempo entre conceber e lançar determinado produto ou serviço Agilidade = Diferencial Competitivo Dismistificando SOA Módulo 1 – Primeiro os Negócios Surgem as Perguntas… • Como se tornar mais competitivo ? • Como aumentar a agilidade para mudança e inovação ? • Como responder rapidamente ? • Como ser flexível o suficiente para reduzir time to market ? E como fazer tudo isso... • Tendo o que reduzir custos e • Conviver com ambientes de TI heterogêneos e cada vez mais complexos Dismistificando SOA Módulo 1 – Primeiro os Negócios Cabo de Guerra Negócios: TI: •Aumentando nível e volume de mudanças e inovação •Pressionando por rapidez •Virtualizando •Reduzir Custos • Lidar com Ambientes Heterogêneos •Maximizar os ativos de TI Dismistificando SOA Módulo 1 – Primeiro os Negócios Olhando para o Passado Recente • Empresas nos últimos anos aplicaram dezenas de teorias para aumentarem sua competitividade • TQM • Six-Sigma • ISO • Re-engenharia • Outsourcing • Rightsourcing • ... • Levando a competição para trincheiras da: • Produtividade • Menor Custo Dismistificando SOA Módulo 1 – Primeiro os Negócios Resultado • Eficiência Operacional • Redução de Custos • Aumento da Satisfação do Cliente Eficiência Operacional: Executar atividades similares melhor que o concorrente Entretanto: • Fácil de copiar • Não garante tradução sustentável de ganhos • Soma Zero a longo prazo • Pressão sobre os custos e sobre os preços • Competição baseada em Eficiência Operacional normalmente são mutuamente destrutivas Dismistificando SOA Módulo 1 – Primeiro os Negócios Fronteira da Produtividade Fronteira da Produtividade: É o somatório de todas as melhores práticas existentes em um dado momento ou o máximo valor que uma empresa pode criar para um dado custo usando a melhor tecnologia, habilidades, técnicas de gerenciamento e ferramentas. Porter, HBR, 1996 Dismistificando SOA Módulo 1 – Primeiro os Negócios Soma Zero Ontem Concorrentes Amanhã Exigências Exigências EMPRESA EMPRESA $ Margens Concorrentes Dismistificando SOA $ Margens Módulo 1 – Primeiro os Negócios Concluindo Eficiência Operacional é importante mas não é suficiente! Segundo Michael Porter: “ A concorrência moderna tornou muito difícil manter vantagens em relação aos seus concorrentes. A empresas passaram a imitar umas às outras, em ritmo acelerado. Restam apenas dois caminhos: • Diferenciação Michael Porter: Michael Porter é considerado a maior autoridade mundial em estratégia competitiva. É autor dos maiores bestsellers internacionais na área, entre os quais se destacam: Vantagem competitiva e Estratégia competitiva • Preço Baixo Dismistificando SOA Módulo 1 – Primeiro os Negócios Apenas um Caminho Sabemos que há um limite para compressão dos preços sem prejuízo a saúde financeira das empresas e/ou a qualidade do serviço ou produto. Logo pedimos licença a Michael Porter para afirmar: Só existe o caminho, o da diferenciação. Portanto, seja Distinto ou seja Extinto! Dismistificando SOA Módulo 1 – Primeiro os Negócios Apenas um Caminho Empresas só podem superar rivais, conquistar mercados e manter clientes se puderem estabelecer uma diferença ou singularidade que possa preservar . Existente duas maneiras de se diferenciar: • Diferenciação por Custos – Eficiência Operacional • Diferenciação por Atividade – Posicionamento Estratégico • INOVAR e INOVAR Posicionamento Estratégico: Executar atividades diferentes dos rivais ou executar atividades similares de diferentes meios ou maneiras. Dismistificando SOA Módulo 1 – Primeiro os Negócios Desalinhamento Posicionamento Estratégico tem haver com TI Desalinhamento é : A diferença de velocidade entre TI e Negócios é a principal causa do fraco alinhamento entre estas duas áreas. • Existem casos em que o negócio tem sido guiado pelas restrições de TI • “Você sabe quanto tempo vai demorar para fazer isso ?” Alinhameno: • TI agrega real valor ao plano de negócios; •Não resiste às mudanças; •Combate a resistência às mudanças; e •É planejado •Dinâmico The Squandred Computer Paul Strassmann IEP (1997) Dismistificando SOA Módulo 1 – Primeiro os Negócios Juntando Tudo Atualmente empresas sofrem de ineficiência e falta de agilidade. Isso significa que elas não são capazes de atender rápido o suficiente as requisições de negócio através de sua infra-estrutura de TI, efetivamente limitando a capacidade de reação para as demandas crescentes e constantes do mercado. Dismistificando SOA Módulo 1 – Primeiro os Negócios O Fenômeno das Solicitações de Mudanças Dismistificando SOA Módulo 1 – Primeiro os Negócios O Fenômeno das Solicitações de Mudanças • Dificuldades de realizar mudanças estruturais • O gerente de projeto e os participantes chaves foram para outros projetos • A manutenção é realizadas por profissionais menos qualificados • Perde-se o lobby interno e apoio em função de projetos mais prioritários • Orçamentos apertados para consertos e manutenções • Raramente existe orçamento para fazer refactoring Dismistificando SOA Refactoring: Reestruturar um software aplicando mudanças em seu desenho, sem alterar o comportamento externo ou observável Módulo 1 – Primeiro os Negócios Desmistificando SOA Módulo 2 – Os Fundamentos O Conceito de Serviço • Componentes de software que representam um processo, atividade ou tarefa de negócio. • São componentes de alto nível, orientados ao negócio. • Tecnicamente falando: • Um Serviço é módulo de aplicação alto-contido • Acessível Remotamente • Frequentemente os termos “Client” e “Server” são usados como sinônimos para “Service Consumer” e “Service Provider” repectivamente Dismistificando SOA Módulo 2 – Os Fundamentos O Conceito de Serviço • Provém funcionalidades que podem ser re-usadas em diferentes aplicações • Serviços são destinados para uso público e não de um específico Cliente • Serviços encapsula alguma atividade de uma determinada complexidade • Serviços deixam o mundo mais convenientes para o “Service Consumer” • Um apropriado padrão de interação e comunicação deve existe entre “Service Provider” e “Service Consumer” Dismistificando SOA Módulo 2 – Os Fundamentos O Conceito de Serviço • O Fator crucial no desenvolvimento de serviços é a questão do Grau de Abstração • Podem existir vários tipos de Serviços • Serviços Básicos ( Log, Pegar Informação do Cliente ) • Serviços de Intermediários ( Gateways, Facades, Adapters ) • Serviços de Transações ( Abrir Conta ) • Serviços de Negócios ( Processar Pedido ) Dismistificando SOA Módulo 2 – Os Fundamentos Fraco Acoplamento ( Loosing Coupled ) • Um Consumidor “chama” um provedor de serviço sem se importar como sua Localização, a Plataforma onde ele se encontra, a linguagem em que foi desenvolvido ou mesmo o protocolo de comunicação que ele utiliza • Serviços são componentes de softwares desenvolvidos de maneira fracamente acoplada Dismistificando SOA Módulo 2 – Os Fundamentos Exemplos de Serviços Caso do Cliente Inativo. Possíveis Serviços: • ConsultaCliente() • ClienteEstaCadastrado() • VerificaPosiçãoFInanceira() • ConsultaCPFSERASA() Dismistificando SOA Módulo 2 – Os Fundamentos Web Services Um Web Service é uma peça de software que está em conformidade com um conjunto de padrões abertos para interoperabilidade. Esses padrões permitem que programas de computador troquem informação através de mensagens, sem se importar com a plataforma de hardware, sistema operacional, infra-estrutura de rede ou linguagem de programação. Dismistificando SOA Módulo 2 – Os Fundamentos Web Services e suas Tecnologias Web Services dependem de três tecnologias inter-relacionadas, baseadas no padrão XML: • Simple Object Access Protocol (SOAP) — Protocolo para a troca de mensagens • Web Services Description Language (WSDL) — O documento que descreve exatamente o que o web service faz e como invoca-lo • Universal Discovery, Description, and Integration (UDDI) — O diretório de web services que estão disponíveis para o uso Dismistificando SOA Módulo 2 – Os Fundamentos Web Services Sem Web Services: • Interface proprietária • Interface para envio e recebimento Com Web Services: • Interface universalmente aceitas • XML e SOAP • Ambos computadores entendem SOAP • Tráfego através de HTTP • JMS, FTP, SMTP .... Dismistificando SOA Módulo 2 – Os Fundamentos Web Services • Operações em Web Services tipicamente envolvem Requisição e Resposta • Existe no mínimo um Consumidor e um Provedor para cada transação • Um Provedor pode servir a centenas de consumidores em diferentes computadores Em ambientes de computação distribuídas utilização de SOAP sobre protocolos de internet tornam Web Services universais Dismistificando SOA Módulo 2 – Os Fundamentos Web Services e suas Tecnologias Dismistificando SOA Módulo 2 – Os Fundamentos Web Services - SOAP • SOAP é a “língua franca” dos web services, • Documento estruturado em XML na qual as mensagens dos web services são construídas Dismistificando SOA Módulo 2 – Os Fundamentos Web Services - WSDL • O WSDL é um documento estruturado em XML que descreve exatamente como um web service específico trabalha • Mensagens SOAP podem ser geradas automaticamente a partir do documento WSDL • Web services são conhecidos como “self-describing” em função das propriedades do WSDL Dismistificando SOA Módulo 2 – Os Fundamentos Web Services - UDDI • UDDI oferece um mecanismo para clientes procurarem web services • Usando UDDI clientes podem dinamicamente pesquisar e descobrir serviços oferecidos por um provedor de serviços • UDDI funciona como uma espécie de “páginas amarelas”. Se precisar de serviço procure no UDDI • Clientes podem encontrar serviços usando diferentes tipos de categorização Dismistificando SOA Módulo 2 – Os Fundamentos O que Web Services podem fazer Comunicação entre sistemas de fornecedores diferentes ( Loose Coupling ) Dismistificando SOA Módulo 2 – Os Fundamentos Limites dos Web Services • Latência • XML são considerados lentos • Web Services devem ser concebidos para função de alto nível • Segurança • Expor dados via padrões abertos pode ser perigoso • Não foram concebidos com essa preocupação • Gerenciamento • Integrações ponto-a-ponto • Monitoramento de performancee e disponibilidade • Controle de Versão Dismistificando SOA Módulo 2 – Os Fundamentos Desmistificando SOA Módulo 3 – Bem-Vindo a SOA Empresas em Direção a SOA Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Definição do Conceito É uma estratégia que propõe a organização dos ativos de software de forma que eles possam representar Processos, Atividades ou Tarefas de Negócio. Tais representações são chamadas de Serviços, que devem ser baseados em padrões e facilmente combinados e reutilizados visando a satisfação dos requerimentos do negócio. Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Mais uma definição… SOA é a implementação de uma plataforma de serviços, que significa elementos de processo de negócios, que podem ser combinados a recombinados em diferentes soluções e cenários, como determinado pelas necessidades dos negócios. A capacidade de integrar e recombinar serviços prover uma maior aproximação entre o negócios e TI bem como maior flexibilidade para resolver novas situações. Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Sobre SOA • SOA (Service Oriented Architeture) significa Arquitetura orientada a serviços [1970]. • SOA não é orientado a objetos [1980]. Muito menos implementar web services • Bons desenvolvedores estruturados implementam as características de código do SOA (dados só acessíveis via rotinas específicas, rotinas de cálculo comuns, etc). • A diferença é a fatoração. É o olhar que damos a estrutura e volatilidade das rotinas em relação ao ciclo de vida do negócio. Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Sobre SOA • Dar ao software um ciclo de vida igual ao do negócio é uma vantagem sensível. • Fraco acoplamento ( loose-coupled) dos serviços; • Independência de tecnologia e protocolos; • Uso irrestrito de padrões • Incentivo à reutilização de ativos • SOA não é aplicação N-TIER Dismistificando SOA Módulo 3 – Bem-vindo ao SOA SOA Permite INTERFACES INTERFACES FLUXO DE CONTROLE FLUXO DO PROCESSO REGRAS DE NEGÓCIO SERVIÇO SERVIÇO SERVIÇO IMPLEMENTAÇÃO SERVIÇO SERVIÇO SERVIÇO SERVIÇO SERVIÇO SERVIÇO SERVIÇO SERVIÇO SERVIÇO INTEGRAÇÃO Aplicação Monolítica Aplicação SOA Forte Acoplamento Fraco Acoplamento Dismistificando SOA Módulo 3 – Bem-vindo ao SOA SOA Permite • Desenvolvimento novos relacionamento com consumidores, parceiros e fornecedores • Melhoramento do time to market • Criar soluções diferenciadas com alto valor para clientes e parceiros em tempo • Redução de custos operacionais • Justificativa de investimentos de TI de maneira mais clara • Economia de tempo e dinheiro através da re-utilização Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Camadas do SOA Dismistificando SOA Módulo 3 – Bem-vindo ao SOA O Paradigma Muda Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Exemplo de Serviços II Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Antes e Depois Dismistificando SOA Módulo 4 – Planejando e Modelando Componentes do SOA SOA Aplicativos Serviços Repositório de Barramento de Serviços Serviços Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Componentes do SOA APPLICATION FRONTENDS ( Aplicativos ) • Inicializam e controlam todas as atividades da empresa • Existem diferentes tipo: com Interface gráfica, Aplicações WEB, … • Podem ser agentes ou programas Batch SERVICES ( Serviços ) • Componentes de software que representam um processo, atividade ou tarefa de negócio • São componentes de alto nível, orientados ao negócio • São compostos por lógica, dados, contrato e interfaces Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Componentes do SOA SERVICE REPOSITORY ( Repositório de Serviços ) • Um repositório de serviços que oferece facilidades para descobrir e obter informações sobre serviços SERVICE BUS ( Barramento de Serviços ) • Interconecta todos os participantes de uma SOA, abstraindo a complexidade técnica que existe nas camadas inferiores. Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Desmistificando SOA Módulo 4 – Planejando e Modelando SOA e BPM • BPM ( Business Process Management ) - É um conceito de gerência geral que foca nos aspectos estratégicos e operacionais do mapeamento, análise e otimização de processos de negócio de uma empresa. • BPM introduz o conceito de “process processing” • BPMS (Business Process Management System) – Oferece plataforma técnica para realizar as inciativas propostas pelo BPM. • BPMN é a notação usada pelas BPMS • Implementam extensivamente Linguagens de composição ( BPEL,...) Dismistificando SOA Módulo 4 – Planejando e Modelando Evolução das linguagens de Composição Dismistificando SOA Módulo 4 – Planejando e Modelando Orquestrar X Coerografar Orquestrar Coreografar • Coordenação central • Os componentes não sabem quem esta envolvido • Sem coordenação Central • Cada componente sabe exatamente quando executar sua operação Dismistificando SOA Módulo 4 – Planejando e Modelando BPEL • BPEL ( Business Process Execution Language ) – Padrão de como especificar a orquestração de processos de negócios • Baseado em XML Dismistificando SOA Módulo 4 – Planejando e Modelando BPM, SOA e BPEL Dismistificando SOA Módulo 4 – Planejando e Modelando BPM, SOA e BPEL na prática Dismistificando SOA Módulo 4 – Planejando e Modelando Um gráfico vale mais que mil palavras Processos de Negócios ( BPEL ) Ativos Serviços ( WS ) Componentes Legado Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Entendendo o ESB • É um termo criado pelo Gartner Group. • Seu conceito é de uma camada de desacoplamento entre aplicações (e não sistemas) já existentes. • É implementado através de uma solução de mensageria de interface rica. •A função primária do ESB é conectividade, inter-conectar os participantes de um SOA • Facilita aplicações e serviços invocarem serviços • ESB é uma abordagem para promover integração entre softwares já existentes através de uma coleção de midlewares diferentes Dismistificando SOA Módulo 4 – Planejando e Modelando Entendendo o ESB Principais funcionalidades • Heterogenia de Tecnologias – O ESB deve conectar uma variedade de diferentes tecnologias possibilitando a comunicação de participantes baseados em diferentes linguagens de programação, sistemas operacionais Heterogenia de Comunicação – O ESB deve oferecer uma variedade de conceitos de comunicação permitindo diferentes modos de comunicação entre os participantes. • Serviços Técnicos – O ESB pode prover serviços como LOG, Auditoria, Segurança e Transformação. • ou pela definição da IBM – Transporte, Mediação e Qualidade do Serviço ( Quality of Service - QoS ) e Web Service Gateway Dismistificando SOA Módulo 4 – Planejando e Modelando Entendendo o ESB Dismistificando SOA Módulo 4 – Planejando e Modelando Entendendo ESB II Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Entendendo ESB III Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Entendendo ESB IV Dismistificando SOA Módulo 3 – Bem-vindo ao SOA O Programa SOA • SOA é uma iniciativa de longo prazo (3 – 5 anos) • Compreende a execução de dezenas ou centenas de projetos • Projetos que devem respeitar Estruturas, Processos e Padrões • Além (ou apesar) de adotarem integralmente o conceito de “Acoplamento Fraco” que caracteriza os Serviços Programa: Segundo PMI-PMBOK, um programa consiste em um conjunto de projetos Dismistificando SOA Módulo 4 – Planejando e Modelando Projetos SOA • Projetos são de pequeno porte (2 – 8 semanas); • Exceto o projeto de implementação do ESB, que deve evoluir gradualmente e pode durar meses; • Proximidade com as áreas de negócio é fundamental para o sucesso assim como a aderência aos padrões; Dismistificando SOA Módulo 4 – Planejando e Modelando Enganos comuns 1. Argumentar sobre o conceito ao invés sobre o como fazer 2. Confundir Web Services com SOA 3. Deixar SOA exclusivamente nas mãos de TI 4. Achar que se pode comprar SOA de um fornecedor 5. Construir SOA “do zero” 6. Usar um processo Cascata ( “waterfall” ) 7. Tornar SOA muito complicado Dismistificando SOA Módulo 4 – Planejando e Modelando Primeiros Passos • Identificar 1 (um!) processo de negócio que: - Componha o ‘core business’ - Seja ‘nervoso’ (volátil) - Tenha relevância na cadeia de valor - Esteja ‘mal-atendido’ por TI (e esteja no backlog de manutenção!) • • • Definir um “Rabisco de Processo” Identificar e Classificar todos os prováveis Serviços Aferir capacidade de reuso dos prováveis Serviços • Avaliar: - Projeto SOA (overhead reuso) X Tradicional - Redução do Custo de Propriedade • • Rabiscar um “Plano Arquitetônico” Bancar o primeiro “Projeto SOA”! Dismistificando SOA Módulo 4 – Planejando e Modelando Desmistificando SOA Módulo 5 – SOA em Ação SOA em B2B Aumentando o potencial : • Facilidade para novas soluções • Facilidade para novos negócios Dismistificando SOA Módulo 5 – SOA em Ação Construindo HUBs HUBs Corporativos: • Facilita o gerenciamento • Facilita a segurança Dismistificando SOA Módulo 5 – SOA em Ação Interação entre Parceiros Dismistificando SOA Módulo 5 – SOA em Ação Interação entre Parceiros Dismistificando SOA Módulo 5 – SOA em Ação Motivação e Benefícios Re-Uso: Segundo Barry,1999 alguns aspectos que tendem a influenciar diretamente a produtividade do desenvolvimento e no impacto sobre custos é descrito da seguinte forma: • Trabalhando mais rápido (ex.: automação, ferramentas e ambientes): 8% de ganho. • Trabalhando de forma mais inteligente (ex.: melhoria dos processos): 17% de ganho. • Evitando o trabalho desnecessário (ex.: reuso dos artefatos de projeto): 47% de ganho. Dismistificando SOA Módulo 3 – Bem-vindo ao SOA Obrigado ! Dismistificando SOA Bibiliografia / Referências Let´s Talk About SOA – Creative Commons Enterprise SOA Dirk Krafzig et al Prentice-Hall (2005) www.zapthink.com www.hbr.com Understanding Enterprise SOA Eric Puler Manning (2006) www.bpmi.org Advantage Competitive Michael Porter Free Press( 1987 ) Service-Oriented Architecture ( SOA ) Compass Nobert B., Sajay B IBM Press (2006) Dismistificando SOA