Hugo Silva [email protected] Orientado por: Doutor Paulo Gandra de Sousa Relatório de Projecto Departamento de Engenharia Informática Instituto Superior de Engenharia do Porto Instituto Politécnico do Porto Setembro de 2004 1. INTRODUÇÃO ...................................................................................................3 1.1. Objectivos................................................................................................................... 4 1.2. Organização do documento ..................................................................................... 4 2. NECESSIDADES DE SOFTWARE ..........................................................................5 2.1. Evolução do Software................................................................................................ 5 2.1.1. Primeira era ......................................................................................................... 5 2.1.2. Segunda era ......................................................................................................... 6 2.1.3. Terceira era.......................................................................................................... 6 2.1.4. Quarta era ............................................................................................................ 6 2.1.5. Quinta era ............................................................................................................ 6 2.2. Sistemas de Software................................................................................................. 7 2.3. Simplificação e generalização.................................................................................. 7 2.4. Cooperação entre empresas..................................................................................... 8 2.5. Mobilidade.................................................................................................................. 8 3. SERVICE-ORIENTED ARCHITECTURE ..................................................................9 3.1. Definição ..................................................................................................................... 9 3.2. Mudança de paradigma ........................................................................................... 9 3.3. Loose Coupling......................................................................................................... 12 3.3.1. Mensagens......................................................................................................... 13 3.3.2. Documentos XML ............................................................................................ 14 3.4. Guias adicionais....................................................................................................... 15 3.4.1. Independência do estado .................................................................................. 15 3.4.2. Dependência do estado..................................................................................... 15 3.4.3. Idem-potência ................................................................................................... 16 3.5. Middleware................................................................................................................ 16 3.5.1. CORBA e DCOM............................................................................................. 17 3.5.2. Web Services ..................................................................................................... 17 3.6. Agregação de serviços............................................................................................. 18 3.7. Vantagens potenciais .............................................................................................. 20 3.7.1. Reaproveitamento de recursos ......................................................................... 20 -1- 3.7.2. 3.7.3. 3.7.4. 3.7.5. Facilidade de integração e de manutenção...................................................... 20 Maior capacidade de reacção ........................................................................... 20 Redução de custos e aumento da reutilização................................................. 21 Preparação para o futuro .................................................................................. 21 3.8. Exemplos................................................................................................................... 21 3.8.1. Google Web API ............................................................................................... 21 3.8.2. Amazon Web Service........................................................................................ 22 3.8.3. Qwest – Um exemplo de SOA aplicado em grande escala .................. 22 3.8.4. CACU – Um Exemplo de Workflow automatizado..................................... 25 3.8.5. Avista Corp. – Um exemplo de conectividade de Mainframes............... 26 4. INTEROPERABILIDADE.....................................................................................30 4.1. Message-Oriented Middleware ............................................................................... 31 4.2. Pontes Aplicacionais ............................................................................................... 32 4.3. Web Services ............................................................................................................. 32 4.3.1. Web Services Interoperability Organization................................................... 33 4.3.2. WS-I Basic Profile............................................................................................ 34 4.4. SOA e a interoperabilidade ................................................................................... 35 4.4.1. A interoperabilidade ao nível de negócio........................................................ 36 5. CONCLUSÃO ..................................................................................................39 ANEXOS ...............................................................................................................40 A. TECNOLOGIAS SUBJACENTES ......................................................................40 A.1. XML .......................................................................................................................... 40 A.2. Web Services ............................................................................................................. 41 A.2.1. Definição ........................................................................................................... 41 A.2.2. Stack Web Service............................................................................................. 42 A.2.3. UDDI ................................................................................................................. 42 A.2.4. WSDL................................................................................................................ 43 A.2.5. SOAP ................................................................................................................. 46 BIBLIOGRAFIA .......................................................................................................47 ÍNDICE DE EXEMPLOS ............................................................................................50 ÍNDICE DE FIGURAS ...............................................................................................51 -2- Nos nossos dias é comum ouvir as expressões empresa virtual ou empresa expandida aplicadas à industria. Estas significam que a empresa em causa é responsável apenas por uma parte do fabrico ou concepção do produto, por exemplo da montagem do produto acabado ou da sua comercialização. A crescente complexidade dos produtos parece ser um factor determinante no aparecimento de parcerias e na contratação de empresas especializadas em executar determinadas tarefas. De facto, nos dias que correm serão poucos os produtos totalmente fabricados por uma única empresa. Este tipo de estruturas proporciona às empresas uma grande facilidade de renovação ou reutilização de processos, pois permite que cada empresa se concentre no que faz de melhor, no entanto exige uma grande capacidade de comunicação e interacção. As ligações tomam assim um papel de destaque na organização das empresas, pois estas têm de ser capazes de interagir rapidamente e de preferência de forma automatizada. A capacidade para criar novas ligações com um mínimo de esforço favorece os negócios e pode muitas vezes ser vantagem suficiente para aproveitar as oportunidades que se apresentam. Quando as ligações entre as empresas deixam de ser um problema abre-se o caminho para que a qualidade do trabalho seja o factor de decisão principal na escolha de parceiros de negócios, torna-se também possível substituir partes da cadeia de produção de forma rápida e eficiente. À semelhança de outros produtos também o Software se tem tornado cada vez mais complexo. Nomeadamente no que se refere aos sistemas implementados em empresas de média e grande dimensão. De facto, hoje em dia, os sistemas informáticos integram uma grande diversidade de sub-componentes e sub-sistemas, como por exemplo programas de contabilidade, CRM (Customer Relationship Management), gestão de stocks, ERP (Enterprise Resource Planning), etc.. No entanto, embora albergados debaixo de um mesmo sistema, os componentes nem sempre se interligam como seria desejado o que causa conflitos de informação ou redundância. As ligações entre os componentes são um dos pontos mais sensíveis deste tipo de sistemas, pois são necessárias para o bom funcionamento da empresa e quase nunca são feitas de uma forma standard. O que implica que se torna custoso integrar novos componentes, principalmente se não forem feitos à medida. À semelhança do que acontece ao nível empresarial uma vez que a ligações entre os componentes deixem de ser uma problema passa a ser mais simples integrar num sistema novos módulos de Software mesmo que estes sejam “pré-fabricados”. A partilha de informação entre aplicações sempre foi uma preocupação dos fabricantes de Software pois é o primeiro passo para a reutilização do mesmo. Nos primeiros anos da informática os dados eram por vezes partilhados com recurso a cartões perfurados e fitas magnéticas, com a evolução do Hardware e do Software começaram a aparecer repositórios de dados, formatos de ficheiros standard e sistemas distribuídos, com o advento do XML (eXtensible Markup Language) a partilha de informação tornou-se cada vez mais simples. Hoje em dia com a proliferação de empresas de desenvolvimento de Software e de diferentes sistemas implementados, a atenção dos fabricantes vira-se sobretudo para a partilha de funcionalidades ou serviços e para a interoperabilidade dos seus sistemas. Tendo em conta a especialização das empresas no ramo da informática e a crescente complexidade dos sistemas implementados, torna-se mais simples -3- compreender os motivos que levam ao aparecimento de Arquitecturas Orientadas a Serviços (SOA) e a relevância que estas podem vir a ter num futuro próximo. Este documento foi produzido como resultado final da cadeira de Projecto do 5º ano da Licenciatura de Engenharia Informática do Instituto Superior de Engenharia do Porto, no ramo de Computadores e Sistemas e está subordinado ao tema: Service-Oriented Architectures e interoperabilidade de aplicações utilizando Web Services. Os objectivos deste projecto passam pelo estudo das Service-Oriented Architectures tendo em vista a interoperabilidade de aplicações residentes em sistemas/plataformas diferentes através de Web Services. Também se pretende que seja considerada a perspectiva das empresas e da indústria no processo que levou ao aparecimento das SOAs e dos benefícios que estas podem tirar delas e da interoperabilidade que elas proporcionam. Este documento está dividido em cinco capítulos cada um deles subdividido em secções. O primeiro capítulo contém a introdução ao contexto em que estão inseridas as tecnologias abordadas no documento. O segundo capítulo visa demonstrar as necessidades de Software que são vividas na actualidade, e contém secções sobre a evolução de Software, sistemas de Software, simplificação de generalização de Software, cooperação entre empresas e mobilidade. O terceiro capítulo aborda directamente as arquitecturas orientadas a serviços discutindo a sua definição e temas como Loose Coupling, Middleware, agregação de serviços e vantagens potenciais. O capítulo termina com uma secção de exemplos de serviços e de implementações de SOAs. O quarto capítulo analisa a interoperabilidade, que opções existem para a obter, como esta se relaciona com as SOAs e qual a sua importância em termos de negócio. O quinto capítulo é constituído pelas conclusões. Segue-se em anexo uma análise das tecnologias subjacentes às questões discutidas neste documento. -4- Tendo em conta os fins para que são utilizados os computadores hoje em dia verifica-se que as aplicações das tecnologias informáticas são quase infindáveis. “Verdadeiramente notável nos computadores não é a alta velocidade nem a incrível capacidade de armazenamento de dados, mas sim, a variedade ilimitada de usos a quem pode atender.” – Douglas José Peixoto de Azevedo, Bate Byte n.º 65 Evolução de Software No entanto não é difícil perceber que a diversidade de aplicações para que os computadores são utilizados se deve em maior parte a diversidade de Software existente. De facto existem vários tipos de Software, tipos esses que são difíceis de categorizar. Alguns autores sugerem três categorias [Robert Verzello 1984]: Software de sistema, Software de desenvolvimento, e Software aplicacional. Outros autores sugerem mais categorias [Pressman 1995], como por exemplo: Software comercial, Software científico e de engenharia ou Software para uso pessoal; mas estas categorias parecem apenas expandir a categoria de Software aplicacional. Este capítulo visa retractar as necessidades de Software sentidas ao nível empresarial e comerciar. Estas necessidades enquadram-se mais na terceira categoria, Software aplicacional, mas podem por vezes tocar as outras duas categorias. A evolução do Software [Azevedo 1997] está intimamente ligada com o desenvolvimento das capacidades dos computadores, das quais nas últimas décadas se assistiu a uma evolução notável, tanto a nível de capacidade de processamento como de capacidade de armazenamento. A Figura 1 divide a evolução do Software em cinco eras que serão analisadas de seguida. Figura 1: Evolução do Software dividida em eras. 2.1.1. Primeira era Durante os primeiros anos o desenvolvimento de Software estava em segundo plano em relação ao desenvolvimento do Hardware. Em grande parte dos casos as aplicações eram projectadas e desenvolvidas dentro das empresas que as utilizavam. Possuir um computador significava ter na empresa técnicos e programadores para a utilização e manutenção do Software. As aplicações eram, na maioria dos casos, -5- baseadas em sistemas de processamento de lotes (batch processing). As aplicações interactivas eram praticamente inexistentes. 2.1.2. Segunda era Na segunda era surgem os primeiros fabricantes de Software que produziam e comercializavam Software para Mainframes e Minicomputadores. Esta era foi também marcada pelo aparecimento dos sistemas multi-utilizador, sistemas de tempo real e sistemas de bases de dados, que alargaram as áreas de aplicação da informática. À medida que ia crescendo a procura por Software ia também crescendo o número de bibliotecas existentes. 2.1.3. Terceira era A terceira era é caracterizada pelo advento e generalização do uso de microprocessadores. Surgem assim os computadores pessoais e as estações de trabalho. Os computadores pessoais funcionaram como um catalisador para muitas empresas de Software. Outros pontos marcantes desta era foram o aparecimento de sistemas distribuídos e a implementação de redes de comunicação digitais a nível global. 2.1.4. Quarta era Em termos de evolução de Software a quarta era fica definitivamente marcada pelo aparecimento das linguagens orientadas a objectos e como estas influenciaram o reaproveitamento de código. Surge também o conceito de maquina virtual, que é um grande passo em direcção a interoperabilidade do Software. Em termos comerciais a procura por soluções baseadas em sistemas informáticos continuou a crescer bem como a complexidade dos sistemas, mas esta era ficou marcada pela mudança do milénio e pelo aparecimento e vulgarização da Internet. A mudança de milénio veio expor um erro do Software mais antigo que não estava preparado para lidar com anos de quatro dígitos, o que gerou uma espécie de pânico entre os consumidores levando a uma procura sem precedentes por especialistas e empresas que pudessem corrigir os problemas, ou noutros casos que renovassem os sistemas. A vulgarização da Internet trouxe grandes expectativas de negócio, nomeadamente no que se intitulou de comercio electrónico (e-comerce), essas expectativas geraram ainda mais procura por empresa de Software e surgiram muitas empresas apenas vocacionadas para o desenvolvimento de páginas de Internet. 2.1.5. Quinta era Hoje em dia vive-se uma nova era da evolução do Software. A complexidade dos sistemas implementados tem continuado a aumentar o que tem levado a que os sistemas sejam subdivididos em componentes por vezes desenvolvidos por fabricantes diferentes, resultando numa crescente especialização das empresas de Software. Esta era está também a ser marcada pela introdução do XML em quase todo o Software, de facto os documentos XML estão a substituir progressivamente os documentos baseados em formatos fixos. -6- Esta nova era parece também ter trazido um novo realismo às tecnologias baseadas em Internet pois muitas empresas não viram o retorno do investimento feito nos anos anteriores. Por outro lado uma área de negócio em perfeita expansão é a relacionada com as tecnologias móveis. Nos nossos dias é vulgar encontrar numa empresa de média ou grande dimensão sistemas de Software que foram implementados de forma a facilitar o funcionamento da empresa tendo em vista o negócio a que a empresa se dedica. Estes sistemas são em maior parte dos casos desenhados à medida ou adaptados a partir de Software base e são constituídos por elementos como portais Web, programas de contabilidade, gestão de stocks, armazéns de dados, etc.. O problema é que estas soluções tendem a ser algo rígidas e com o tempo vão ficando desactualizadas, levando a que as pessoas dentro das empresas criem processos alternativos que escapam ao domínio do sistema informático, ou que o tornam mais confuso. No caso de empresas mais pequenas, e mesmo em algumas empresas médias ou grandes, pode-se ainda encontrar a ausência de sistemas de Software, ou seja, a aproximação à informatização feita passou por comprar ou encomendar Software específico para cada problema, resultando num conjunto de Software que não interage e, por vezes, em informação redundante. ! "Things should be made as simple as possible, but no simpler." – Albert Einstein Foi Albert Einstein que proferiu esta afirmação há já algumas décadas, e ainda hoje é relevante para o desenvolvimento de sistemas de Software. O problema é que muitos sistemas de Software falham o teste de Einstein. Alguns são demasiado simples para desempenharem as funções que lhes foram atribuídas. Outros são demasiado complexos e os seus custos de construção e manutenção tornam-se impraticáveis. Por outro lado, a tarefa de integrar o sistema com sistemas diferentes torna-se praticamente impossível. É notório que atingir o nível de simplicidade correcto é uma tarefa difícil [He 2003]. O nível de complexidade atingido pelas aplicações dos nossos dias chegou a um ponto em que é cada vez mais difícil e demorado desenvolver aplicações por medida. De facto as empresas esperam cada vez mais um maior número de funcionalidades e características, este cenário leva a que as aplicações sejam subdivididas e desenvolvidas por empresas especializadas, o que por sua vez causa problemas de integração. Por outro lado as empresas começam a procurar Software “pré-frabricado”, pois é mais barato e não é necessário esperar pelo desenvolvimento, no entanto o custo de integração é sempre muito maior; por vezes após a integração nem todas as funcionalidades do Software podem ser aproveitadas ao máximo e os sistemas tendem a ficar mais confusos. -7- Na realidade a integração de novo Software, ou mesmo a substituição de Hardware e outras actividades de manutenção dos sistemas nem sempre são encaradas com a seriedade e o realismo necessários durante a fase de análise e projecto. Este é um dos principais motivos pelos quais os sistemas se tornam rígidos e estáticos. Dois dos principais requisitos impostos pelas empresas começam a ser a facilidade de integração de Software e a interoperabilidade dos sistemas [Rosenbloom 2003]. " # A organização e cooperação entre várias empresas também gera requisitos ao nível dos sistemas de Software. Um dos requisitos é que o sistema seja capaz de adquirir dados de várias fontes, este está implicitamente ligado com a capacidade do sistema em interagir de forma automatizada com os sistemas das outras empresas. Na realidade a comunicação automatizada entre as empresas já vem sendo estudada há algum tempo e deu origem a uma tecnologia intitulada Electronic Data Interchange (EDI), que não é mais do que um esforço que começou no fim dos anos 60 para criar standards de comunicação entre empresas [EDI History]. $ % A mobilidade é talvez o mais recente requisito para sistemas empresariais. De facto, foi apenas nos últimos anos, com o aparecimento de equipamentos móveis equipados com GSM (Global System for Mobile Communications), GPRS (General Packet Radio Service), UMTS (Universal Mobile Telecommunications System) ou Wi-fi (Wireless Fidelity), que a capacidade de acesso a redes informáticas, nomeadamente a Internet, se tornou praticamente ubíqua. A possibilidade de os clientes poderem aceder de onde quiserem aos sistemas ou portais das empresas é uma característica bastante apelativa. -8- & ! Uma arquitectura orientada a serviços é essencialmente uma colecção de serviços interligados que comunicam entre si formando assim um único sistema. A localização dos serviços não é importante, estes podem ser internos à empresa ou disponibilizados por outras empresas. A comunicação entre os serviços pode envolver apenas simples trocas de dados, ou uma coordenação entre dois ou mais serviços [Barry 2003]. Para compreender claramente o que é uma arquitectura orientada a serviços é necessário definir o que é um serviço. Um serviço é uma função ou funcionalidade que se encontra bem definida, que é estanque (self-contained) e que não depende do contexto ou estado de outros serviços. % Ao longo da história, o desenvolvimento de Software foi passado por várias filosofias ou paradigmas que marcaram as opções tomadas para a implementação de sistemas de informação nas empresas. No inicio as aplicações eram desenvolvidas com o intuito de servir uma única funcionalidade, como por exemplo para gerir a contabilidade de uma empresa. As aplicações eram independentes e possuíam os seu próprios dados que muitas vezes eram replicados de aplicação para aplicação; uma aplicação de contabilidade teria sempre uma lista de funcionários e dos seus salários assim como uma aplicação de gestão de pessoal. Neste cenário não existia qualquer tipo de interoperabilidade. Figura 2: Sistema constituído por aplicações isoladas. -9- Mais tarde, com a implementação de sistemas gestores de bases de dados, as empresas começaram a optar por sistemas em que os dados estavam concentrados numa única base ou armazém. Desta forma era possível eliminar a redundância de informação dentro do sistema e melhorar a capacidade de manutenção da mesma, garantindo que quando acontecia uma actualização esta era instantaneamente verdadeira para todas as aplicações dentro do sistema. Assim sendo, existia uma partilha efectiva dos dados. Figura 3: Sistema com partilha de dados através de uma base de dados central. O passo seguinte foi a evolução para sistemas integrados como o ERP (Enterprise Resource Planning) que tentam integrar todas as funções da empresa num único sistema de Software. Construir um sistema que corresponda às necessidades de todos os departamentos de uma empresa não é uma tarefa simples. Tipicamente, cada departamento tem aplicações optimizadas para as suas necessidades e para os seus métodos. O ERP combina todas essas aplicações num único sistema de Software que é suportado por uma única base de dados, assim sendo os departamentos podem partilhar dados e comunicar entre si [Koch 2002]. Uma solução integrada pode trazer grandes benefícios a uma empresa desde que seja implementada correctamente, no entanto a sua implementação é difícil, morosa e dispendiosa. - 10 - Figura 4: Sistema integrados. Cedo as empresas se aperceberam que seria útil partilhar informação entre si, o que levou a uma nova filosofia de desenvolvimento que visava a interacção entre sistemas de Software. Surgem assim o EDI e outras tecnologias para automatizar a comunicação e a transferência de dados e documentos entre as empresas. Estes sistemas facilitavam a produção de bens por conjuntos ou associações de empresas e podiam desempenhar um papel vital aquando de uma fusão ou a absorção de empresas mais pequenas. Figura 5: Interacção entre sistemas diferentes. “As with past computing platform paradigms, the clear goal of SOA is to reap the benefits of software assembly and enable the construction and maintenance of better, faster, and cheaper applications.” – Robert Eisenberg, Service-Oriented Architecture: The Future Is Now Hoje em dia as empresas desejam mais do que partilhar dados e documentos entre elas, pretendem partilhar funcionalidades e prestar serviços entre si. Isto é verdade mesmo entre os departamentos de uma empresa. Esta nova realidade vem criar um novo paradigma que introduz o conceito de serviço. Este novo conceito passa por isolar os processos da empresa em serviços por forma a que estes possam ser - 11 - reutilizados e combinados criando novas aplicações. Os serviços podem ser utilizados tanto pela empresa que os disponibiliza como por outras empresas. As arquitecturas orientadas a serviços são uma implementação deste paradigma. Figura 6: Arquitectura orientada a serviços. Olhando para a definição de uma arquitectura orientada a serviços pode-se verificar que, em princípio, um serviço pode depender de funcionalidades prestadas por outros serviços. A essas dependências dá-se o nome de dependências reais. O problema é que, tipicamente, para poder satisfazer as dependências reais é necessário cumprir alguns requisitos. A esses requisitos é dado o nome de dependências artificiais. Segue-se um exemplo para a melhor apreensão do conceito de dependências reais e artificias. Um empresário vai numa viagem de negócios ao Japão e tem necessidade de se manter em contacto com a sua empresa e os seu clientes, logo precisa de poder receber as suas chamadas no seu telemóvel. Isto implica duas coisas, que o seu operador móvel disponha de um serviço de roaming para o país em causa e que o seu telemóvel seja capaz de funcionar através das infra-estruturas existentes no mesmo. Assim sendo existe uma dependência real que é a capacidade de receber e efectuar chamadas a partir de outro país; e duas dependências artificiais: a existência de um serviço de roaming e a compatibilidade do telemóvel com as redes locais. A obtenção de Loose Coupling passa pela redução ao mínimo das dependências artificiais, sem que para esse efeito sejam comprometidas as dependências reais [Allen Brown 2004]. Voltando ao exemplo, as dependências artificiais seriam eliminadas se todas os operadores disponibilizassem roaming automaticamente e se todos os equipamentos fossem compatíveis com todas as redes, ou então se todas as redes utilizassem uma tecnologia padrão. - 12 - Revendo a definição de SOA podemos acrescentar que uma arquitectura orientada a serviços visa atingir o Loose Coupling entre agentes de Software. Para o conseguir são aplicadas duas restrições arquitecturais [He 2003]: 1. Estar sempre disponível a todos os intervenientes um pequeno conjunto de interfaces simples. Apenas a semântica mais genérica pode ser codificada nos interfaces. Os interfaces devem estar universalmente disponíveis para todos os fornecedores e todos os consumidores de serviços; 2. As mensagens trocadas através dos interfaces devem ser descritas e restringidas por um esquema extensível. O funcionamento do sistema não deve ser afectado pelas mensagens. O esquema limita o vocabulário e a estrutura das mensagens, este deve ser extensível para permitir que sejam criadas novas versões do serviço sem que as versões anteriores sejam prejudicadas. De facto a redução e simplificação dos interfaces é um grande passo para a obtenção do Loose Coupling. Os interfaces entre aplicações distribuídas são propensas a erros e de desenvolvimento complicado principalmente entre plataformas e linguagens diferentes. Assim sendo faz todo o sentido reutilizar interfaces genéricos. 3.3.1. Mensagens Sendo as ligações fundamentais numa arquitectura orientada a serviços, não menos importantes são as mensagens que passam através dessas mesmas ligações. Qualquer tipo de mensagem pode ser enviada através das ligações mas existem algumas regras que devem ser observadas para que se possa falar em orientação a serviços [Lane 2004]. Primeiro as mensagens têm que ser descritivas e não instrutivas, a responsabilidade de resolver o problema é do fornecedor do serviço, o consumidor apenas necessita de explicar o problema. Pode-se encontrar muitos exemplos de como esta regra é aplicada na vida real, nomeadamente, quando se leva um carro a um mecânico não se lhe diz como o deve consertar mas sim os sintomas que detectamos. Em segundo lugar, as mensagem têm que ser perceptíveis para o fornecedor do serviço, ou seja, têm que estar escritas num formato, estrutura e vocabulário que é compreendido por ambas as partes. Estas limitações são necessárias para que a comunicação seja eficiente. Quanto mais restritivo for o vocabulário e a estrutura da mensagem, mais fácil é a sua compreensão, no entanto, desta forma, limita-se a extensibilidade do serviço. Por último, a extensibilidade é um factor a ter em conta. O mundo está em evolução constante e os sistemas de Software devem ser capazes de se adaptar as mudanças que vão ocorrendo. Numa arquitectura orientada a serviços o acompanhamento da evolução é feito renovando os serviços, ou contratando serviços mais recentes a empresas diferentes. Caso as mensagens não sejam extensíveis qualquer alteração do lado do serviço ou do consumidor que provoque modificações nas mensagens vai provocar uma quebra de serviço. Basicamente a extensibilidade - 13 - significa que existe uma estrutura e um vocabulário base que todas as mensagens tem que respeitar, sendo que qualquer parte pode enviar informação adicional nas mensagens podendo esta ser utilizada ou não. Por exemplo, a empresa A contrata um serviço de previsão metrológica à empresa B. Fica acordado que sempre que necessário será enviada uma mensagem indicando o período temporal para o qual se pretende a previsão, à qual a empresa B responderá com uma mensagem indicando a previsão de temperatura e de condições atmosféricas (sol, chuva, etc.) para todos os períodos de cinco horas contidos dentro do intervalo pedido. Uma empresa C contrata exactamente o mesmo serviço, mas passado algum tempo apercebe-se que lhe seria útil dispor de uma forma de indicar o tamanho dos intervalos em que a previsão é devolvida e que também fosse fornecida a previsão da humidade. Estes novos requisitos levam a empresa B a alterar o serviço de forma que seja indicado no pedido o tamanho dos intervalos de resposta e para que seja incluída na resposta a previsão da humidade. Caso não exista extensibilidade, a empresa A encontra-se numa situação de quebra de serviço e dispõe apenas de duas possibilidades, alterar o seu sistema por forma a conseguir aceder à nova versão do serviço, ou obrigar a empresa B a repor a versão anterior do serviço. Se as mensagens forem extensíveis não existe qualquer problema. A empresa A continuará a receber as previsões em intervalos de cinco horas pois não indica um tamanho diferente para o intervalo, só que passa a receber também a previsão da humidade que é ignorada pelo sistema pois não pertence à especificação inicial da comunicação com o serviço. Note-se que a empresa A pode desejar alterar o seu sistema para incorporar qualquer uma das alterações introduzidas na nova versão do serviço, mas a grande vantagem trazida pela extensibilidade é que não é obrigatório que o faça. Apesar da importância da extensibilidade esta tem sido muitas vezes considerada como uma boa pratica e não como algo de fundamental, mas não haja duvidas de que o é numa arquitectura orientada a serviços. O problema é que a restrição e a extensibilidade estão intimamente ligadas e é impossível aumentar a uma sem diminuir a outra. O truque está em encontrar o equilíbrio certo entre a duas [He 2003]. 3.3.2. Documentos XML Tendo em conta a importância da extensibilidade nas mensagens trocadas entre os serviços, a escolha lógica parece recair sobre a utilização de XML. De facto a troca de mensagens baseadas em documentos XML satisfaz as condições necessárias para a obtenção de Loose Coupling. Os documentos XML podem ser restringidos por XML Schemas e, a não ser que as restrições não o permitam, podem ser estendidos. A finalidade de um Schema (esquema) [Fallside 2001] é definir uma classe de documentos XML, e assim sendo a expressão “instance document” é usada frequentemente para descrever um documento XML que esteja em conformidade com um Schema. Os Schemas XML exprimem vocabulários e definem as regras sobre as quais pode ser escrito um determinado tipo de documento XML, e permitem também a validação de documentos. Basicamente são um meio para definir a estrutura, os conteúdos e semântica de um documento XML, sendo um meio por excelência para definir os termos do contracto de comunicação entre os sistemas. Os Schemas acabam por ser a evolução das DTDs (Document Type Declaration) criadas para o SGML (Standard Generalized Markup Language) mas que vinham sendo aplicadas ao XML. - 14 - Um documento XML contém informação auto-descritiva, permitindo simultaneamente que cada aplicação processe as etiquetas como entender. Ou seja para uma aplicação uma etiqueta <paragrafo> pode significar mudança de linha e indentação do texto, para outra pode significar deixar uma linha em branco entre os blocos de texto. O facto das etiquetas poderem ter significados diferentes para aplicações diferentes pode dificultar a obtenção de Loose Coupling, mas é necessário ter em mente que as mensagens XML devem ser descritivas ou informativas e nunca instrutivas e que devem respeitar um esquema conhecido por ambas as partes, ou seja, um contracto pré estabelecido. No entanto o problema pode subsistir numa arquitectura orientada a serviços. Ou seja, tipicamente, numa SOA as aplicações ligam-se ao sistema através de uma única conexão que respeita um interface simples de troca de mensagens e todas as mensagens passam por um Bus ou um Router que garante a sua entrega aos serviços correcto, muitas vezes é introduzida lógica no Bus ou no Router para transformar as mensagens de modo a que estas passem a estar de acordo com o esquema esperado pelo destinatário [Mark Endrei 2004]. Uma das desvantagens de utilizar XML é que as mensagens tendem a tornar-se muito maiores. Assim sendo existe aqui uma questão de performance. Ao utilizar XML troca-se a performance por flexibilidade, no entanto quanto maior for a largura de banda para comunicação menos se notará este problema. " ' Já foram discutidas neste documento algumas restrições arquitecturais nomeadamente no que diz respeito aos interfaces e às mensagens que passam por esses mesmos interfaces. No entanto existem algumas restrições ou guias de boa prática que podem ser aplicadas para melhorar a escalabilidade, a performance e a fiabilidade do sistema. 3.4.1. Independência do estado Cada mensagem que o consumidor envia para o fornecedor de serviços deve conter toda a informação necessária para que o pedido seja processado. Isto faz com que o serviço seja mais escalável pois o fornecedor não tem que armazenar informação sobre o estado entre pedidos. Pode-se considerar que também é melhorada a visibilidade pois qualquer Software de monitorização, como uma firewall, pode facilmente inspeccionar um único pedido e determinar se constitui ou não uma ameaça. Não existindo estados a recuperação a falhas também se torna mais fácil, fazendo com que o serviço se torne mais fiável. 3.4.2. Dependência do estado A dependência do estado é difícil de evitar em várias situações. Em muitas situações opta-se por criar sessões para tornar o processo mais eficiente, por exemplo para evitar negociações de segurança em todas as comunicações. Os serviços dependentes do estado requerem que tanto o consumidor como o fornecedor partilhem - 15 - o mesmo contexto, que pode ser referenciado ou incluído nas mensagens trocadas. O problema é que assim pode-se estar a comprometer a escalabilidade do sistema, principalmente do lado do fornecedor do serviço pois é este que tem que manter a informação sobre o estado. Também se pode aumentar as dependências artificiais diminuindo as possibilidades de obtenção de Loose Coupling, eventualmente pode-se gerar uma dependência do fornecedor e impossibilitar a troca por outro fornecedor. 3.4.3. Idem-potência Os pedidos repetidos devem ter o mesmo efeito de que um único pedido, ou seja, o sistema deve exibir um comportamento idem-potente. Desta forma, a fiabilidade do sistema pode melhorar uma vez que não existe nenhum problema em repetir um pedido quando acontece um falha. Tome-se como exemplo o caso de uma transferência bancária, não é razoável que um pedido para transferir dinheiro entre duas contas bancárias seja executado mais que uma vez se o protocolo de transporte repetir a mensagem por falha de comunicação. $ Como se verificou anteriormente uma SOA é essencialmente um conjunto de serviços que comunicam ente si e na qual as ligações entre esses serviços desempenham um papel fundamental. As ligações são feitas através de Middleware que esconde a complexidade das comunicações entre os serviços, simplificando assim o seu desenvolvimento. Convém recordar que os serviços podem não estar a correr na mesma maquina ou até no mesmo sistema, e que o Software que compõe o serviços pode ser desenvolvido em linguagens diferentes e para plataformas diferentes. Hoje em dia os Web Services são vistos como a melhor opção para Middleware de comunicação numa arquitectura orientada a serviços [Barry 2003]. Figura 7: Arquitectura de Middleware básica. - 16 - Ao longo dos anos tem sido desenvolvidos vários tipos de Middleware, como por exemplo: Transaction precessing monitors (TP monitors); Remote Procedure Call (RPC); Message-Oriented Middleware (MOM); Object Request Broker (ORB). No entanto o Middleware mais vulgarmente utilizado é o baseado na especificação de Common Object Request Broker Architecture (CORBA) do Object Management Group e o Distributed Common Object Model (DCOM) da Microsoft. 3.5.1. CORBA e DCOM O CORBA e o DCOM são Middleware e podem ser interoperáveis através de pontes CORBA/DCOM. Ambos se apresentam como uma tecnologia relativamente madura para criar aplicações distribuídas. O que leva ao investimento nestas tecnologias é a sua capacidade para criar aplicações interoperáveis sobre redes. No entanto é necessário olhar para o CORBA e o DCOM apenas como um meio de fazer transitar a informação entre dois pontos, tendo em mente que não existem requerimentos especificados para como deve ser formatada essa informação. Assim sendo a falta de standards ao nível da indústria, as diferenças entre semânticas e a tradução entre as mesmas podem causar problemas a comunicação. No entanto, a comunicação pode ser feita tomando partido de tecnologias como o XML, que não se baseiam em formatos de registo fixo, para suplantar estes problemas. Um dos problemas que envolve o CORBA e o DCOM é a percepção por parte de potenciais consumidores de que nenhum deles é utilizado em grande escala e que de que a sua utilização é demasiado complexa para a maior parte dos programadores. Embora estas percepções possam não estar correctas, o facto é que influenciam as decisões que podem levar ou não a utilização destas tecnologias. Considerando todos os aspectos pode-se reconhecer que o CORBA ou o DCOM são soluções viáveis para implementar o Middleware numa arquitectura orientada a serviços [Framingham 2003]. Mesmo assim é necessário lembrar que sempre que se quiser que o sistema interaja com outros sistemas ou com novo Software, vai ser necessário que estes suportem a tecnologia adoptada, ou então, vai ser necessário aplicar pontes ou adaptadores desenvolvidos a medida. 3.5.2. Web Services A utilização de Web Services como Middleware numa SOA parece ser a forma mais simples de criar sistemas e serviços interoperáveis. Os Web Services utilizam nativamente XML, tendo assim a flexibilidade necessária para a troca de mensagens, e podem utilizar um grande número de protocolos de rede, incluindo o HTTP (HyperText Transfer Protocol), que hoje em dia é praticamente ubíquo. O facto é que o conceito subjacente aos Web Services foi apreendido facilmente pelos fornecedores de Software, e estes rapidamente começaram a incorporar esta tecnologia nos produtos e serviços [Colan 2004]. Isto resultará a curto e médio prazo num grande número de serviços que poderão ser contratados a empresas externas e em pacotes de Software que poderão ser integrados no sistema numa questão de poucas horas. - 17 - Para as organizações que investiram na aplicação de CORBA ou DCOM a utilização de Web Services não significa que todo esses esforço seja abandonado. Trata-se apenas de adaptar o Middleware e não de refazer todo o sistema substituindo os serviços que utilizavam Middleware antigo. Embora ao longo do tempo esses serviços possam vir a desaparecer [Barry 2003]. Figura 8: Interoperabilidade entre Web Services e CORBA ou DCOM. ( ) Sendo que uma arquitectura orientada a serviços pode ser vista como um conjunto de serviços interligados de uma forma simples, por forma a que exista Loose Coupling, uma vez criada a infra-estrutura necessária todos os serviços se encontram num estado em que podem ser utilizados e reutilizados por forma a criar aplicações. A infra-estrutura SOA é como uma base sobre a qual se montam peças Lego, sendo que cada serviço é uma peça que pode ser montada na base e que pode ser combinada com as outras peças por forma a construir novas aplicações. Tendo em conta que um serviço encapsula um processo de negócio simples, numa SOA as aplicações são agregações de serviços. Num nível conceptual mais alto, os processos da empresa, podem apoiar-se em vários processos internos. Por exemplo, um processo de recepção de encomendas pode passar pela utilização de serviços internos de encomenda, pagamento e entrega. - 18 - Figura 9: Agregação de serviços [Lawrence Wilkes 2004]. A capacidade de agregar serviços torna as arquitecturas orientadas a serviços muito ágeis quando é necessário acompanhar as novas tendências do mercado, pois construir novos processos de alto nível pode apenas significar agregar serviços existentes de uma forma diferente. Voltando ao exemplo, tanto o serviço de pagamento como o serviço de entregas podem ser utilizados por uma aplicação interna de venda directa a clientes em lojas. Criar aplicações para os processos através da agregação de serviços traz outras vantagens como a capacidade de substituição de serviços e a indiferenciação entre serviços internos e serviços externos. Tendo em conta que para a aplicação não importa como o serviço está implementado, apenas interessa que respeite uma determinada interface e que produza os resultados pretendidos, alterar a implementação de um serviço não provoca qualquer alteração na aplicação. De facto, um serviço pode mesmo ser completamente substituído sem que seja necessário efectuar alterações nas aplicações, desde que seja mantida a compatibilidade com a interface. Com a definição de standards regulando o que cada tipo de serviço deve fazer e que interface deve disponibilizar, as empresas podem optar por contratar determinados serviços a empresas externas e especializadas no assunto em causa, visto que para as aplicação é indiferente onde se encontra o serviço ou quem é responsável pela sua implementação. Desta forma o desenvolvimento de serviços tenderá a ser feito fora da empresa, ficando as equipas internas responsáveis pela manutenção das ligações, integração de novos serviços e pela agregação dos serviços por forma a modelar os processos de negócio e aplicações necessárias. - 19 - * + “Companies that are embracing SOAs are finding huge benefits. Some of these benefits are expected, such as increased revenue opportunities through collaboration, improved decision making through shared data, and decreased personnel costs through automated workflow. But many of the benefits of SOAs are unexpected, such as dramatic improvements in system reliability, huge reductions in development and deployment costs, migration of systems from expensive mainframe to inexpensive server clusters and impressive improvements in time to market.” – Roger Sessions, Interoperability Through Service-Oriented Architectures (SOAs) Uma arquitectura orientada a serviços pode ajudar as empresas a atingir uma nível de flexibilidade que lhes permita acompanhar os rápidos desenvolvimentos dos mercados e rentabilizar os seu recursos por forma a reduzir os custos [Mark Endrei 2004]. 3.7.1. Reaproveitamento de recursos As SOAs fornecem um camada de abstracção que permite às empresas aproveitar o investimento feito anteriormente em tecnologias de informação, envolvendo os recursos existentes como serviços que disponibilizam funcionalidades de negócio. Desta forma as empresas podem continuar a retirar valor desses recursos sem que seja necessário recomeçar do inicio. 3.7.2. Facilidade de integração e de manutenção O ponto de integração numa arquitectura orientada a serviços é a especificação do serviço e não a sua aplicação, ou seja o que importa é o que o serviço faz e não como o faz. Assim sendo a forma como os serviços estão implementados torna-se transparente, o que minimiza o impacto no sistema quando há alterações na sua infraestrutura ou na implementação dos serviços. A manutenção do sistema torna-se também mais simples pois as ligações são mais simples e a complexidade está isolada nos serviços. A facilidade de integração torna-se ainda mais importante tendo em vista a cooperação entre várias empresas. 3.7.3. Maior capacidade de reacção A capacidade de criar novos serviços a partir de serviços já existentes é uma vantagem para as empresas que necessitam de ter agilidade e de responder rapidamente as exigências do mercado. A reutilização de componentes faz com que o tempo de desenvolvimento do Software necessário seja reduzido, o que leva a uma rápida criação de novos serviços que implementam novas funcionalidades de negócio. Desta forma o tempo que os produtos levam a atingir o mercado é reduzido e a empresa adapta-se mais rapidamente as mudanças. Por outro lado, melhora também a capacidade de tomada de decisão pois os dados são partilhados entre todos os serviços, o que por sua vez melhora a capacidade de reacção da empresa as alterações do mercado ou as oportunidades de negócio. - 20 - 3.7.4. Redução de custos e aumento da reutilização Com os processo básicos de negócio expostos num sistema onde o Loose Coupling é regra, estes podem ser facilmente reutilizados e combinados por forma a satisfazer as necessidade de negócio. Isto significa menor duplicação de recursos, maior potencial de reutilização e menores custos de desenvolvimento e manutenção. Aos SOAs também potencializam a automatização de processos através de programas de Workflow, reduzindo assim os custos com o pessoal. 3.7.5. Preparação para o futuro As SOAs permitem às empresas estarem preparadas para o futuro. Processos que envolvam uma série de serviços relativos ao negócio podem ser criados, modificados e mantidos facilmente ao longo do tempo, correspondendo assim às necessidades da empresa. Uma SOA fornece flexibilidade e adaptabilidade, características que são criticas para quase todos os negócios. , - Nesta secção vão ser apresentados alguns exemplos, tanto de serviços simples disponibilizados por empresas como de implementações de arquitecturas orientadas a serviços. Os exemplos de implementações forma retirados de um estudo feito por Roger Sessions e publicado num White Paper da ObjectWatch intitulado: Interoperability Through Service-Oriented Architectures (SOAs). 3.8.1. Google Web API A Google é uma empresa que fornece um serviço de pesquisas na Internet através do seu motor de busca, quer a partir da sua página de Internet, quer a partir de soluções integradas noutras aplicações. Actualmente fornece acesso a mais de 4 biliões de páginas e responde a mais de 100 milhões de consultas por dia [Google Profile]. A Google disponibiliza um serviço intitulado Google Web API que permite, mediante a obtenção de uma chave, aceder a um Web Service e utilizar o motor de buscas da empresa. O serviço publica três funcionalidades, pesquisa de páginas de Internet no index da Google, obtenção de páginas em cache e sugestões de correcção ortográfica [Google Web APIs]. A API da Google é um bom exemplo de um serviço simples disponibilizado via Internet. A empresa fornece o serviço gratuitamente, embora limitado a 1000 pesquisas por dia, e recebe em troca uma maior utilização do seu produto através da integração em aplicações e páginas de Internet pessoais ou de outras empresas. Desta forma a Google valoriza-se obtendo assim maior capacidade para atrair patrocínios. - 21 - 3.8.2. Amazon Web Service A Amazon é um empresa de vendas na Internet que ficou conceituada pela venda de livros, que inicialmente era o único produto oferecido aos clientes. Um dos seus primeiros objectivos é ter qualquer livro disponível para entrega imediata. O Amazon Web Service (AWS) fornece acesso directo ao sistema da empresa, sendo possível através deste aceder ao catálogo de informação, criar e popular um cesto de compras e até iniciar o processo de pagamento. Para aceder ao serviço é apenas necessário obter um identificador de associado que é gratuito [Amazon Web Sevice]. Os benefícios que este serviço proporciona à Amazon são simples de perceber, quantos mais páginas de Internet e aplicações utilizarem este serviço, mais a Amazon terá acesso a potenciais clientes. 3.8.3. Qwest – Um exemplo de SOA aplicado em grande escala A Qwest é uma empresa de telecomunicações que fornece soluções de voz, Internet, dados e vídeo para particulares, empresas e organizações publicas. Tem cerca de 45800 empregados e transmite aproximadamente 240 milhões de chamadas todos os dias. 3.8.3.1. O sistema informático da Qwest A Qwest dispõe de mais de 1000 aplicações de negócio actualmente em produção e em várias plataformas diferentes. As aplicações são suportadas por 40 equipas de desenvolvimento compostas por mais de 500 programadores. As seguintes formas podem ser utilizadas para aceder aos sistemas da Qwest: Interfaces de cliente para os Help Desks dos serviços de clientes e serviços de pessoal acederem ao sistema da Qwest; Os técnicos que fazem o trabalho de rua acedem ao sistema utilizando tipicamente GPRS ou modems de linha telefónica; O portal MyQwest.com fornece acesso ao sistemas a mais de 20 mil clientes por dia, utilizando browsers diferentes; Utilizando reconhecimento de voz os clientes podem aceder ao sistema através dos seus telefones; Aplicações exteriores a empresa que podem significar uma fonte de rendimentos adicional. 3.8.3.2. A SOA da Qwest Para simplificar o desenvolvimento de aplicações a Qwest definiu um Standard Operating Environment (SOE). O SOE é um conjunto de componentes, serviços e APIs que podem ser utilizadas por qualquer programador da Qwest e que inclui suporte para acesso as bases de dados, comunicações e segurança entre outros. O SOE é mantido e evoluído através da cooperação entre as equipas de desenvolvimento e de Operações. - 22 - No seu todo a arquitectura do sistema da Qwest pode ser vista como uma série de zonas relacionadas, com demonstra a Figura 10. Esta solução baseada em zonas tem várias vantagens: É muito segura; Acomoda facilmente a heterogeneidade; É altamente escalável; É altamente fiável. Figura 10: Relações entre as zonas. A zona exterior (outside zone) é a área que fica fora do controlo imediato da Qwest. Esta inclui principalmente os clientes que entram no domínio através de browsers, mas também as aplicações que acedem via SOAP (Simple Object Access Protocol). A zona de buffering de tráfego vindo da Internet (IBZ - internet buffer zone) é a área que aceita os pedidos vindos da zona exterior. É uma zona de segurança isolada, protegida por firewalls e outros mecanismos, é semelhante a uma DMZ (Demilitarized Zone). Os pedidos que chegam através do portal MyQwest.com são processados por aplicações ASP.NET. Os pedidos de aplicações exteriores que chegam via SOAP são processados por representantes internos (surrogates). Ambos partilham as seguintes características: - 23 - Correm sobre “quintas” de servidores 1 com carga balanceada; Correm dentro de um ambiente IIS; Não contêm lógica de negócio, apenas sabem como receber pedidos e interagir com clientes; Quando necessitam que seja executada lógica de negócio, fazem os pedidos correspondentes a zona de aplicações; Sempre que é necessário armazenar dados, como por exemplo dados de sessão, estes são armazenados na base de dados que faz parte da IBZ. A principal vantagem da IBZ é a segurança. Ao criar a IBZ a Qwest consegui proteger os seus sistemas críticos de negócio de acessos não autorizados, pois estes estão em zonas interiores, e mesmo que esta zona seja comprometida não existe nada de crítico nela e nada que não possa ser reposto rapidamente. A zona que se segue é a zona de aplicações (AZ – application zone). A AZ alberga as aplicações que contêm a lógica dos processos críticos de negócio. Estes sistemas podem ser construídos quer em .NET quer em J2EE. Na Qwest os sistemas J2EE são tipicamente WebLogic a correr sobre UNIX e os .NET correm sobre Windows. A Qwest permite a cada grupo que faça as suas próprias escolhas dentro do SOE suportado e foca as suas políticas empresariais em como essas aplicações devem interagir e em que serviços o SOE deve fornecer. A AZ é também uma zona de segurança, pois está protegida da IBZ pela suas próprias firewalls e políticas de segurança. As aplicações dentro da AZ armazenam os dados dentro da zona de dados (DZ – data zone) que está fortemente associada com a AZ. Ver a DZ como uma zona separada da AZ é justificável pela especificidade da sua função e do Hardware necessário. Para aceder a DZ as aplicações utilizam os serviços de base de dados disponibilizados pelo SOE. A Qwest utilizou está arquitectura para atingir um alto grau de interoperabilidade. As aplicações são capazes de comunicar entre si através de um Message Bus ou utilizando SOAP. Segundo a Qwest, atingir interoperabilidade entre aplicações .NET e aplicações J2EE é mais difícil do que entre duas aplicações .NET ou duas aplicações J2EE. 3.8.3.3. Benefícios Os principais benefícios que a Qwest retira da sua utilização de SOA são os seguintes: Alto grau de interoperabilidade entre aplicações; Uma excelente fiabilidade e escalabilidade através da utilização de quintas de servidores; Um sistema altamente seguro através da utilização da IBZ; 1 Da terminologia anglo-saxónica “Server farms” - 24 - 3.8.4. CACU – Um Exemplo de Workflow automatizado A CommunityAmerica Credit Union (CACU) foi fundada em 1940 e hoje em dia é uma das maiores companhias de crédito do Midwest americano, com mais de 110 mil membros e com o valor dos seus bens a exceder o bilião de dollars. Os seus productos incluem bancos online, fundos de mercado, empréstimos, hipotecas, cartões de crédito, seguros e serviços de correctores de bolsa. O projecto é encabeçado por Byron Healy, Arquitecto Técnico Sénior de Serviços de Informação. 3.8.4.1. O sistema informático da CACU O sistema da CACU era originalmente constituído por mainframes. Maior parte das operações da empresa corriam a partir de dois mainframes, sendo que o mais antigo começa a apresentar sinais evidentes de fadiga, a empresa decidiu fazer uma reestruturação arquitectural. O seu objectivo não era eliminar as mainframes, mas sim utiliza-las onde estas faziam mais sentido. A CACU considerou que o lugar certo para os mainframes era o de anfitrião para o back-end de finanças. 3.8.4.2. A SOA da CACU Uma aproximação SOA permitiu a CACU utilizar várias aplicações, plataformas de programação e tecnologias de desenvolvimento diferentes. As aplicações podem assim utilizar as ferramentas que precisam de utilizar. Ao nível de toda a empresa só são aplicadas restrições ao estilo da interoperabilidade com a SOA. Sendo elas: O BizTalk é o standard para a orquestração de workflow. O BizTalk é uma ferramenta para gerir processos de workflow complexos que inclui a capacidade de traduzir dados, gerir comunicações assíncronas e coordenar o processamento de erros. SOAP é o standard para o formato das mensagens. A direcção do projecto considerou que a interoperabilidade e a reutilização deviam ser conseguidas através do encapsulamento das aplicações como Web Services e que sempre que possível os sistemas deviam ser respeitar as regras XML, mais especificamente as regras CU-XML (credit union XML, um conjunto de definições XML especificas para uniões de crédito). Ao manter as suas aplicações financeiras nas mainframes UNIX e ao mover aplicações seleccionadas para novas “quintas” de servidores aplicacionais, a CACU obteve os beneficios de uma arquitectura estilo SOA sem ter que pagar o preço de mover as bases de dados e as aplicações de processos críticos. O que faz com que todo o sistema funcione não é apenas os Web Services e o BizTalk, mas também uma boa arquitectura, bons processos de negócio, muita atenção a infra-estrutura técnica e muita comunicação. Desde o tempo dos sistema baseado em mainframes a confiança no departamento de Tecnologias da Informação cresceu significativamente. Ao adoptar uma solução SOA o departamento ganhou rapidamente a reputação de desenvolver sistemas com alta fiabilidade e usabilidade. - 25 - “They are amazed at our ability to manage projects. We participate in every major decision in the organization. I can’t do justice to how much we have benefited. Our data systems are now state-of-the-art and best-of-breed. For us and our credit union members, the value has been compelling.” – Byron Healy, Arquitecto Técnico Sénior de Serviços de Informação da CACU A utilização de Web Services permitiu a CACU construir aplicações agregando blocos de código que já existiam. A utilização do Visual Studio e do BizTalk tornou a construção dessa aplicações tão simples como fazer drag and drop. 3.8.4.3. Benefícios Os principais benefícios que a CACU retirou da sua utilização de SOA são: Um alto grau de ineroperabilidade entre aplicações; O isolamento do mainframes de back-end como Web Services; Uma grande redução nos custos de desenvolvimento. 3.8.5. Avista Corp. – Um exemplo de conectividade de Mainframes Outro exemplo de uma empresa que se está a focar na integração é a Avista Corp., que é uma das empresas lideres de mercado da electricidade no oeste americano. Foi fundada em 1889 e tem cerca de 1800 empregados. Os seu produtos compreendem gestão de equipamentos baseada em Internet, consolidação de dividas e pagamento de serviços. O analista responsável pela equipa de desenvolvimento é Dennis Crumb. 3.8.5.1. O sistema informático da Avista O sistema original da Avista corria sobre um mainframe IBM. Programas cliente/servidor desenvolvidos em COBOL/CICS (Customer Information Control System) controlavam tudo desde a facturação aos clientes até a decisão de como fazer chegar electricidade a uma nova morada. A quantidade de código na mainframe era massiva, incluindo cerca de 400 programas desenvolvidos durante um período de 5 anos, com o seu custo a ascender aos 17 milhões de dollars. A Avista queria permitir que os seu consumidores vissem e pagassem as suas contas através de um browser de internet e que assim gerissem a informação das suas próprias contas. A ideia era reduzir ao número de intermediários humanos e melhorar os serviços de cliente. 3.8.5.2. O processo de decisão da Avista Para a Avista a questão tornou-se como migrar de uma arquitectura CICS mediada por pessoas para uma arquitectura acessível pelos clientes via internet. Existiam então duas opções, rescrever ou mediar. A Avista podia ter rescrito todo o seu sistema utilizando novas plataformas tecnológicas que facilitam o acesso a Internet, como por exemplo o WebSphere da IBM ou o .NET da Microsoft. - 26 - A segunda opção passava por construir mediadores de Software que fizessem de interface entre a Internet e o sistema. Para a Avista a complexidade subjacente a rescrever todo o sistema levou a decisão de implementar mediadores. A questão seguinte era que tecnologia é que seria usada com base para a mediação. Por outro lado a Avista não podia negligenciar o workflow. Tipicamente a mediação não é uma operação simples de um para um. Ou seja, se um consumidor deseja realizar uma operação “simples” como pagar uma conta, essa operação pode requerer a coordenação de muitos programas na mainframe. No sistema antigo a coordenação era feita por empregados treinados especificamente para a tarefa. No novo sistema essa coordenação teria de ser feita através de Software. A Avista também queria abrir os seu sistemas a colaboração externa, como pagamentos efectuados através de sistemas parceiros estratégicos. Qualquer que fosse a tecnologia escolhida, teria que satisfazer os seguintes requisitos: Ser implementada sem que se rompesse com os sistemas CICS existentes que correm nas mainframes IBM; Ser compatível com DB2 existente na mainframe; Ser compatível com Oracle, que é utilizado para o armazenamento local dos dados; Ser escalável, por forma a satisfazer centenas de clientes por dia; Proporcionar tempos de resposta considerados rápidos, tipicamente abaixo dos 2 segundos; Fornecer alta segurança; Fornecer alta disponibilidade; Possuir ferramentas para criar páginas de Internet interessantes; Ser extensível para outras soluções não baseadas em acesso via browser. Existiam ainda alguns requisitos que não eram obrigatórios mas que eram considerados como agradáveis: Baixo custo de aquisição; Baixo custo de formação; Baixo custo de desenvolvimento; Menor número de alterações possiveis a mainframe. A Avista considerou três produtos para mediação: o WebSphere CICS Transaction Gateway da IBM, o WebSphere MQ (Message Queue) também da IBM, e o Microsoft HIS (Host Integration Service). Utilizando o WebSphere CICS Transaction Gateway para a mediação seria uma escolha lógica uma vez que é a tecnologia standard, proporcionada pela IBM, para conectar ao seu CISC. No entanto, está opção significaria um compromisso generalizado ao IBM WebSphere. Por causa de incompatibilidade de versões com o CISC da Avista esta opção foi descartada. - 27 - Utilizar o IBM WebSphere MQ como base para a mediação era tecnicamente atraente, pois é uma tecnologia baseada em filas de mensagens que fornece transportação assíncrona de alta qualidade e corre tanto em mainframes da IBM como em sistemas operativos Microsoft Windows. Existem muitas formas pelas quais esta tecnologia poderia ter sido utilizada, mas uma seria ter os servidores de Internet directamente ligados a maquina CICS através do WebSphere MQ. Outro produto considerado para a mediação foi o Microsoft HIS 2000 (Host Integration Service 2000). O HIS é basicamente uma colecção de tecnologias que juntas fornecem conectividade a mainframes. O subconjunto do HIS que a Avista analisou foi o COM-TI, que funciona projectando um sistema CICS num componente COM alojado num processo de um sistema operativo Windows. O componente COM disponibiliza uma interface COM que é funcionalmente equivalente a interface o CICS. A invocação de métodos do componente COM é automaticamente reencaminhada pelo COM-TI para o sistema CICS que está a correr no back-end. Existiam dois factores a favorecer o HIS. Primeiro porque não requeria qualquer alteração na mainframe, pois para o sistema CICS o HIS era visto apenas como outro cliente CICS. Segundo porque o custo de licenças era de apenas 2 mil dollars por servidor, o que era apenas uma fracção do custo da solução baseada em WebSphere MQ. A capacidade de reutilizar os seus sistemas CICS sem ter que efectuar alterações a mainframe e o baixo custo do HIS foram os principais factores na sua escolha. 3.8.5.3. A SOA da Avista Com o HIS, as funcionalidades do CICS são disponibilizadas através de componentes COM, mas isto é apenas parte da resposta. Os componentes COM podem ser utilizados pelas tecnologias Microsoft mas não são de forma alguma uma standard de industria. Se a Avista pertendia que o seu sistema interoperasse com uma variedade de sistemas diferentes, incluindo sistemas não Microsoft, era necessário optar por algo que fosse aceite como um standard, a escolha recaiu sobre o SOAP. Foi então introduzido um SOAP wrapper que traduzia os pedidos vindos dos clientes em SOAP para o servidor HIS, que por sua vez reencaminhava os pedidos para o CICS. Figura 11: Arquitectura da Avista - 28 - Hoje em dia a Avista gere o workflow programaticamente, dentro dos componentes SOAP, mas está a planear mover o código de dentro dos componentes Web Services que tiveram de escrever, para orquestração feita através de BizTalk. Os componentes de Web Services que incluíam o workflow serão então substituídos por novos componentes que serão front-ends para o BizTalk. Utilizar o BizTalk vai permitir a Avista criar orquestrações de workflow altamente sofisticadas, incluindo tradução de dados, transacções compensatórias e integração com muitas outras tecnologias. 3.8.5.4. Benefícios Os benefícios principais que a Avista retirou da sua utilização de SOA foram: Reutilização do investimento de 17 milhões de dollars existente no sistema CISC sem alterações a mainframe; Alto grau de interoperabilidade entre aplicações; Redução dos custos com o pessoal através da automatização do workflow; Redução dos custos de desenvolvimento. - 29 - " "Interoperability: The capability to communicate, execute programs, or transfer data among various functional units in a manner that requires the user to have little or no knowledge of the unique characteristics of those units." – ISO/IEC 2382 Information Technology Vocabulary A interoperabilidade entre Software tem sido uma das áreas mais sensíveis das tecnologias de informação, pois requer quase sempre que empresas concorrentes cooperem entre si por forma a definir standards. Pode-se considerar como exemplo o esforço que tem sido feito para a obtenção de um standard de ficheiro CAD (Computer Aided Design) satisfatório. O problema agrava-se quando se começa a falar de interoperabilidade entre sistemas ou de componentes dentro de um mesmo sistema de Software. De facto os componentes ou sistemas podem divergir muito uns dos outros, principalmente porque o Hardware pode ser diferente, o sistema operativo pode ser diferente e a linguagem de programação utilizada pode ser diferente. Olhando para a definição de interoperabilidade da ISO (International Organizations of Standardization) é possível identificar três pontos que se correlacionam com as três principais diferenças identificadas. As diferenças de Hardware podem ser significantes, mas dificilmente causam problemas de interoperabilidade entre Software, pois a única capacidade que poderiam afectar era a de comunicação. No entanto, hoje em dia os standards de comunicação estão tão bem implementados pelo que é difícil existirem problemas ao nível de transporte de informação entre duas maquinas diferentes. Tomando por exemplo a transferência de ficheiros entre um computador de secretária e um telemóvel pode-se verificar que existem várias formas de como está pode ser feita, ligação directa através de cabo próprio, USB (Universal Serial Bus) ou semelhante, infravermelhos, Bluetooth, ou em última instância por HTTP através de GSM, GPRS ou UMTS. É tudo uma questão de existirem os adaptadores correctos e de estarem bem configurados. As diferenças ao nível dos sistemas operativos também podem causar problemas de comunicação, como por exemplo se os dados estão em formato big endian ou little endian, mas tipicamente essas questões já estão previstas e resolvidas pelos próprios sistemas operativos. Os maiores problemas de interoperabilidade surgem na capacidade de execução de programas, pois estes normalmente dependem de componentes de sistema operativo, no entanto este problema pode ser ultrapassado utilizando linguagens de programação que são compiladas para linguagens intermédias que são executadas sobre máquinas virtuais, como por exemplo a plataforma Java ou .Net. Ao nível da transferência de dados podem também surgir alguns problemas como diferenças entre significados de caracteres. As principais diferenças encontram-se ao nível das aplicações, pois estas podem estar programadas em linguagens diferentes o que pode gerar problemas de comunicação e de transferência de dados. As linguagens de programação mais recentes dispõem de formas de interacção para aplicações distribuídas, como por exemplo o Java RMI e o .Net Remoting, no entanto estas só podem ser utilizadas para comunicar com aplicações na mesma linguagem. A transferência de dados fica comprometida a partir do momento em que nem todos os tipos de dados existem em todas as linguagens, ou no caso das linguagens orientadas a objectos em que os - 30 - objectos existentes numa linguagem dificilmente tem correspondência noutras linguagens. Hoje em dia o cerne para a resolução do problema da interoperabilidade entre Software encontra-se nas diferenças entre as próprias aplicações e os dados que utilizam. Para resolver este problema é possível considerar três tipos de soluções: Message-Oriented Middleware (MOM), pontes entre aplicações e Web Services. " O Message-Oriented Middleware (MOM) é muitas vezes uma resposta madura e aplicável para os desafios de interoperabilidade, pois as soluções que fazem uso de um hub central de mensagens fazem mais sentido em grande parte dos casos [Tim Mallalieu 2004]. Isto é especialmente verdade quando os requisitos envolvem flexibilidade nas relações entre Software fornecedor e consumidor e fiabilidade das mensagens. O MOM fornece um meio baseado em troca de mensagens assíncronas que facilita a integração de aplicações mantendo um estado de Loose Coupling [Korhonen 1997], as mensagens são depositadas numa fila e depois são reenviadas para o destinatário num processo habitualmente intitulado de Message Queueing. Infra-estruturas do tipo MOM podem fornecer alta performance, fiabilidade e tecido para a interoperação dentro de sistemas heterogéneos. Figura 12: Message-Oriented Middleware. Contudo, estes sistemas não resolvem adequadamente a interacção para além das infra-estruturas do sistema. Ou seja as estruturas MOM funcionam melhor dentro do sistema onde existe uma ambiente controlado. Quando se tenta interoperar com outros sistemas os problemas voltam a aparecer, pois diferentes estruturas MOM utilizam protocolos e arquitecturas diferentes e requerem configurações de firewalls diferentes. - 31 - Tendo em conta que se irá discutir a interoperabilidade baseada em Web Services mais a frente neste documento, é necessário referir que numa arquitectura orientada a serviços uma solução a considerar é a utilização de Web Services como Message-Oriented Middleware, integrando assim o melhor de dois mundos e obtendo uma framework de interoperabilidade ubíqua bem como uma boa infra-estrutura para troca de mensagens assíncronas. " . ) As pontes aplicacionais são uma solução a ter em conta quando o sistema exige performance em vez de flexibilidade. A utilização de pontes directas entre Software é realmente uma boa opção em termos de performance mas compromete seriamente a extensibilidade e capacidade de manutenção do sistema. Tendo em vista uma arquitectura orientada a serviços as pontes directas entre aplicações impossibilitam a obtenção de Loose Coupling, logo não são uma boa solução. " A tecnologia Web Services tem como principal característica de interoperabilidade a utilização de interfaces para esconder a implementação dos serviços. Tais interfaces são definidas através de WSDL (Web Service Description Language) e regulam a forma como o serviço é acedido. O facto é que a partir do momento em que o serviço está escondido por uma interface não interessa em que plataforma está a correr ou em que linguagem foi desenvolvido. Hoje em dia existem uma sério de pacotes de desenvolvimento de Software que permitem a criação e o acesso a Web Services, em qualquer linguagem e sobre qualquer plataforma, de uma forma simples. A tarefa de interligar aplicações diferentes perde assim muitas dependências artificiais, estando-se mais perto da obtenção de Loose Coupling. Os Web Services têm sido aclamados como um meio forte de capacitar a interoperabilidade dos sistemas, pois suportam a integração de sistemas e a partilha de dados e recursos, tanto dentro como fora das organizações. O problema é que os Web Services são uma tecnologia relativamente nova e que se baseia em vários standards diferentes, que por sua vez estão em constante desenvolvimento e redefinição. Até a data, o desenvolvimento de muitos dos standards direccionados para a Web está a cargo do World Wide Web Consortium (W3C), incluindo os standards XML, WSDL e SOAP. No entanto, para responder às necessidades de desenvolvimento e promoção da interoperabilidade, foi criada uma nova organização: a Web Services Interoperability Organization (WS-I). A WS-I é um consórcio focado exclusivamente na interoperabilidade dos Web Services. Para que a promessa de interoperabilidade dos Web Services se concretize é necessário que os standards subjacentes sejam geridos de uma forma cuidadosa. O WS-I serve como integrador de standards e promotor da interoperabilidade definindo guias de interpretação e implementação dos standards, por forma a facilitar a adopção dos Web Services. - 32 - 4.3.1. Web Services Interoperability Organization "The Web Services Interoperability Organization is an open industry effort chartered to promote Web services interoperability across platforms, applications, and programming languages. The organization brings together a diverse community of Web services leaders to respond to customer needs by providing guidance, recommended practices, and supporting resources for developing interoperable Web services." – About WS-I, WS-I overview A WS-I é um consórcio composto por cerca de 150 organizações que representam vários interesses, tais como telecomunicações, media, finanças, governos, viagens, seguros, bens de consumo e tecnologias de informação [David Ehnebuske 2003]. E cujos objectivos passam por: Promover a interoperabilidade dos Web Services através de diferentes plataformas, sistemas operativos e linguagens de programação e o uso de protocolos para a troca de mensagens interoperáveis entre serviços; Encorajar a adopção dos Web Services; Acelerar a implementação fornecendo guias, boas práticas e outros recursos para o desenvolvimento de Web Services interoperáveis. Como um integrador de standards a WS-I serve como intermediário entre as organizações que fornecem os standards e a indústria, outras organizações e os utilizadores finais. Figura 13: Relações entre o WS-I e as organizações - 33 - O trabalho desenvolvido pela WS-I em conjunto com as outras organizações deu origem a uma série de recursos para ajudar ao desenvolvimento e a implementação dos Web Services, incluindo a especificação de um perfil (profile) de Web Services interoperáveis. Para a WS-I um perfil é uma colecção de requisitos para suportar a interoperabilidade. Os recursos disponibilizados são os seguintes: Especificações de perfil – estas incluem uma lista de especificações, não proprietárias, relacionadas com a tecnologia Web Services, numa determinada versão, e uma lista de clarificações e restrições sobre elas, por modo a simplificar o desenvolvimento de Web Services interoperáveis; Casos e cenários de utilização – estes capturam requisitos técnicos e de negócio para a utilização de Web Services, os quais reflectem classes de requisitos reais suportando soluções baseadas em Web Services, e fornecem um meio para demonstrar as guias descritas nos perfis; Aplicações de demonstração – estas demonstram a implementação de aplicações construídas com base nos cenários e que estão em conformidade com os perfis definidos, estando desenvolvidas para múltiplas plataformas e em diferentes linguagens e ferramentas de desenvolvimento permitem demonstrar a interoperabilidade em acção; Ferramentas de testes – tais ferramentas são utilizadas para monitorizar e analisar as interacções feitas através de Web Services para determinar se estas estão em conformidade com as guias especificadas nos perfis. Hoje em dia é possível descarregar da Internet várias implementações das especificações da WS-I, incluindo o Web Services Enhancements (WSE) da Microsoft e o Web Services Toolkit (WSTK) da IBM. Estes pacotes estendem as implementações básicas de Web Services dos seus fornecedores por forma a incorporar as extensões e restrições criadas pelas especificações da WS-I. 4.3.2. WS-I Basic Profile A 22 de Julho de 2003 a direcção e os membros da WS-I aprovaram por unanimidade a publicação do primeiro perfil de Web Services Interoperáveis intitulado WS-I Basic Profile 1.0. Este perfil foca as tecnologias de fundo em que os Web Services se baseiam: HTTP, SOAP, WSDL, UDDI (Universal Description, Discovery, and Integration), XML e XML Schema. A especificação de perfil do WS-I Basic Profile 1.0 [Keith Ballinger 2004] consiste das seguintes especificações não proprietárias relacionadas com Web Services: SOAP 1.1 WSDL 1.1 UDDI 2.0 XML 1.0 (Second Edition) XML Schema Part 1: Structures XML Schema Part 2: Datatypes - 34 - RFC2246: The Transport Layer Security Protocol Version 1.0 RFC2459: Internet X.509 Public Key Infrastructure Certificate and CRL Profile RFC2616: HyperText Transfer Protocol 1.1 RFC2818: HTTP over TLS RFC2965: HTTP State Management Mechanism The Secure Sockets Layer Protocol Version 3.0 Foram criados três cenários para o WS-I Basic Profile 1.0, onde cada cenário é um padrão de desenho arquitectural para interacção entre actores, papeis e troca de mensagens. One-way Usage Scenario – é o cenário de utilização mais simples, onde a troca de mensagens apenas tem um sentido, sendo que é o consumidor a enviar pedidos ao fornecedor. Este cenário só deve ser utilizado quando a perda de informação é tolerável. Synchronous request/response Usage Scenario – este é o cenário mais comum onde o consumidor envia um pedido ao fornecedor que o processa e envia de volta uma resposta. Basic callback Usage Scenario – este cenário é utilizado para simular operações assíncronas utilizando operações síncronas. É composto por dois cenários de pedidos e respostas síncronas, um iniciado pelo consumidor e outro iniciado por um fornecedor. Foi fornecido também um mapeamento entre os cenários e as clarificações e restrições especificadas no perfil. À data foi também disponibilizada uma aplicação para exemplificar a implementação do perfil, intitulada Supply Chain Management Sample Application. A WS-I publicou no dia 24 de Agosto de 2004 a especificação final da versão 1.1 [Christopher Ferris 2004] do Basic Profile que se baseia na versão 1.0 e incorpora as erratas existentes. Esta versão separa os requisitos referentes a serialização dos envelopes SOAP e a sua representação em mensagens para outro perfil intitulado Simple SOAP Binding Profile 1.0. Esta separação foi feita tendo em vista a capacidade de integração do Basic Profile 1.1 com qualquer perfil que especifique a serialização de envelopes, como por exemplo o Attachments Profile 1.0. Estar em conformidade com o Basic Profile 1.0 e com as correcções feitas através das erratas é aproximadamente igual a estar em conformidade com o Basic Profile 1.1 e o Simple SOAP Binding Profile 1.0. "" ) “Service-oriented architectures (SOAs) based on Web service standards have emerged as the leading industry wide enabler for interoperability.” – Roger Sessions, Interoperability Through Service-Oriented Architectures (SOAs) Antes das arquitecturas orientadas a objectos a interoperabilidade entre aplicações era conseguida recorrendo a ligações directas entre aplicações ou à - 35 - utilização de um MOM. As ligações directas entre aplicações fazem com que os sistemas se preencham com ligações ad-hoc que se tornam difíceis de manter e impossibilitam a obtenção de Loose Coupling. Os sistemas equipados como MOM atingem facilmente um estado de interoperabilidade dentro do sistema mas falham quando é necessário interligar sistemas. A aproximação de uma SOA à interoperabilidade entre aplicações é construir uma infra-estrutura à qual todos os sistemas se ligam por forma a interoperarem. Assim sendo cada aplicação requer apenas uma ligação, tornando-se simples adicionar novas aplicações ao sistemas. Figura 14: Interoperabilidade numa SOA [Sessions 2004]. As arquitecturas orientadas a serviços têm como premissa a interoperabilidade e são uma aproximação para desenvolver sistemas de Software novos e envolver os sistemas antigos de uma forma em que estes possam trabalhar em conjunto. A utilização de Web Services numa SOA parece ser a escolha mais lógica para garantir o maior nível de interoperabilidade, tanto interna como externamente ao sistema. 4.4.1. A interoperabilidade ao nível de negócio As arquitecturas orientadas a serviços devem também ser vistas como uma catalisador para interoperabilidade ao nível de negócio, ou seja, para a interoperabilidade entre empresas (ou entre departamentos de uma empresa). Desta forma a interoperabilidade torna-se na capacidade de prestar serviços ou de coordenar operações de uma forma automatizada. - 36 - Hoje em dia, as empresa procuram cada vez mais as parcerias e a delegação de tarefas como meio de suprimir a sua falta de conhecimento ou experiência em determinadas áreas. Estas decisões são tomadas ao mais alto nível de devem sempre produzir resultados rapidamente, daí a importância de existir uma estrutura flexível e capaz de se adaptar rapidamente. As arquitecturas orientadas a serviços baseadas em Web Services fornecem essa flexibilidade. Pois permitem que a alto nível sejam definidos os processos críticos de negócio e que as alterações produzidas digam apenas respeito à integração de novos serviços ou a alterações nas agregações de serviços básicos de negócio. Figura 15: Reorganização dos processos de negócio [Lawrence Wilkes 2004]. Este conceito pode ser verificado considerando o exemplo que se segue. A empresa A é uma empresa de transporte de bens e mercadorias que se orgulha de estar na vanguarda da tecnologia. O negócio desta empresa é suportado por uma frota de veículos de transporte pesados e ligeiros. Todos os veículos dispõem de um dispositivo de localização global (GPS) com a capacidade de apresentar rotas e periodicamente informam o sistema da sua localização. A empresas freta os seus serviços tanto a outras empresas como a particulares, para esse efeito dispõe de uma página de Internet e de um Web Service que permitem a efectuar reservas. Para suportar as suas necessidades de Software a empresa dispõe de uma arquitectura orientada a serviços. Analisando o processo de negócio segundo o qual é afectada uma tarefa de transporte a uma equipa de entregas, tem-se que o sistema consulta o serviço de equipas que indica quais são as equipas livres. De seguida consulta o sistema de localização para descobrir qual é a equipa que está mais próxima da local de partida. O passo seguinte é notificar a equipa via SMS através de um serviço notificações que está ligado a uma central GSM da empresa. Por último, os pontos de partida e de destino são enviados para o GPS para que seja calculada a rota e o serviço de equipas é notificado de que a equipa já num se encontra livre. - 37 - Figura 16: Processo de negócio desencadeado por uma entrega. No entanto surgiu a oportunidade de efectuar uma parceria com uma operadora de telecomunicações móveis B que envolve o envio gratuito de SMS para a mesma rede através de um Web Service da operadora. Como a parceria era vantajosa em termos financeiros a direcção decidiu aprovar o negócio, desta forma era necessário proceder a alterações no sistema. O departamento de informática da empresa A, uma vez que teve acesso as especificações do serviço de SMS da empresa B, rapidamente desenvolveu e testou uma nova versão do serviço de notificações. Esta nova versão em vez de utilizar o módulo de GSM para enviar as mensagens escritas utilizava o serviço disponibilizado pela empresa B. O serviço de notificações foi então substituído pela nova versão sem que existissem mais repercussões no sistema, tendo todos os processos de negócio ficado a funcionar exactamente como dantes, inclusive o processo de entregas. Outro problema que a empresa enfrentava era que os seus clientes desejavam saber em tempo real onde se encontravam as suas cargas. A ideia da direcção era recorrendo ao serviço de localização dispor essa informação aos clientes na sua página de Internet. No entanto o departamento de informática alertou a direcção para o facto de que não existia na empresa informação cartográfica que pudesse ser utilizada para apresentar a localização dos veículos na página. Assim sendo a direcção procurou no mercado por soluções para o problema e encontrou três diferentes. Comprar a cartografia e implementar um sistema de gerar imagens para apresentar na página. Comprar um Sistema de Informação geográfica (SIG) e integra-lo no sistema. Ou contratar o serviço a uma empresa que disponha de um SIG. Das três soluções a menos dispendiosa e de implementação mais rápida é a terceira. Desta forma a empresa A contratou o serviço a uma empresa C que mediante as coordenadas e mais algumas variáveis de configuração devolve uma imagem pronta a utilizar no site. Este serviço externo quando agregado com os serviços internos de equipas e localização permite a empresa disponibilizar um serviço de localização de cargas aos seus clientes. O facto das arquitecturas orientadas a serviços potenciarem a interoperabilidade ao nível dos negócios (o business-to-business) é talvez um dos principais motivos por de trás do sucesso deste tipo de arquitecturas. - 38 - $ # No mercado empresarial é cada vez mais importante fornecer produtos de qualidade, o que leva à especialização das empresas. Por sua vez a especialização das empresas obriga à cooperação entre elas para que sejam criados novos produtos. É aqui que as arquitecturas orientadas a serviços podem fazer a diferença pois fornecem a flexibilidade e a agilidade necessárias para que exista interoperabilidade efectiva entre as empresas. A criação de ligações business-to-business é essencial para que as empresas prosperem e as SOAs baseadas em Web Services potenciam a criação de ligações simples e automatizadas, tornando-se assim num meio por excelência para a interacção entre organizações. As arquitecturas orientadas a serviços têm como base principal a interoperabilidade entre componentes de Software e os Web Services são vistos como o meio preferencial para a obter. Os Web Services levam à interoperabilidade porque escondem a implementação dos serviços por trás de interfaces, deixando então de ter qualquer importância em que linguagem está implementado o serviço ou em que plataforma está a correr. Outra perspectiva de futuro trazida pelas SOAs é que com o desenvolvimento de standards todas as aplicações de um determinado tipo respeitarão uma determinada interface, tornado-se assim possível trocar de fornecedor de aplicações sem que seja necessário fazer alterações no sistema. Por outro lado com o aumento do número de serviços disponíveis, tanto dentro como fora das empresas, a construção de aplicações e a modelação de processos de negócio tornar-se-a em pouco mais do que a agregação de serviços existentes. Hoje em dia já muitas empresas optaram por reformular os seus sistemas implementado arquitecturas orientadas a serviços e estão a tirar grandes benefícios da sua utilização. Alguns benefícios, como a capacidade de interoperar com outros sistemas, eram esperados mas outros, como por exemplo o aumento da fiabilidade, são uma surpresa agradável. Tendo em conta que relação entre custos e benefícios é tão boa, é bastante provável que as arquitecturas orientadas a serviços estejam aqui para ficar. - 39 - ) - ) / ) 0% 1 Os documentos XML são um conjunto de informação subdividida por etiquetas (tags) [Bradley 1998]. Ao conjunto composto por uma etiqueta de início, a etiqueta de fim correspondente e a informação contida entre elas dá-se o nome de elemento (Element). Uma etiqueta pode ainda conter parâmetros, os quais se chamam atributos (Attributes). Ao elemento que envolve todo o documento chama-se raiz ou documento. A primeira linha do documento é necessariamente a instrução de processamento (<? ... ?>) que indica ao parser quais as condições de processamento. É obrigatório declarar qual a versão do XML que se está a utilizar (version), pode-se também indicar qual a codificação de caracteres utilizada (encoding) e se o documento é dependente de outros documentos ou não (standalone). Exemplo 1: Cabeçalho XML. De seguida podem surgir instruções para o processador dentro de declarações. Instruções válidas são a definição de entidades, comentários e secções de caracteres (CDATA). Uma entidade é como que um “alias” para um ou mais caracteres e são invocadas colocando um ‘&’ antes do nome e um ‘;’ depois, por exemplo ‘&autor;’. Um comentário funciona como auxiliar à compreensão do documento e não será processado. Uma secção de caracteres indica um porção de texto que não contém código de marcação (Markup) logo pode conter caracteres tais como o menor (‘<’), não sendo considerado que estes tenham qualquer valor especial. ! "#$%&'( ) ! (*% %& +, ! (*% %& -- .-/0 1 ! 2 2$ 2 2 )$"3%3) 4 1 1 Exemplo 2: Instruções para o processador de XML. Por fim, a árvore de elementos que contém a informação. Quanto a esta parte do documento é necessário realçar alguns pontos. 1. O XML é sensível às maiúsculas e minúsculas (case-sensitive), logo uma etiqueta <a> é diferente de uma etiqueta <A>. 2. Um elemento pode ser vazio, sendo então definido por uma única etiqueta cujo penúltimo caracter é uma barra ‘/’, ou seja que respeite o seguinte tipo: <Nome Atributo="Valor"/>. No entanto um elemento que não seja vazio tem que estar limitado por duas etiquetas. - 40 - 3. As etiquetas têm de estar equilibradas, ou seja a última etiqueta aberta tem de ser a primeira a ser fechada, por exemplo: <a><b> ... </b></a> e nunca <a><b> ... </a></b>. 4. Os valores dos atributos têm sempre de estar entre aspas, por exemplo: <pessoa bi="12039">. ( 9 567 8 :8 9 :8 , ; , ; , ; 8 8 8 , ; , ; , ; 8 9 :8 8 Exemplo 3: Árvore de elementos. ) Com o aparecimento e generalização do XML (eXtensible Markup Language) tornou-se relativamente mais fácil implementar sistemas que embora correndo em ambiente diferentes, possam trocar informação de uma forma transparente. Ou seja sem que qualquer uma das partes necessite de conhecer as necessidades da outra, nomeadamente em termos de formato dos dados. De facto a universalidade do XML torna-o num meio bastante atraente para trocar informação entre diferentes programas [Haas 2004]. Desta forma os programas podem ser desenvolvidos para qualquer sistema e em qualquer linguagem, e mesmo assim comunicarem entre si tirando partido da interoperabilidade do XML. A combinação entre as tecnologias XML, XML Namespaces, e XML Schemas, forma uma ferramenta capaz de lidar com os problemas associados aos ambientes distribuídos. É dentro desta perspectiva de interoperabilidade que surgem os Web Services. A.2.1. Definição Segundo a definição do W3C um Web Service é um sistema de Software identificado por um URI (Uniform Resource Identifier) cujos interfaces públicos e ligações estão definidos e descritos em XML. A sua definição pode ser descoberta por outros sistemas de Software, que podem então interagir com o Web Service segundo as regras pre-estabelecidas, utilizando mensagens XML enviadas sobre protocolos de Internet [Allen Brown 2004]. Por outras palavras um Web Service é um interface para uma funcionalidade de uma aplicação que está disponível através da rede e que foi construído utilizando protocolos standard da Internet [James Snell 2002]. - 41 - A.2.2. Stack Web Service Figura 17: Stack Web Services Discovery é a camada que fornece os mecanismos para os clientes descobrirem as definições dos servidores. O UDDI (Universal Description, Discovery, and Integration) é o actualmente o meio standard para a descoberta de Web Services e baseia-se numa cadeia de servidores interligados que fornecem um directório global. Description contém as definições do servidor, mediante as decisões tomadas em cada um dos níveis seguintes quanto aos protocolos que são suportados. A linguagem utilizada de forma mais comum para descrever um Web Service é o WSDL (Web Service Description Language). Packaging é o processo pelo qual se prepara a mensagem para poder ser compreendida pelo receptor, sem que existam problemas com os tipos de dados envolvidos na transacção. O SOAP (Simple Object Access Protocol) é o formato de pacotes mais utilizado. Transport é a camada que trata da comunicação entre as aplicações. O seu objectivo primário é o de mover a informação de um ponto para outro na rede. Embora um Web Service possa ser construído sobre quase todos os protocolos de transporte existentes, o mais utilizado é o HTTP (HyperText Transfer Protocol). Network é a camada que se preocupa com as bases necessárias para a comunicação. Esta camada é exactamente a mesma que podemos encontrar no modelo TCP/IP. A.2.3. UDDI O UDDI é um projecto que visa encorajar a interoperabilidade e a adopção de Web Services. Este projecto consiste num conjunto de especificações baseadas em standards que permitem a descrição e a descoberta de um serviço [Bellwood 2001]. O UDDI pode ser visto como uma tecnologia constituída por um registro ou directório baseado em XML, composto por vários servidores dispersos, no qual qualquer empresa do mundo pode registrar-se como desponbilizadora de serviços na Internet. O - 42 - objectivo é facilitar a criação de ligações entre as empresas proporcionando um meio para que elas se encontrem na Internet. UDDI é muitas vezes comparado com uma lista telefónica como as Páginas Amarelas. As empresas podem listar-se por nome, produto, localização ou por Web Services que disponibilizam. O registro UDDI contem definições pragmáticas das empresas e dos serviços que elas disponibilizam. Também contem referencias para especificações (intituladas Technical Models ou tModels) que descrevem com os Web Services funcionam. As empresa e as organizações de standards são as principais fontes de informação de registro. Popular o registro envolve várias etapas. As empresas de Software, as organizações de standards e os programadores povoam o registo com tModels que descrevem especificações comuns a uma indústria ou negócio. As empresa povoam o registo com as descrições dos serviços que suportam. O registro UDDI atribui automaticamente um UUID (unique universal identifier) a cada tModel, registo de negócio e de empresa. Depois as empresas podem interrogar o registo para descobrir serviços prestados por outras empresas. Este processo pode ser dinâmico, por forma a pesquisa e a descoberta se adaptarem automaticamente a disponibilidade dos serviços. A Microsoft, a IBM e a Ariba estiveram cabeça do projecto na sua criação, mas hoje em dia a organização é composta por mais de 200 empresa. Entre elas grandes fornecedores de Software e empresas lideres no comercio electrónico [Sleeper 2002]. O UDDI está actualmente na sua versão 3 que visa suportar em grande escala interacção entre implementações de Web Services privadas e publicas. A.2.4. WSDL O WSDL é o standard de facto, usado para tornar os Web Services autodescritivos. Ele é utilizado para descrever tudo acerca de um Web Service, nomeadamente o que é que faz, como o faz e como se pode usa-lo [Cerami 2002]. A.2.4.1. Exemplo Um ficheiro WSDL [Erik Christensen 2001], sendo um ficheiro XML, começa com o cabeçalho XML e de seguida tem o elemento raiz intitulado <definitions> onde se encontram declarados os namespaces necessários. O corpo do ficheiro por norma segue a estrutura: tipos de dados, mensagens, interfaces e serviços. < = ; ( , * > = 8 8 = > = 8 8 <<< < = > = 8 8 > = > = 8 8 > = < > = 8 8 > ! 22 % 22 ! 22 6 , 22 ! 22 ; 22 ! 22 22 8 < = ; > < 2 ; 2 ; 8 ( < 2 ; 8 ( ,8 < 8 8 ,8 < 8 Exemplo 4: A etiqueta defenitions no ficheiro WSDL. - 43 - >< > Dentro da etiqueta <types> são encapsuladas as definições dos tipos de dados que podem ser utilizados durante a comunicação. Para este efeito são usadas as etiquetas do XML Schema namespace. Em alguns casos esta parte do corpo do WSDL pode ser omitida desde que os tipos utilizados sejam tipos padrão. !22 % < =? = > = = 8 8 8 8 = 8 < =? 22 , * > = 8 8 > = 8 8 <<< <@ ,8 ---8 567 > A ( ,B = %? = C = ; = ? 8 = C 8 = %? = = A ( ,B D = %? = = ,B 8 = 8 = %? = = A ( ,B E = %? = = 6 , 8 = 8 = %? = > < 2 ; ? ,8 ,8 ? ,8 ? ,8 Exemplo 5: Definição dos tipos de dados num ficheiro WSDL. Através da etiqueta <message> vão ser definidas as mensagens que podem ser trocadas entre os clientes e o Web Service. Neste caso são definidas duas mensagens, uma para o pedido e outra para a resposta. < = , < = 8 < = , < = , < = 8 < = , A ( ? ,B A ( ? ,B DC = A ( ,B D = A ( ,B Exemplo 6: Definição das mensagens num ficheiro WSDL. - 44 - 8 D 8 Os interfaces especificam como os métodos se traduzem em mensagens. Basicamente é definido que mensagens de input é que vão ser recebidas e que mensagens de output ou erro é que vão ser geradas. < 8< = < %? = < = < = < =; 8< = = %? A ( ,B ' %? A ( ,B , =A ( ,B , =A ( ,B , =A ( ,B DC D E 8 8 8 Exemplo 7: Definição das operações num ficheiro WSDL. Esta parte do WSDL descreve a implementação do Web Service. é a etiqueta <binding> que faz a ligação entre o interface e os protocolo de rede e mensagens a utilizar. A etiqueta <service> tem como objectivo detalhar a localização do serviço na rede. < = ? 8< < , ( > B , =A ( ,B ' %? = , ? > =88 > ,8 8> 8 < = A ( ,B = 3 > =88<<< < 2 ; 8( < = = ? 8 8< = < = = ? 8 8< = < =; = ? 8 8< =; 8< = = , = < ( = < 8< = < = > ,2 ; ( A ( , >8 =( ,B > ' B , = > 8< 8< = =88<<< < 2 ; 8( >8 = Exemplo 8: Definição dos protocolos de rede aceites e da localização do serviço num ficheiro WSDL. - 45 - A.2.5. SOAP O SOAP é um protocolo para troca de informação dentro de ambientes distribuídos. é baseado em XML e consiste de três partes: um envelope que define uma estrutura para descrever o que está numa mensagem e como a processar; um conjunto de regras de codificação para descrever instancias de tipos de dados definidos na aplicação; e uma convenção para representar as chamadas a procedimentos remotos e as respectivas respostas. O SOAP pode potencialmente ser utilizado sobre uma variedade de protocolos de transporte, por norma é utilizado sobre HTTP [Don Box 2000]. A.2.5.1. Envelope O envelope SOAP é a mensagem que de facto é trocada entre o cliente e o Web Service. Para além do envelope em si, a mensagem pode conter cabeçalhos adicionais, e contém o corpo. Analisando cada um destes elementos têm-se que: o envelope é a raiz do documento XML que representa a mensagem; os cabeçalhos adicionais são um mecanismo genérico para adicionar características as mensagens, sem que seja necessário o acordo prévio entre as partes envolvidas; por último o corpo é o contentor da informação destinada ao receptor. #3'2(*F= ( = #3'2(*F > = 8 8 > #3'2(*F= , ? > = 8 8 > #3'2(*F= B ? = A ( ,B = > = 8 8 ; G. 8 ; E 8 8 = A ( ,B 8 #3'2(*F= B ? 8 #3'2(*F= ( ,8 < 8 ,8 8 8 ,8 8 8 ,8 2 ; Exemplo 9: Envelope SOAP de pedido. #3'2(*F= ( = #3'2(*F > = 8 8 > ,8 8 #3'2(*F= , ? > = 8 8 > ,8 #3'2(*F= B ? = A ( ,B D = > = 8 8 < 2 ; ,B $> ( , 8 8 = A ( ,B D 8 #3'2(*F= B ? 8 #3'2(*F= ( Exemplo 10: Envelope SOAP de resposta. - 46 - ,B 2 ! Allen Brown, Hugo Haas (2004, Fevereiro). Web Services Glossary. http://www.w3.org/TR/2004/NOTE-ws-gloss-20040211/. Amazon Web Sevice. http://www.amazon.com/gp/browse.html/104-1671910-7327941?node=3435361. Azevedo, Douglas José Peixoto de (1997, Junho). Bate Byte n.º 65 - Evolução de Software Barry, Douglas K. (2003). Web Services and Service-Oriented Architectures: The Savvy Manager' s Guide. Barry & Associates Bellwood, Thomas A. (2001). UDDI - A Foundation for Web Services. http://www.idealliance.org/papers/xml2001/papers/html/03-02-03.html. Bradley, N. (1998). The XML Companion. Addison-Wesley. Cerami, Ethan (2002, Fevereiro). Web Services Essentials. O’Reilly. Christopher Ferris, Keith Ballinger, David Ehnebuske, Martin Gudgin, Canyang Kevin Liu, Mark Nottingham, Prasad Yendluri (2004, Agosto). WS-I Basic Profile Version 1.1. http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html. Colan, Mark (2004, Abril) Service-Oriented Architecture expands the vision of Web services, Part 1. http://www-106.ibm.com/developerworks/library/ws-soaintro.html. David Ehnebuske, Christopher Ferris, Tom Glover, Christopher Kurt, Tony Roby, Robert Sutor (2003, Janeiro). WS-I Overview. http://www.ws-i.org/docs/20030115.wsi.introduction.pdf. Don Box, David Ehnebuske, Gopal Kakivaya, Andrew Layman, Noah Mendelsohn, Henrik Frystyk Nielsen, Satish Thatte, Dave Winer (2000, Maio). Simple Object Access Protocol (SOAP) 1.1. http://www.w3.org/TR/2000/NOTE-SOAP-20000508/. EDI History. http://e.d.i.tripod.com/edi_history.htm. Eisenberg, Robert (2004, Abril). Service-Oriented Architecture: The Future Is Now. http://www.informationweek.bizintelligencepipeline.com/howto/showArticle.jhtml? articleId=18902587. Erik Christensen, Francisco Curbera, Greg Meredith, Sanjiva Weerawarana (2001, Março). Web Services Description Language (WSDL) 1.1. http://www.w3.org/TR/2001/NOTE-wsdl-20010315. - 47 - Fallside, D. C. (2001, Maio). XML Schema Part 0: Primer. http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/. Framingham, John F. (2003, Setembro). Resurrecting the distributed app model. http://www.computerworld.co.nz/. Google Profile. http://www.google.com/profile.html. Google Web APIs. http://www.google.com/apis/. Haas, Hugo (2004, Abril). Web Services Activity Statement. http://www.w3.org/2002/ws/Activity. He, Hao (2003, Setembro). What is Service-Oriented Architecture? http://webservices.xml.com/pub/a/ws/2003/09/30/soa.html. Irek, Chip (2003, Dezembro). Realizing a Service-Oriented Architecture with .NET. http://www.15seconds.com/issue/031215.htm. James Snell, Doug Tidwell e Pavel Kulchenko (2002, Janeiro). Programming Web Services with SOAP (1ed.). O’Reilly. Keith Ballinger, David Ehnebuske, Martin Gudgin, Mark Nottingham, Prasad Yendluri (2004, Abril). WS-I Basic Profile Version 1.0. http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html. Kishore Channabasavaiah, Kerrie Holley, Edward M. Tuggle, Jr. (2003, Dezembro). Migrating to a service-oriented architecture, Part 1. http://www-106.ibm.com/developerworks/webservices/library/ws-migratesoa/. Koch, Christopher (2002, Março). The ABCs of ERP. http://www.cio.com/research/erp/edit/erpbasics.html. Korhonen, Markku (1997). Message Oriented Middleware (MOM). http://www.tml.hut.fi/Opinnot/Tik-110.551/1997/mqs.htm. Lane, Edward (2004). SOA fundamentals and characteristics. http://www.itweb.co.za/sections/industryinsight/java/lane040806.asp. Lawrence Wilkes, Richard Veryard (2004, Abril). Service-Oriented Architecture: Considerations for Agile Systems. http://msdn.microsoft.com/library/en-us/dnmaj/html/aj2service.asp. Mark Endrei, Jenny Ang, Ali Arsanjani, Sook Chua, Philippe Comte, Pål Krogdahl, Min Luo e Tony Newling (2004, Abril). Patterns: Service-Oriented Architecture and Web Services (1ed.). IBM Redbooks Pressman, Roger S. (1995). Engenharia de software. Makron. Robert Verzello, John Reutter (1984). Processamento de dados. McGraw-Hill. - 48 - Rosenbloom, Scott (2003). An Introduction to Service-Oriented Integration. WRQ White Paper. http://www.wrq.com/products/whitepapers/0898.html. Schneider, A. (2004). Service-Oriented Architecture Primer. http://www.bjss.co.uk/fow/SOA Primer.pdf. Sessions, Roger (2004, Julho). Interoperability Through Service-Oriented Architectures (SOAs). ObjectWatch White Paper. Sleeper, Brent (2002). The Evolution of UDDI. http://www.uddi.org/pubs/the_evolution_of_uddi_20020719.pdf. Tim Mallalieu, Jeromy Carriere (2004, Janeiro). Enterprise Interoperability: .NET and J2EE. MSDN, Microsoft Corporation. http://msdn.microsoft.com/library/en-us/dnbda/html/dotnetinteroperability.asp. Yank, Kevin (2002, Fevereiro). Web Services Demystified. http://www.sitepoint.com/print/web-services-demystified. - 49 - Exemplo 1: Cabeçalho XML. 40 Exemplo 2: Instruções para o processador de XML. 40 Exemplo 3: Árvore de elementos. 41 Exemplo 4: A etiqueta defenitions no ficheiro WSDL. 43 Exemplo 5: Definição dos tipos de dados num ficheiro WSDL. 44 Exemplo 6: Definição das mensagens num ficheiro WSDL. 44 Exemplo 7: Definição das operações num ficheiro WSDL. 45 Exemplo 8: Definição dos protocolos de rede aceites e da localização do serviço num ficheiro WSDL. 45 Exemplo 9: Envelope SOAP de pedido. 46 Exemplo 10: Envelope SOAP de resposta. 46 - 50 - 3 Figura 1: Evolução do Software dividida em eras. 5 Figura 2: Sistema constituído por aplicações isoladas. 9 Figura 3: Sistema com partilha de dados através de uma base de dados central. 10 Figura 4: Sistema integrados. 11 Figura 5: Interacção entre sistemas diferentes. 11 Figura 6: Arquitectura orientada a serviços. 12 Figura 7: Arquitectura de Middleware básica. 16 Figura 8: Interoperabilidade entre Web Services e CORBA ou DCOM. 18 Figura 9: Agregação de serviços [Lawrence Wilkes 2004]. 19 Figura 10: Relações entre as zonas. 23 Figura 11: Arquitectura da Avista 28 Figura 12: Message-Oriented Middleware. 31 Figura 13: Relações entre o WS-I e as organizações 33 Figura 14: Interoperabilidade numa SOA [Sessions 2004]. 36 Figura 15: Reorganização dos processos de negócio [Lawrence Wilkes 2004]. 37 Figura 16: Processo de negócio desencadeado por uma entrega. 38 Figura 17: Stack Web Services 42 - 51 -