UNISINOS SOA e Web Services Giovane Barcelos giovanebarcelos@gmail.com São Leopoldo, Maio de 2010
Roteiro Introdução SOA Serviços Web Services Composição de Serviços Implementação InSOA Conclusão Publicado em: http://ubuntuone.com/p/3ds/ 2
Introdução Porque precisamos de? Integração e Composição de Sistemas e Processos 3
Introdução Porque integrar? Vamos reescrever tudo de novo!!! Existem situações em que isto é praticamente impossível: Por falta de tempo Recursos financeiros Problemas técnicos 4
Introdução Porque precisamos de? Alinhar TI com o Negócio Automatizar e Integrar Processos de Negócios Gerenciar Fluxo de Processos (Workflow) Compor e Integrar Processos 5
SOA Mas afinal, o que é SOA? SOA (Service-Oriented Architecture) SOA é um estilo de arquitetura de software onde as aplicações devem ser disponibilizadas na forma de serviços SOA NÃO É: uma tecnologia web services estratégia de integração de sistemas 6
SOA Exemplo típico de SOA Ordem de Compra Contabilidade Estoque Barramento de Serviços Fornecedor NF de Entrada Contas a Pagar 7
SOA O que SOA requer? Modelagem e simulação de processos (BPMN, BPEL) Orquestração dos processos de negócio como serviços Componentização e reuso de serviços (SCA, WS-*) Integrações de aplicações (WS-*, JNI, JMS) Gerenciamento de processos em servidores de processos Monitoração dos processos de negócio (BAM) 8
SOA Quais os princípios da arquitetura? 1/2 Encapsulamento Baixa Acoplagem Contrato Abstração Reusabilidade 9
SOA Quais os princípios da arquitetura? 2/2 Composição Autonomia Otimização Descoberta Relevância 10
SOA Quais são os elementos? SOA Aplicação Frontend Contrato/ Definição Serviço Repositório de Serviços Implementação Lógica de Negócios Barramento de Serviços Interface Banco de Dados 11
Servicos SOA e os Serviços Implementações SOA utilizam Serviços Web e geralmente SOA utiliza WS Serviços são aplicações disponíveis na Web Principais padrões de serviços: RPC CORBA DCOM Web Services REST DDS WCF Exemplo WS: http://www.webservicex.net/wcf/servicedetails.as px?sid=19 12
Serviços RPC RPC (Remote Procedure Call) 13
Serviços CORBA - OMG CORBA (Common Object Request Broker Architecture) 14
Serviços DCOM - Microsoft DCOM (Dynamic Component Object Model) 15
Web Services Afinal de contas, o que são WS? WS (Web Services) Serviços Web Web Services fornecem um padrão de interoperabilidade entre aplicações diferentes, rodando sobre plataformas e/ou frameworks distintos Especificação W3C (w3c.org): XML, XPath, XQuery,... Mensagens (SOAP, WS-Addressing,...) Metadados de trocas (WSDL, UDDI, WS-Policies, ) Segurança e Confiabilidade (WS-Security, WS-Trust, ) Privacidade (P3P) Recursos (WS-Resource, WS-Transfer, ) Interoperabilidade (WS-Basic Profile, ) Processos de Negócios (WS-BPEL, WS-CDL,..) Transações (WS-Transaction, WS-Coordination, ) Gerenciamento (WS-Management, WSDM,...) 16
Web Services Arquitetura Serviços como Web-Services (WS) Usuário ou aplicação Troca de mensagens (SOAP) Lógica e dados encapsulados Cliente Web-Services Serviço Web-Services SOAP: Simple Object Access Protocol Arquitetura Web-Services (WS) SOAP Troca Mensagens WSDL WSDL Servidor Publicação SOAP: Simple Object Access Protocol UDDI: Universal Description, Discovery and Integration Diretório de Serviços (UDDI) Cliente Pesquisa e Descoberta 17
Web Services Pilha Pilha de Tecnologias Pilha de Soluções Descoberta UDDI Descrição WSDL Empacotamento SOAP Transporte HTTP (Web) Rede TCP / IP (Internet) 18
Web Services O que é XML? extensible Markup Language: padrão W3C Maneira de representar informação Não é uma linguagem específica Não define vocabulário de comandos Não define uma gramática, apenas regras mínimas 19
Web Services XML versus HTML 20
Web Services Exemplo WSDL 1/2 21
Web Services Exemplo WSDL 2/2 22
Web Services SOAP Formato Genérico SOAP Envelope SOAP Cabeçalho (Header) SOAP Corpo (Body) 23
Web Services Exemplo SOAP Pedido SOAP Resposta SOAP 24
Web Services O que é REST? REST significa REpresentational State Transfer É um estilo de arquitetura de serviços e WS Trabalha essencialmente com o protocolo HTTP Proposto por Roy Fielding (Tese) autor da especificação HTTP 25
Web Services REST versus WS-*? WS-* - Modelo OSI e W3C Formalidade e overhead de protocolos Muitas especificações antes de implementar Modelo Waterfall / Cascata REST TCP/IP Simplicidade e flexibilidade Especificações junto com implementação Modelo incremental 26
Web Services Comandos REST GET PUT CLIENTE RECURSO POST DELETE CLIENTE INVOKE Atividade 1 INVOKE Atividade 2 INVOKE Atividade 3 27
Web Services SOAP x REST = Declarativo x Imperativo SOAP <soap:envelope> <soap:body> <globo:getbook> <id>soap123</id> Operação e parâmetros </globo:getbook> </soap:body> </soap:envelope> REST URI do recurso Método HTTP GET /getbook/soap123 Como O quê 28
Web Services REST e SOAP Itens Importantes Recursos URI (Uniform Resource Identifier) Formatos e tipos disponíveis Métodos Retorno Tags e identificadores 29
Composição Serviços O que significa compor serviços? Composição de Serviços com SOA (Service Oriented Architecture) WS1 SO integração de múltiplas plataformas AP WS2 Usuário ou aplicação UI SOAP Cliente Web-Services WS3 SO Servidor de composição de Web-Services responsável pela Orquestração WS AP Linguagens BPEL4WS e OWL-S Abordagens distintas Escritas com auxílio de ferramentas gráficas 30
Composição de Serviços O que é Orquestração? Um processo central controle os serviços 1. Inicia 2. Executa 5. Retorno 4. Executa 3. Executa 31 31
Composição de Serviços O que é Coreografia? Não depende de um coordenador central 5. Executa 1. Inicia 3. Retorno 2. Executa 4. Executa 32 32
Composição de Serviços Design Patterns e Linguagens de Composição Para compor serviços Linguagem de Composição são essenciais Principais patterns de composição: Controle de fluxo básico (5) Marcação de sincronização avançados (4) Estruturais (2) Múltiplas instâncias (4) Baseados em estado (3) Cancelamento (2) Tratamento de Erros (1) Design Patterns ou Padrões de Projeto: Descrevem um problema que acontece repetidas vezes Foco em reutilização e documentação de soluções Úteis para analisar e comparar aplicações Seguem Patterns: BPEL4WS, XLANG, WSFL, XPDL e OWL-S 33
Composição de Serviços Linguagens: BPEL4WS e OWL-S BPEL4WS (Business Process Execution Language for WS): Originária das especificações WSFL (Web Services Flow Language) da IBM e da XLANG da Microsoft 4 partes: partnerlinks, variables, faulthandler e sequence Característica de execução procedural OWL-S (Ontology Web Language for Services) Predecessor é a linguagem DAML (DARPA Agent Markup Language) utilizada para criação de ontologias 4 partes: service, profile, process e grounding Descoberta, Invocação e Composição automática Característica de definição de Ontologias de Domínios 34
Composição de Serviços Análise Comparativa Design Patterns OWL-S: Vantagens devido ao suporte a XSLT (Extensible Stylesheet Language Transformations) BPEL: Vantagem em itens muito importantes (19 e 20) - tratamento de exceções e compensação 35
Implementação Típico roteiro de implementação SOA Processos de Negócios Integração Aplicações Segurança Centralização dos Dados Básicos / Mestres 36
Implementação Estratégias de Integração Projeto centralizado ou descentralizado de integração de sistemas Definição da arquitetura a ser utilizada Hub and Spoke ESB (Transporte, Transformação e Roteamento) 37
Implementação APIs de Integração 38
Implementação Integração SOA ESB Enterprise Service Bus 39
Implementação ESB e SOA Open Source MULE (http://mule.codehaus.org) - DEMO APACHE (http://incubator.apache.org/servicemix e tuscany) ECLIPSE (http://www.eclipse.org/stp/ ) 40
Implementação ESB e SOA Suites (Real-Wold Labs) 41
Implementação Métodos de transporte ESB Software BEA CAPE Clear Florano WebSphere Oracle AG Sonic TIBCO Servidor J2EE J2EE J2EE OS Nativo J2EE J2EE J2EE OS Nativo Barramento JMS HTTP JMS Definido HTTP JMS Sonic MQ TIBCO Metadados Outro BPEL Outro Outro BPEL Outro Outro Outro 42
InSOA Cenário de Convergência e Evolução Arquiteturas Centralizadas Arquiteturas Distribuídas Web Services (WS) SOA (Service Oriented Architecture) Business Process Management SOA Linguagens de Composição de Serviços Computador Pessoal Dispositivos Móveis Dispositivos Móveis Clientes Dispositivos Móveis Servidores Linguagens Compiladas Linguagens interpretadas e declarativas Embutidas e leves 43
InSOA Características desejadas Soluções atuais devem: Ser distribuídas Orientadas a serviços Compor serviços Adequadas a dispositivos móveis Prover serviços e uso destes Tendência para linguagens declarativas [Aho 2006] Possibilidade de ser embutida e leves 44
insoa Questão de Pesquisa Como criar composições de serviços em dispositivos móveis utilizando uma linguagem de composição declarativa? 45
Linguagem insoa Projeto U-SOA insoa faz parte do Projeto U-SOA U-SOA significa Ubiquitous ServiceOriented Architecture É uma pilha de tecnologias separada em camadas É uma arquitetura para desenvolvimento de aplicações colaborativas ubíquas 46
insoa Características (1/2) insoa (invoke SOA) é uma linguagem declarativa de composição de serviços com foco em dispositivos móveis Insensível a capitalização Possui declaração flexível Faz validação de padrões (URI RFC 3986 e XPath 2.0) Comandos são opcionais, com exceção do invoke 47
insoa Características (2/2) Suporte a tratamento de falhas Orquestração de WS Organiza invocações de forma otimizada em objetos Gera saída customizável com StringTemplate Pode ser embutida Leve e não exige software de autoria 48
insoa Exemplo -- Exemplo insoa /* Data: 19/02/2009 */ invoke http://usoa.insoa/ws1.operationa as a if way!= 1, http://usoa.insoa/ws2.operationb as b input way type Number default 0 into / as waypipe, / as waypipea set a.field := way, b.field := waypipea/result/text() where waypipe/result/tag/text() == 'Valid' return waypipe/result/field/text() type String name Result fail a: invoke http://usoa.insoa/ws2.operation as c set c.field := 'Rollback', c.way := way id Identification tags Example; 49
insoa Gramática Diagrama da sintaxe 50
insoa Design Patterns Implementados B P E L O W L S in S O A B P E L O W L S in S O A 1. Sequence 12. Multiple Instances Without Synchronization 2. Parallel Split 13. Multiple Instances With a Priori Design Time Knowledge 3. Synchronization 14. Multiple Instances With a Priori Runtime Knowledge - - 4. Exclusive Choice 15. Multiple Instances Without a Priori Runtime Knowledge - 5. Simple Merge 16. Deferred Choice 6. Multi-choice 17. Interleaved Parallel - - 7. Synchronizing Merge 18. Milestone - - - 8. Multi-merge - - 19. Cancel Activity 9. Discriminator - - 20. Cancel Case 10. Arbitrary Cycles - - 21. Exception Handling - 11. Implicit Termination Pattern Pattern 51
insoa Protótipo Funcional 52
InSOA Estudo de Caso 2 Cenários: Consulta de Viagem (4 níveis, 10 WS, 10 Composições insoa) Consulta de Livros (5 níveis, 8 WS, 12 Composições insoa) Processo integrado de teste: 53
insoa Cenário 1: Consulta de Viagem 4 níveis 10 Composições insoa 10 WS 10 Emuladores 54
insoa Comparação com os Paradigmas Atuais # Característica BPEL OWL-S insoa a Insensível a capitalização NÃO NÃO SIM b Declaração Flexível NÃO NÃO SIM c Validação de Padrões NÃO NÃO SIM d Tratamento XML Externo Externo Interno e Opcionalidade NÃO NÃO SIM f Tratamento de Erros SIM SIM SIM g Orquestração SIM SIM SIM h Saída Customizável NÃO NÃO SIM i Invocação Otimizada NÃO NÃO SIM j Embutida NÃO NÃO SIM k Leve NÃO NÃO SIM l Abordagem Funcional Orientada para Objetos Declarativa XML XML m Baseada Texto 55
insoa Patterns Implementados/Testados no Estudo de Caso Pattern I? T? Pattern I? T? 1. Sequence Sim Sim 12. Multiple Instances Without Synchronization Sim Não 2. Parallel Split Sim Sim 13. Multiple Instances With a Priori Design Time Knowledge Sim Não 3. Synchronization Sim Sim 14. Multiple Instances With a Priori Runtime Knowledge Sim Não 4. Exclusive Choice Sim Não 15. Multiple Instances Without a Priori Runtime Knowledge Sim Não 5. Simple Merge Sim Sim 16. Deferred Choice Sim Não 6. Multi-choice Sim Não 17. Interleaved Parallel Sim Não 7. Synchronizing Merge Sim Sim 18. Milestone Não Não 8. Multi-merge Sim Sim 19. Cancel Activity Sim Sim 9. Discriminator Sim Não 20. Cancel Case Sim Sim 10. Arbitrary Cycles Sim Não 21. Exception Handling Sim Não 11. Implicit Termination Sim Sim Legenda: I? = Implementado? e T? = Testado 56
insoa Comparação BPEL4WS, OWL-S e insoa Linguagem Motivação Componentes Paradigma Tratamento Retorno XML BPEL4WS OWL-S insoa WSFL e XLANG partnerlinks, Procedural Externo variables, faulthandler e sequence DAML POO Externo service, profile, process e grounding Declarativa Invoke, input, Declarativo Interno into, set, where, return, fail, id e tags 57
Introdução Críticas SOA SOA é apenas uma nova palavra para WS Dependência de SOA à tecnologia WS Altos custos e riscos ocasionados pela constante evolução dos padrões ligados a SOA Serviços SOA com estado (stateful) criam alto grau de acoplamento e reduz escalabilidade SOA é só uma evolução e não um novo conceito Rigidez nas interfaces gera impacto negativo nas alterações dos serviços 58
Conclusão Integrar é preciso Quem não se comunica se trumbica SOA é um conceito e não tecnologia WS é a tecnologia mais utilizada na atualidade 59
Referências Bibliográficas Parcial [Aalst 2003] Aalst, W.M.P van der; Dumas, M. e Hofstede, A.H.M. Ter. Web service composition languages: old wine in New bottles?. Euromicro Conference. IEEE. ISBN: 0-7695-1996-2. 2003. [Aho 2006] Aho, Alfred V.; Lam, Monica S.; Sethi, Ravi e Ullman, Jeffrey D. Compilers: Principles, Techniques, & Tools. Pearson Addison Wesley. 1000 Pág. ISBN: 978-0321486813. 2006. [Erl 2005] Erl, Thomas. Service-Oriented Architecture: Concepts, Technology, and Design. Prentice Hall PTR. 792 Pág. ISBN: 978-0131858589. 2005. [Haseman 2008] Haseman, Chris. Android Essentials. Apress. 166 Pág. ISBN: 978-1430210641. 2008. [Martin 2004] Martin, D. at al. OWL-S: Semantic Markup for Web Services. W3C. http://www.w3.org/submission/owl-s/. 2004. [Parr 2007] Parr, Terence. The Definitive Antlr Reference: Building DomainSpecific Languages. Pragmatic Bookshelf. 376 pag. ISBN: 978-0978739256. 2007. [Staab 2003] Staab, S.; van der Aalst, W.; Benjamins, V.R.; Sheth, A.; Miller, J.A.; Bussler, C.; Maedche, A.; Fensel, D. e Gannon, D.. Web services: been there, done that?. IEEE, DOI: 10.1109/MIS.2003.1179197. 2003. [Will 2003] Will, van der Aalst. Don't go with the flow: Web services 60 composition standards exposed. IEEE Intelligent Systems. 2003.
Referências Bibliográficas Parcial [1] W3C, Web Services Architecture, 2004, disponível em: http://www.w3.org/tr/ws-arch/#introduction, acessado em: 23/05/08. [2] M. Nakamura, H. Igaki,, H. Tamada, K. Matsumoto, Implementing Integrated Services of Networked Home Appliances using service oriented Architecture, In: 2nd International Conference on Service Oriented Computing, Novembro, 2004 [3] M. Hu, Web Services Composition, Partition, and Quality of Service in Distributed System Integration and Re-engineering, 2003, XML Conference & Exposition 2003 [4] J. Shen, Y. Yang, C. Zhu e C. Wan, From BPEL4WS to OWL-S: Integrating E-Business Process Descriptions, Services Computing, 2005 IEEE International Conference. [5] W.M.P van der Aalst, M. Dumas e A.H.M. ter Hofstede, Web service composition languages: old wine in New bottles?, 2003, IEEE. [6] E. Gamma, R. Helm, R. Johnson e J.M. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, 1994, AddisonWesley. [7] W.M.P. van der Aalst, A.H.M. ter Hofstede, B. Kiepuszewski, e A.P. Barros, Workflow Patterns, 2000 61
Agradecimentos Perguntas OBRIGADO! 62