Do que trata o artigo

Este artigo apresenta os principais conceitos da Arquitetura Orientada a Serviços (SOA - Service Oriented Architecture) e explora a razão de utilizá-la, abordando também a interoperabilidade, conceito-chave de SOA e de sistemas distribuídos. Será apresentado como construir uma aplicação dentro do estilo SOA através da utilização de Web Services e BPEL, demonstrando na prática a integração entre sistemas, interoperabilidade e o uso de ferramentas e tecnologias para criação de serviços compostos.

Para que serve

Uma importante necessidade para negócios e TI é a interoperabilidade, que pode ser descrita como a habilidade de diferentes sistemas se comunicarem uns com outros. A Arquitetura Orientada a Serviços é uma abordagem que pode oferecer interoperabilidade e ajudar os sistemas a permanecerem escaláveis e flexíveis enquanto crescem, além de melhorar o alinhamento entre TI e negócio. Várias tecnologias importantes e padrões têm sido definidos para suportar uma infraestrutura SOA. Uma das possíveis maneiras de implementar SOA é usando Web Services, que são baseados em um conjunto de padrões amplamente aceitos e utilizados, que cobrem a interoperabilidade.

Em que situação o tema é útil

SOA permite que empresas façam mudanças mais rapidamente quando necessário, economizando tempo e dinheiro. Através do alinhamento entre necessidades de negócio e a capacidade da TI de atender a essas necessidades, SOA ajuda a tornar a organização mais ágil através de reusabilidade, diminuindo o custo de desenvolvimento, integração e manutenção.

Autores: Leandro Wong Kong San e Marco Antônio Pereira Araújo

As grandes corporações de hoje querem flexibilidade, agilidade, redução de custos, melhora na eficiência das pessoas e dos processos, e responder rapidamente a mudanças. Desafios e oportunidades surgem a cada dia e as empresas devem ser ágeis para redefinir e adaptar seu modelo de negócios, processos e estruturas organizacionais. Porém, existe o problema da lacuna entre negócio e a TI. A unificação de uma organização através do alinhamento entre TI com negócio traz uma maior flexibilidade, aumento na agilidade e produtividade. A TI passa a entender profundamente as prioridades de negócios e as informações fornecidas pelos sistemas acabam sendo mais precisas e no prazo adequado. SOA possibilita que isto seja feito de forma a atender as necessidades da organização como um todo.

Além disso, estas empresas dependem de sistemas e aplicativos para funcionar e este ambiente computacional está se tornando cada vez mais heterogêneo e complexo. Construir, executar e gerenciar aplicações em um ambiente deste tipo é uma tarefa difícil. SOA permite que empresas façam mudanças mais rapidamente quando necessário, economizando tempo e dinheiro. Através do alinhamento entre necessidades de negócio e a capacidade da TI de atender a essas necessidades, SOA ajuda a tornar a organização mais ágil através da aplicação de reusabilidade, diminuindo o custo de desenvolvimento, integração e manutenção.

O reuso de aplicações pode ser feito através da combinação de vários serviços expostos pelas aplicações existentes. Os desenvolvedores não precisam criar aplicações totalmente novas, reduzindo o tempo do processo de desenvolvimento. E como SOA é baseado em padrões, os desenvolvedores não precisam gastar tempo aprendendo as várias novas tecnologias que surgem a cada dia. Isto significa redução nos custos da empresa ao deixar de comprar novas aplicações e na contratação de desenvolvedores com algum conhecimento novo ou específico.

Assim, SOA é uma estratégia que inclui aspectos técnicos e organizacionais. No mundo da computação distribuída, processos de negócios são distribuídos e é necessário que haja interoperabilidade entre diferentes sistemas.

Interoperabilidade

Muitos sistemas em uma grande empresa não foram desenvolvidos para serem capazes de se comunicar com outros sistemas. Eles foram desenvolvidos com interfaces, protocolos proprietários e formas de comunicação diferentes dificultando muito a integração. Para permitir que aplicações empresariais possam se comunicar, são utilizados padrões e formatos de arquivos entre os sistemas. Isso pode ser bom para algum tipo de integração pequena, mas pode ser inviável quando o número de aplicações a serem integradas se torna grande. A Figura 1 mostra os problemas com a integração tradicional.

Figura 1. Sistemas com protocolos proprietários

A Figura 1 mostra que, para que um sistema se comunique com o outro, o integrador de sistemas teria que aprender novas tecnologias e novas Interfaces de Programação de Aplicativos (APIs) de cada sistema para que pudesse realizar a integração. Para integrar dois ou três sistemas, não haveria muito problema, porém a integração de vários sistemas seria complicada.

Estas mesmas empresas possuem sistemas novos e os chamados sistemas legados, distribuídos em um cenário de alta heterogeneidade tecnológica. Interoperabilidade é um requisito fundamental em um ambiente desses. Segundo Josuttis (2008), “interoperabilidade é a habilidade dos sistemas diferentes se comunicarem uns com os outros”.

Existem várias abordagens para construir sistemas que atendam aos requisitos da interoperabilidade. Uma delas é SOA. Na visão de SOA, a interação entre clientes e serviços fracamente acoplados demonstra ampla interoperabilidade. Esse é o objetivo desta arquitetura: interoperabilidade entre diferentes plataformas e linguagens de programação. Clientes e serviços devem se comunicar e se entender independente da plataforma. Para isso, devem usar uma forma padronizada de se comunicar. Com o advento do XML e da sua grande aceitação, os sistemas, hoje, podem ser integrados mais facilmente. Os sistemas passam a “conversar” utilizando a mesma “linguagem”.

Serviços

Um dos elementos principais da arquitetura SOA são os serviços. Um serviço fornece uma funcionalidade específica de negócio como criar um cliente, analisar o histórico de crédito de uma pessoa, transferir dinheiro, e assim por diante. Um serviço pode fornecer uma funcionalidade distinta, como converter um tipo de moeda em outro, ou realizar um conjunto de funcionalidades, como manipular várias operações em um sistema de reservas aéreas. Uma arquitetura orientada a serviços é uma forma de compartilhar serviços de uma maneira generalizada e flexível.

...
Quer ler esse conteúdo completo? Tenha acesso completo