quarta-feira, 4 de novembro de 2009

Introdução à SOA

Todos os desenvolvedores com certeza já se depararam com esta sigla: SOA. O objetivo deste post é explicar brevemente e em poucas palavras o que é este paradigma.

Definição

Service Oriented Architeture ou Arquitetura Orientada a Serviço surgiu com o seguinte princípio: Concentrar os esforços de TI de uma organização para melhor atender ao negócio. Ou seja, o desafio é utilizar a tecnologia de forma que esta possa agregar valores à todo e qualquer tipo de negócio dentro da organização, transformando processos em serviços que possam estar disponíveis e acessíveis à qualquer momento. SOA portanto, tem o objetivo de promover a interoperabilidade entre sistemas que são executados e desenvolvidos nas mais diferentes plataformas, podendo as mesmas ser totalmente distintas.

Imagine uma empresa que possua vários departamentos, aonde cada um possui sistemas que foram desenvolvidos em diferentes tecnologias.






No modelo tradicional, caso um sistema necessite acessar informações em outro, o mesmo só poderá fazê-lo acessando a base de dados diretamente (caso possível), o que impactaria no desenvolvimento de módulos adicionais, regras de acesso e validação para cada caso.




No modelo SOA, existe um serviço em cada sistema responsável por disponibilizar as informações para cada um dos outros sistemas.


Web Services


O mercado padronizou a implementação de SOA através de Web Services, por serem robustos e flexíveis, mas em nenhum momento, em sua definição, é dita a regra que a comunicação entre sistemas deve ser realizada através de Web Services. Imagine como seria o transtorno a comunicação entre dois sistemas através de um simples arquivo texto, levando em consideração um grande volume de dados e estes contendo, ainda, dados diversificados e distintos.

O que é um Web Service

É uma camada de uma aplicação desenvolvida utilizando a mesma tecnologia/arquitetura, capaz de acessar objetos e diretrizes de negócio da aplicação, é hospedado em um servidor de aplicações disponível em uma determinada rede sendo capaz de responder a requisições de qualquer outro sistema, desde que este siga um mesmo padrão de comunicação.
O padrão adotado é o da especificação WSDL (Web Services Definition Language). O padrão dita as regras de como um Web Service deve receber e enviar as requisições de um determinado cliente e também como deve informar quais serviços estão disponíveis através de um contrato de software.

Como é feita a comunicação

SOAP (Padrão WSDL)

Um dos protocolos utilizados para a comunicação é o SOAP, que é executado através de uma requisição HTTP. A mensagem SOAP é criada por um cliente, que informa o serviço e seus parâmetros (se houverem), o servidor então recebe a mensagem, realiza o processamento e devolve a mensagem com o retorno.

Prós:
Mantém o estado da mensagem, possibilitando a troca de uma mesma mensagem durante várias requisições.

Contras:
Trafega apenas XML, que em sua característica é bastante verboso, consumindo muito processamento.
Cada tecnologia deve interpretar o XML, transformar o mesmo em um objeto nativo de sua linguagem, para então executar o processamento, transformar novamente em XML e devolver a resposta.

REST

Prós:
É veloz, pois a comunicação é realizada diretamente através de um método POST ou GET do HTTP.
É capaz de enviar e receber respostas através de JSON, Texto além do XML.

Contras:
Não mantém estado, tornando cada requisição única.
Não permite a utilização de tipos compostos, apenas primitivos.

Espero que este post tenha servido para apresentar um pouco sobre este assunto tão abrangente. Abraços e até a próxima ;)