Aplicando Composição e Orquestração de Serviços na Organização de Sistemas Silva, Leo Moreira Centro Federal de Educação Tecnológica do Rio Grande do Norte (CEFET-RN) CEP 59015-000 – Natal – RN – Brazil 1. Introdução Atualmente, um grande desafio para empresas de qualquer gênero é a integração de sistemas heterogêneos e dinâmicos. Para atender essa necessidade, surge a Arquitetura Orientada a Serviços (SOA, do inglês Service-Oriented Architecture), visando a interoperabilidade e a reusabilidade de componentes. Em SOA, as funcionalidades são providas através de serviços em servidores específicos. As principais vantagens da SOA são: ● Reuso; ● Baixo acomplamento; ● Autonomia; ● Abstração; ● Contrato de Serviço; ● Inexistência de Estados. Com essa nova visão, os recursos e o conhecimento não são mais exclusivos a departamentos ou setores. Essa junção de esforços trás uma vantagem competitiva. Mas essa busca por um novo paradigma, acaba fazendo que as empresas utilizem apenas a tecnologia de Web Services , mudando apenas a forma de implementação de seus sistemas. Isso é o que se chama de falso SOA. A diferença básica é que SOA representa um novo paradigma para o desenvolvimento de aplicações corporativas orientadas a serviços, enquanto Web Services representam a tecnologia para o desenvolvimento dessas aplicações. Para auxiliar na solução dessa confusão, surgem alguns padrões que disciplinam e auxiliam na criação de composições através de linguagens para expressar a lógica de serviços compostos em processos de negócio. BPEL é uma das principais linguagens para especificar processos de negócio e o estado dos processos. Existem duas formas de se realizar composição de serviços: Orquestração e Coreografia. A orquestração é organizada por coordenador, fazendo verificações de précondições e pós-condições. Já na coreografia, todos auxiliam na fluxo das operações. O artigo se referiu a um estudo de em sistemas de uma empresa de telecomunicações que utiliza Web Services para comunicação interna e externa entre eles. Até o momento de conclusão, a empresa não utilizava o paradigma de orientação a serviços. O estudo utilizou a ferramenta BPEL para aplicar os conceitos de orquestração e composição. 2. Objetivos e Metodologias Como objetivo geral da monografia, foi implementar a orquestração de serviços em um ambiente real. Em objetivos específicos, a realização de estudos das tecnologias envolvidas, bem como as plataformas e ferramentas. A metodologia aplicada, foi em um primeiro momento, a realização do estudo da plataforma envolvida e logo após um estudo teórico das tecnologias. Por fim, foi realizada a implementação do estudo. 3. Fundamentação Teórica 3.1 SOA A primeira tecnologia abordada no estudo, foi a tecnologia SOA. Basicamente é demonstrada a definição forma; da tecnologia, mostrando o que cada palavra significa e como deve ser interpretada. No caso de SOA, as duas primeias palavras ServiceOriented expressam uma metodologia de software, enquanto Architecture seria um panorama dos componentes do sistemas, como se fosse uma planta arquitetônica. Também é apresentando o paradigma a qual o SOA é implementado, o findbind-execute. Esse paradigma segue o princípio de publicação de serviços, e consumidores buscam pelos mesmo. Caso o consumidor encontre o serviço necessário, é criado um contrato e o mesmo devolve um endereço para utilização do serviço. Abaixo, a figura ilustra esse paradigma. Figura 1: Paradigma Find-Bind-Execute 3.1.1 Vantagens do SOA Segundo o estudo, a grande vantagem da utilização do SOA é a integração entre aplicações através de serviços. Basicamente, essa integração de serviços é regida por contratos, onde são definidos o conjunto de mensagens suportadas, seu conteúdo e políticas(ALVEZ et al., 2006). 3.1.2 Características do SOA Dentro do estudo, são apontadas algumas características importantes do SOA. Entre estão: ● Baixo; ● Contrato; ● Autonomia ; ● Abstração; ● Reuso; ● Composição; ● Estado. 3.2 Web Services O estudo inicia esse tópico abordando tecnologias que tiveram a iniciativa de comunicação em ambientes distribuído, como Corba e JAVA RMI. Essas tecnologias apresentam problemas na sua implementação. Nesse contexto, os Web Services surgiram para corrigir esses problemas. É apontado como uma grande vantagem dos Web Services, a utilização de baixo acoplamento entre sistemas e sua interoperabilidade, além de usar padrões abertos baseados em XML como WSDL,SOAP .e UDDI Abaixo é demostrada a arquitetura do Web Service. No estudo, é dado um destaque para similaridade entre a arquitetura Web Service e SOA, pois a primeira é uma implementação da segunda. Figura 2: Arquitetura Web Service Na continuação do estudo, são apresentados os componentes de um Web Services. Em resumo, essas são as principais características citadas de cada um: ● Serviços – é um componente que atende a uma função de negócio específica. Ele recebe requisições e oculta todo o processamento; ● WSDL – define como as mensagens devem ser troca entre um consumidor e um serviço. Tem como objetivo principal, descrever as interfaces dos serviços, sem ficar preso a nenhuma plataforma; ● SOAP – é o protocolo de comunicação dos Web Services. Ele utiliza a infraestrutura de rede, navegando sobre o protocolo HTTP, facilitando a comunicação, pois na maioria das vezes não é barrado por firewalls; ● UDDI – fornece o mecanismo para localização de serviços. Organiza ponteiros para descrição de serviços para acomodar o processo de descoberta através de registro de serviços. 3.3. Camada de Serviços Após a introdução das tecnologias necessárias para a implementação do serviço, o estudo apresenta os princípios fundamentais para implementação da tecnologia orientada a serviços. Em um primeiro momento, é apresentada a camada de serviços, onde segundo o estudo, é a área onde as características do SOA são mais prevalentes. E para uma melhora compreensão, é demostrada a divisão dessas camada em 3 partes como mostra a figura Figura 3: As 3 principais camadas de serviço Um resumo das principais características das camadas: ● Camada de Serviços de Aplicação – provê funções reusáveis relacionadas ao processamento de dados de um sistema novo ou legado. Os serviços que rodam nessa camada rodam dentro de uma contexto específico, são genéricos e reutilizáveis e podem ser usados para atingir uma integração ponto a ponto com outros serviços de aplicação; ● Camada de Serviços de Negócio – representam a lógica de negócio da aplicação. São os serviços base da SOA; ● Camada de Serviços de Orquestração – impõe uma ordem seqüencial correta na execução dos serviços. 3.4 Modelagem de Serviços O estudo apresenta a situação atual das organizações, onde a mentalidade de se buscar uma melhora em processos individuais está sendo deixado de lado, para uma mentalidade onde todos os processos se interligam para alcançar um objetivo único. Para complementar essa informa, são apresentados alguns conceitos de um processo de negócio. O primeiro tópico é o processo de negócio em si. Basicamente, é um conjunto de tarefas que contribuem coletivamente para que uma organização atinja seus objetivos. E para ajudar no mapeamento dessas tarefas, é apresentado o conceito de workflow, que nada mais é do que um conjunto de uma ou mais atividades diretamente ligadas , que realizam coletivamente um objetivo do negócio. Logo após, é apresentado o conceito de BPM (Business Process Management), que surgiu da necessidade de se mapear processos além das fronteiras de uma organização. Com BPM, processos totalmente diferentes começaram a ser mapeados em função de um objetivo. O estudo cita que o BPM surge baseada em SOA, e junto com eles, a necessidade de se compor serviços, ou seja, combinar serviços para que os mesmos alcancem objetivos que superam suas capacidades individuais. Trazendo essa teoria para o estudo, essa composição conecta Web Services objetivando criar processos de negócio de alto nível, com alto valor agregado. A figura abaixo ilustra esse conceito. Figura 4: Composição de Serviços E para se atingir essa composição de serviços, o estudo demonstra as principais técnicas de composição, que são orquestração e coreografia. No estudo, orquestração é citada como um mecanismo que permite dois ou mais sistemas se comuniquem, utilizando uma orquestradora central. Sua grande vantagem, é que não existe a necessidade de se refazer funcionalidades de sistema já existentes, deixando a cargo da orquestradora central a invocação e retorno das mensagens. A figura abaixo ilustra o seu funcionamento. Figura 5: Orquestração de Serviços Ao contrário da orquestração, na coreografia, os serviços conhecem uns aos outros e cada um conhece sua função dentro do fluxo do processo. A coreografia é realizada através da troca de mensagem entre os serviços. Abaixo a figura ilustrando a coreografia. Figura 6: Coreografia de Serviços O estudo também trás um comparativo entre as duas abordagens de composição. Entre as principais vantagens da orquestração em relação a coreografia, está no fato da flexibilidade, pois a inserção de um Web Service dentro de um grande processo de negócio sem a necessidade de apresentar o serviço as todos os Web Service rodando. Por outro lado, na coreografia, é traçada a correta ordem da sequência de mensagens , sem que nenhum deles controle a conversação. Durante o estudo é citada da linguagem BPEL (Business Process Execution Language) que serve para especificar o comportamento de um processo de negócio. BPEL é uma linguagem usada para padronizar a integração de aplicações e para integrar sistemas isolados. Para finalizar, são apresentadas ferramentas para composição de serviço. Dentre as ferramentas se destacam: ● WebSphere – Utilização de tecnologia J2EE e SOA. Possui uma perspectiva para modelagem dos processos de negócio utilizando BPEL; ● Microsoft BizTalk Server 2006 – ferramenta poderosa para desenvolvimento,implantação e gerenciamento de processos de negócio. Possibilidade de modelar regras de negócio; ● JBoss jBPM – criação de processos de negócio para coordenador pessoas,aplicações e serviços. Possui um ambiente para fácil programação; ● NetBeans IDE – possibilita criação,testes e depuração de aplicativos utilizando XML,BPEL e serviços Web em Java; ● ActiveBPEL – ferramenta utilizada durante o estudo. É uma ambiente de execução de processos de negócio baseado no padrão WS-BPEL. Também é possível gerenciar persistência de dados, filas, alarmes e diversos outros detalhes inerentes a execução de processos de negócio. 4. Desenvolvimento do Projeto A parte prática do estudo foi a realização de uma composição através de orquestração, utilizando os sistemas de uma empresas de telecomunicações. No inicio, são abordadas as soluções que a empresa provê. O sistemas da arquitetura pertencem apenas a camada de serviços da aplicação, ficando de fora dessa implementação a camada de serviço de negócio e a camada de orquestração. Abaixo é ilustrada uma figura com todos os serviços contemplados pelas aplicações. Figura 7: Estrutura dos Sistemas da Plataforma Logo em seguida, é realizada uma descrição detalhada de cada serviço. Um detalhe que é bastante frisado no estudo, é que muito dos sistemas que estão rodando realizam operações em comum, mas cada sistema possui a implementação das operações separadamente, resultando em excessiva duplicação de código. Para resolver esse problema, pode-se criar serviços utilitários, como por exemplo, o serviço manipuladorXML, que nada mais é, do que um serviço que lê dados referentes a consulta de banco de dados. Esses serviços utilitários também foram utilizados para compor serviços, resultando em uma performance mais adequada. Em um primeiro exemplo, ele demonstra como utilizar a composição de 2 serviços, no caso ManipularXML e SalvarGrupo que estão na camada de serviço de aplicação. Abaixo uma ilustração do serviços. Figura 8: Serviços ManipularXML e SalvarGrupo na Camada de Serviço de Aplicação. Abaixo é mostrado como é executado os 2 serviços interagem para gerar um novo serviço chamado ServiceSalvarGrupo. BasicamenteO processo inicia-se quando o cliente requisita a operação, representada pela operação ReceberDoCliente. Após isso, as variáveis do serviço LerXML são iniciadas e o serviço é invocado. Num passo seguinte, o processo entra em um condicional if. Se a mensagem de retorno do serviço LerXML for a string de consulta,o processo continua, senão, uma mensagem é retornada ao cliente. Caso o processo continue, as variáveis do serviço SalvarGrupo são iniciadas e o serviço é invocado realizando sua tarefa dentro do processo. Posteriormente, a resposta do serviço SalvarGrupo é verdadeira. Se o for, a variável de resposta é iniciada e a mesma é retornada ao cliente. Caso contrário, o processo envia outra mensagem ao cliente, indicando que o processo falhou. Figura 9: Processo ServiceSalvarGrupo. Como o estudo aborda, logo após a composição esse novo serviço fica a disposição na camada de serviços como ilustra a figura abaixo. Figura 10: Serviço ServicoSalvarGrupo nas camadas de Aplicação e Negócios Na seqüência do estudo, é mostrado outro exemplo de composição de serviços, mostrando a mesma lógica de desenvolvimento. Como resultado, foi demonstrado a reusabilidade de serviços e composição dos mesmo para gerar serviços mais completos. 5. Conclusões O estudo tira como conclusão principal a combinação de Web Services para gerar serviços de valor agregado. No exemplo foi ilustrado que não é uma tarefa complexa como poderia se imaginar. 6. Referências Silva, Leo Moreira (2007) “Aplicando Composição e Orquestração de Serviços na Organização de Sistemas”, www.ic.unicamp.br/~beatriz/cursos/mo809/2008/referencias/monografia.pdf, Maio.