O que é o SOA, e o que precisa ser analisado ao implementá-lo :
1. O que é SOA :
No Post de hoje vamos falar um pouco sobre o SOA (Service-Oriented Architecture) , ou Arquitetura Orientada a Serviços O (SOA), quais suas vantagens e desvantagens e o que precisa ser visto quando for implementar esse conceito em uma empresa. Antes de tudo precisamos entender que o SOA é um estilo de arquitetura de software que tem como cerne a disponibilização de aplicações na forma de serviços para o alinhamento das áreas de negócio e TI.
Ele permite a criação de serviços de negócio que podem ser reutilizados e compartilhados entre aplicações e empresas. Ou seja, o SOA permite que programas desenvolvidos por empresas diferentes, usando linguagens de programação distintas possam se integrar em um mesmo produto pelos mesmos protocolos de comunicação.
Ou seja, são serviços reutilizáveis e que compartilham um “contrato formal” onde os dados são enviados de forma independente, esses serviços compartilham um baixo acoplamento, são autônomos e evitam informações de estados, além de serem capazes de se compor. Por exemplo, os principais sites da Internet criaram e ainda estão criando formas de interação entre estes sites e o seu blog ou sua página na rede social. Estas interações e trocas de informação serão aprofundadas ainda mais e disponibilizadas através de serviços, facilitando a troca de informações entre duas entidades diferentes.
O conceito de SOA surgiu em 1996, no artigo “Service Oriented Architectures” (abril de 1996), escrito pelos pesquisadores Roy Schulte e Yefim Natis do Gartner Group.
“SOA é uma filosofia de TI que visa facilitar a integração entre sistemas, orientando a criação e a disponibilização de soluções modulares e fracamente acopladas baseadas no conceito de serviços”
2.Características gerais do SOA :
Em resumo as características do SOA são :
a) Serviços são independentes e modulares;
b) Serviços enfatizam interoperabilidade;
c) Serviços podem ser compostos;
d) Passível de dinamismo e adaptabilidade;
e) Passível de coordenação.
A arquitetura SOA permite automatizar o gerenciamento de processos de negócios. Processos de negócios podem consumir e instrumentar esses serviços para alcançar a funcionalidade desejada.
3.Vantagens do SOA:
- Reutilização: O serviço pode ser reutilizado para outras aplicações.
- Produtividade: Com o reuso, a equipe de desenvolvimento pode reutilizar serviços em outros projetos, diminuindo o tempo de desenvolvimento.
- Flexibilidade: Isolando a estrutura de um serviço as mudanças são feitas com maior facilidade.
- Manutenibilidade: Com baixo acoplamento, facilita a manutenção dos serviços.
- Alinhamento com o negócio: A área de negócio visualiza os processos alinhados com a tecnologia.
- Interoperabilidade: Disponibilizar serviços independentemente da plataforma e tecnologia.
- Integração: A integração com outros serviços, aplicativos e sistemas legados.
- Governança: Gerenciamento nos processamentos de negócio.
- Padronizado: É baseado no uso de padrões.
- Abstração: Serviço totalmente abstraído da sua implementação.
4.Desvantagens do SOA :
- Complexidade: Uma grande quantidade de serviços precisa ser gerenciada.
- Performance: A performance depende do servidor onde o serviço está publicado, como também da rede.
- Robustez: Caso uma exceção acontecer não tem como reverter o processo.
- Disponibilidade: Uma queda na rede ou no servidor deixa todos os serviços indisponíveis.
- Segurança: Os serviços estão disponíveis na rede, qualquer aplicativo pode consumir esse serviço, os dados são trafegados pela rede podendo ser interceptados.
5.Requisitos para implementação do SOA:
Para implementação do SOA primeiramente é necessário um mapeamento de todos os processos de negócio de uma empresa, onde as várias áreas de desenvolvimento sejam desenhadas para atuar como módulos independentes.
Para uma implementação bem sucedida do SOA é necessário que todos os processos, que foram transformados em módulos possam se integrar uns com os outros.
Arquiteturas podem operar de forma independente de tecnologias específicas e, portanto, pode ser implementado usando uma ampla gama de tecnologias, incluindo:
- Serviços Web baseados em WSDL e SABÃO
- Messaging
- HTTP RESTful, com Representational State Transfer estilo arquitetônico (REST)
- WCF (implementação da Microsoft de serviços Web, que faz parte da WCF)
- Apache Thrift
- Sorcer
Implementações podem utilizar um ou mais destes protocolos e, por exemplo, pode utilizar um mecanismo de sistema de ficheiros para comunicar dados a seguir uma especificação de interface definida entre os processos em conformidade com o conceito SOA. A chave é o de serviços independentes, com interfaces definidas que podem ser chamados para executar suas tarefas de uma forma padrão, sem um serviço de ter conhecimento prévio do aplicativo de chamada, e sem a aplicação de ter ou que necessitem de conhecimento de como o serviço realmente executa suas tarefas. SOA permite o desenvolvimento de aplicativos que são criados pela combinação de baixo acoplamento e interoperáveis serviços.
6. Processo de elaboração do SOA:
Braga define um processo sistemático de projeto arquitetural de software dirigido a modelo e orientado a serviços, objetivando projetar arquiteturas estáveis, flexíveis e modulares e resolver problemas comuns encontrados em projeto de softwares.
Por causa disso existem três atividades principais para a elaboração de um SOA:
Especificar Modelo de Negócio, Analisar Serviços e Projetar Serviços.
Essas atividades abrangem os processos mais básicos para inicialização de um projeto, como ver a necessidade do cliente até definição de arquiteturas e implementação.
É possível ver o passo a passo desse processo aqui.
7. Onde o SOA é encontrado:
O SOA é encontrado, geralmente, em empresas de médio e grande porte, atualmente existem empresas que se especializam em um desenvolvimento específico de um serviço e outras empresas podem usá-lo. Num e-commerce, por exemplo, a empresa está focada na venda de um produto e utiliza um módulo de pagamento de outra empresa especializada naquilo. Esses módulos são serviços integrados a arquitetura de desenvolvimento da empresa de e-commerce para realizar a função de pagamentos.
8. É importante saber (lembrar):
- SOA não é uma tecnologia.
- SOA não é uma metodologia. Há várias metodologias (processos, ferramentas, métodos de trabalho) que podem ser usados para implantar SOA com sucesso. SOA não é e nem define alguma metodologia.
- SOA pode ser considerada uma filosofia arquitetural. SOA é uma linha de pensamento que permeia a implementação de necessidades de negócio, refletida em diretrizes, políticas e metodologias corporativas, não necessariamente restritas à área de TI.
- SOA não é algo que se possa comprar ou instalar.
- SOA não é um webservice.
- SOA não cria nada. Ela apenas sugere, propõe, define.
- SOA baseia-se no conceito do uso de serviços atômicos, independentes e com baixo acoplamento.
Referências :