Embora seja um termo de grande destaque no mercado de TI, a Arquitetura Orientada a Serviços — ou simplesmente SOA — ainda gera algumas dúvidas para quem está iniciando os estudos na área de programação.

Realmente, a SOA é uma abordagem arquitetural complexa, mas que tem o objetivo de trazer agilidade, flexibilidade e redução de custos para as empresas que aplicam esse conceito em seus sistemas.

No entanto, para descobrir como ela consegue fazer isso, é preciso compreender suas características básicas e seu funcionamento. Para ajudar nessa questão, elaboramos este conteúdo. Nele, você aprenderá sobre:

Sane suas dúvidas no post e tenha uma boa leitura!

O que é a SOA e como funciona?

A sigla SOA refere-se a um conceito conhecido como Service-Oriented Architecture, ou, em português, Arquitetura Orientada a Serviços. Antes de entender do que se trata, é importante saber que, apesar de ser um engano comum, SOA não é uma tecnologia, framework ou metodologia, por exemplo. 

Na verdade, podemos dizer que a SOA é um conceito arquitetural que visa facilitar a integração entre aplicações. Para isso, as funcionalidades do sistema são disponibilizadas em forma de serviço, o que favorece a sua reutilização e compartilhamento.

Normalmente, esses serviços são acessados via webservices e a integração é feita com o auxílio do Enterprise Service Bus (ESB) — um dos componentes mais importantes da SOA. O ESB é um barramento de serviços corporativos que simplifica os processos de integração entre aplicações, facilitando a disponibilização de serviços para diferentes sistemas, processos e até outros serviços.

Dito isso, é possível perceber que um dos grandes objetivos da SOA é atender melhor às necessidades do mercado, garantindo mais flexibilidade a mudanças e permitindo que as empresas possam alterar e agregar novas funções com mais agilidade.

Antes de prosseguir, aproveite e faça o download do Guia Hacker. Aprenda a automatizar tarefas, criar atalhos, melhorar sua segurança online e a descobrir como evitar spam no seu email.

banner para download de ebook sobre hacker imagem como botão escrito "baixar"

Como é organizada a arquitetura da SOA?

Nos tópicos abaixo, serão explicadas algumas partes da arquitetura SOA, presente em seu modelo empresarial:

Camada de interface do consumidor

Como o próprio nome sugere, essa camada se refere aos aplicativos baseados em interface gráfica do usuário, para que usuários e usuárias finais acessem os aplicativos. São as interações que ocorrerão com botões, links, etc. 

Camada de Processos

Nessa camada, encontram-se os casos de uso de negócios em termos de aplicação.

Camada de Serviços

Aqui, encontra-se a parte de catálogo dos serviços em toda a empresa. Ou seja, quais serviços a empresa possuirá. 

Camada de componente de serviço

Essa camada é utilizada para construção de serviços, como bibliotecas funcionais e técnicas.

Camada de sistemas operacionais

Nessa camada, contém o modelo de dados que cada empresa possui.

Conheça alguns conceitos e protocolos da SOA

Nos tópicos abaixo, verificaremos alguns conceitos que fazem parte do SOA e, que ajudarão você a entender melhor como funciona esse conceito. Vamos lá!

O que é XML

Em Inglês, XML significa eXtensible Markup Language, ou seja, ela é uma linguagem de marcação que define algumas condições para fazer a codificação de documentos que possuam uma hierarquia em seu conteúdo. Um arquivo de exemplo seriam as notas fiscais (NFe).

O XML possui portabilidade como um dos seus princípios, pois, uma base de dados pode gerar um arquivo XML e, outra base de dados pode ler o arquivo gerado. Em outras palavras, um arquivo gerado de um banco de dados pode ser lido por outra base completamente diferente.
Na foto abaixo, vemos um exemplo de arquivo XML:

Exemplo XML SOA

Entenda o Web Service


O Web Service é usado para fazer a transferência de dados dos protocolos utilizados para comunicação para plataformas distintas, mesmo elas não estando nas mesmas linguagens de programação. Ao fazer uma comunicação entre plataformas que utilizam Java e PHP, por exemplo, ela será feita sem problemas.


Além disso, o Web Service possibilita também a reutilização dos sistemas já presentes em uma empresa e, ainda, adicionar novos recursos a ele, sem precisar construir do zero uma nova aplicação. Ou seja, é totalmente possível adicionar novas funcionalidades de forma simples e rápida a sistemas já existentes.

O funcionamento dele é feito da seguinte forma: 

  • O Web Service faz o processamento e o envio das informações para a aplicação que fez a requisição da operação;
  • Essa aplicação vai receber os dados e interpretá-los;
  • Depois disso, transformará os dados para a linguagem que está sendo utilizada em sua plataforma. 

Ainda está um pouco confusa essa história de comunicação com linguagens distintas? Tudo bem, vamos lá! Existem os protocolos SOAP e REST, que fazem o intermédio da comunicação entre as aplicações. 

  • SOAP: Utiliza o XML para o envio de mensagens e faz o uso do protocolo HTTP para realizar a transferência das informações. Por conseguinte está o documento WSDL, que está relacionado ao protocolo e, nesse documento, está descrita as operações e a localização do Web Service; 
  • REST: Se for comparado com o SOAP, o REST é mais atual e mais utilizado. Também utiliza o protocolo HTTP como base e pode utilizar muitas formas para representar as informações (JSON, RSS). Dessa forma, ele não restringe os formatos de representação de dados, tendo como um princípio ser muito flexível.

O que é a arquitetura de software?


A arquitetura de software seria, em outras palavras, como o sistema será arquitetado e de que forma ele será construído. Como, por exemplo, a escolha da linguagem que será utilizada, qual estrutura de dados é mais adequada, qual o melhor banco de dados que resolverá o problema que quero solucionar, etc.
Assim, o conceito de arquitetura de software será como você organizará a aplicação que você fará. Essas escolhas terão que ser feitas com calma, pois, dependendo de como o sistema for organizado, ele poderá ser de difícil compreensão para outros desenvolvedores ou desenvolvedoras, o que não é nada recomendado.

Algumas responsabilidades que um arquiteto de software possui no processo de desenvolvimento de uma aplicação: 

  • Realizar a priorização de casos de uso;
  • Realizar análise da arquitetura que o projeto terá;
  • Estruturação do modelo que será implementado;
  • Identificação de mecanismos e elementos de design;
  • Definir qual padrão de projeto será utilizado.

No próximo tópico, será explicado um conceito de arquitetura envolvendo serviços similares a barramentos, que é o ESB. 

 ESB: o que é?


Em Inglês, ESB significa Enterprise Service Bus. Traduzindo, seria um Barramento de Serviços Corporativos. Um ESB é um conceito pelo que uma parte centralizada em um sistema realiza a integração à lógica da aplicação, ou seja, ao back-end. Depois disso, ele torna essas integrações disponíveis como interfaces de serviço. 


No caso, o ESB também realiza a interpretação de dados e de diversas solicitações que possam ser realizadas e coloca todos esses casos em somente uma interface de serviços. Assim, essa interface ficará disponível para reuso em outras aplicações, se for necessária.


ESB, quando falamos em SOA, é um dos principais conceitos, pois não existe uma implantação de SOA sem a utilização de ESB. Pode até existir, mas os responsáveis precisariam achar uma forma de contornar isso, o que seria trabalhoso.
Desse modo, o ESB é um software que deixa os serviços relacionados a negócios reutilizáveis e disponíveis para que estejam disponíveis para utilização em outros lugares.
Algumas outras características relacionadas ao ESB: 

  • Realiza o mapeamento das mensagens;
  • Distribui os eventos relacionados à negócio;
  • Faz a invocação dos serviços. 

Entenda como funciona a segurança em SOA


No caso do SOA, há um princípio chamado WS-Security, que seria um modelo para auxiliar a SOA a ter segurança quando houver troca de dados entre os sistemas.

Esse modelo fornece uma segurança alta para as operações, tanto em confidencialidade, como em casos de autenticação (como em uma tentativa de login, por exemplo).


Contudo, o WS-Security não faz tudo sozinho. Ele precisa de dois auxiliares, para auxiliar na segurança do SOA. São eles: 

  • WS-Policy;
  • WS-SecurityPolicy.

Esses conceitos acima mostrados são especificações que determinam as políticas gerais sobre a segurança e a confiabilidade das informações. Além disso, também determinam qual a política de segurança será aplicada a um serviço qualquer em sua aplicação.
Como toda aplicação requer um nível de segurança alto, com o SOA não é diferente. A segurança da informação tem como função proteger informações sigilosas de clientes da empresa, de forma que não sejam vazadas. 

Quais as principais características da Arquitetura Orientada a Serviços?

Há uma série de características que especificam a Arquitetura Orientada a Serviços. Logo abaixo, explicamos brevemente alguns de seus principais aspectos. Veja!

Baixo acoplamento

O baixo acoplamento é uma das características mais marcantes da SOA. De acordo com esse princípio, os serviços fornecidos devem ser projetados de uma forma que garanta o maior nível possível de independência entre as partes do sistema. Isso traz mais flexibilidade e manutenibilidade para a aplicação, pois os impactos que poderiam ser causados por falhas ou futuras modificações são minimizados.

Reutilização de serviços

O incentivo à reutilização é outro aspecto fundamental da Arquitetura Orientada a Serviços. Esse conceito garante que um serviço possa ser reutilizado por diferentes aplicações e processos. Dessa forma, economiza-se tempo e recursos, visto que não há a necessidade de implementar novamente uma funcionalidade que já existe.

Abstração de serviços

A abstração de serviços também é trabalhada na SOA. Isso significa que toda a lógica por trás do funcionamento de um serviço é encapsulada e ocultada do mundo externo. Assim, as aplicações que consomem os serviços são informadas apenas do que eles fazem e não de como executam suas funcionalidades.

Baseado em padrões

Os serviços de uma solução implementada com o uso de SOA normalmente são baseados em padrões conhecidos no mercado. Ou seja, eles devem ser construídos, descritos e consumidos por meio de padrões, como o protocolo de comunicação SOAP (Simple Object Access Protocol) e o WSDL (Web Services Definition Language).

Composição de serviços

A composição de serviços é uma característica que também favorece o reuso de componentes do sistema. Isso porque os serviços são construídos para fragmentar problemas grandes, transformando-os em menores que podem ser resolvidos por funcionalidades específicas. Dessa forma, um conjunto de serviços pode ser coordenado e configurado para formar um novo serviço composto e mais completo.

Serviços sem estado

Os serviços de um sistema baseado em SOA devem ser sem estado. Em outras palavras, é preciso minimizar a retenção de informações de uma atividade específica. Nesse sentido, cada requisição é vista como uma transação independente e para cada solicitação há uma resposta que não considera requisições anteriores.

Interoperabilidade

Seguindo o princípio da interoperabilidade, com o uso da SOA, os serviços podem ser disponibilizados para diferentes sistemas, independentemente da plataforma e tecnologia utilizadas. Para que haja essa integração, é necessário que a aplicação atenda aos requisitos de interface e utilize protocolos de comunicação.

Quais os benefícios de usar a SOA?

Como foi dito, SOA é um conceito arquitetural que, além de facilitar a integração entre aplicações, garante um melhor alinhamento com as necessidades do negócio, permitindo mudanças rápidas sem grandes impactos. 

Fora isso, ainda podemos citar vários outros benefícios que a SOA traz, como:

  • produtividade: visto que SOA trabalha com o princípio de reuso de componentes, o tempo de desenvolvimento da equipe é menor, pois não é preciso reescrever códigos de funções que já existem;
  • manutenibilidade: como a SOA garante o baixo acoplamento, é mais fácil realizar a manutenção dos componentes sem gerar impactos em outras partes do sistema;
  • menor custo: uma vez que a manutenção é mais fácil, os custos com esse tipo de operação também são reduzidos;
  • mais qualidade: há mais garantia de homogeneidade entre os processos;
  • autonomia de serviços: em SOA, cada serviço fornece uma função de negócio específica, o que traz mais independência para os módulos do sistema;
  • flexibilidade: o isolamento das estruturas de um serviço garante que mudanças na infraestrutura ou nas regras de negócio possam ser feitas com mais facilidade;
  • mais agregação: devido à facilidade de integração, novas tecnologias ou plataformas podem ser agregadas sem grandes complicações.

Agora você já sabe o que é a SOA e quais são as características mais importantes dessa filosofia arquitetural. Porém, vale lembrar que cada aplicação é única e possui necessidades específicas. Por isso, o uso de uma arquitetura deve sempre respeitar as especificidades do sistema e a escolha precisa ser pautada em uma análise profunda acerca de tais requisitos. 

Quais as diferenças entre SOA e microsserviços?

A diferença é que o SOA e os microsserviços são como eles definem a forma com que os aplicativos conversam entre si. 

No caso do SOA, ele permite que os aplicativos estejam dispostos em interfaces pouco acopladas, permitindo o reuso de uma função de negócios para outros aplicativos.


Já no caso dos microsserviços, os núcleos de um aplicativo são separados em partes pequenas que podem ser editadas e funcionar de maneira autônoma. Além disso, ele não define como é feita a conversa entre os aplicativos, o que seria a diferença entre os conceitos.

Microsserviços, portanto, seria um escopo que a aplicação utilizaria. Já o SOA seria um conceito empresarial que as empresas podem utilizar ou não.   

10 boas práticas para implementar SOA


Abaixo, são exibidas algumas boas práticas, com a utilização do SOA:

  1. Seguir os seus princípios da forma correta, como reutilização de serviços, baixo acoplamento, etc;
  2. Facilidade na nomenclatura do código, pois isso facilita para que outros desenvolvedores e desenvolvedoras possam entender o que foi feito anteriormente;
  3. Utilizar os padrões que estão sendo utilizados no mercado, atualmente. São eles: SOAP, WS-BPEL, WSDL, UDDI.
  4. Utilização do ESB para comunicação entre os sistemas;
  5. Inserção de nomes de negócios nos serviços para que seja de fácil entendimento a quem não entende o que ocorre internamente;
  6. Não colocar transações e estorno de dados nos serviços. Além disso, eles não precisam se preocupar com dados vindos de outros serviços; 
  7. Cuidado ao tornar qualquer item do projeto um serviço, uma vez que essa análise deverá ser feita com calma, para não haver sobrecarga desnecessária;
  8. Cuidado, também, com o conteúdo das mensagens SOAP. Pois, como o formato utilizado por elas é o XML, problemas podem ocorrer se houver grandes informações enviadas;
  9. Divisão de responsabilidades nos serviços. Não há necessidade de colocar todas as informações em um único serviço. Veja qual área será melhor para trazer lucro ao negócio. 
  10. Auxílio de uma consultoria para a implantação do SOA, pois dúvidas poderão surgir e uma implementação feita por uma única pessoa é inviável.

Seguindo essas boas práticas acima exibidas, de forma correta, a sua implementação do SOA ocorrerá sem sustos e imprevistos. 

Qual a relação entre a SOA e a IBM Cloud?

Nos dias de hoje, grande parte das aplicações estão migrando para a nuvem, por questões de segurança. A empresa IBM é uma das pioneiras do SOA, e ela oferece planos para que sua empresa possa adquirir serviços de SOA na nuvem.
Sem isso, poderá haver uma sobrecarga de informações e aplicações lentas. Com o uso da nuvem, as aplicações tendem a ficar mais leves e flexíveis.

Outros exemplos

Uma empresa americana chamada Delaware Electric fez uma integração utilizando o SOA, pois, nessa empresa, os sistemas não estavam conversando entre si. Com a implementação do SOA, a empresa teve resultados significativos que ajudaram a organização a se manter no mercado. 

Muito interessante esse conceito de SOA, não acha? Ele tem como principais benefícios a reutilização de serviços para outras aplicações, auxiliando na produtividade dos desenvolvedores e desenvolvedoras, pois, com essa reutilização, o tempo de desenvolvimento será menor. 


Além disso, como um dos pilares do SOA é ter baixo acoplamento de serviços, a manutenção de aplicações que utilizam esse pilar se torna muito mais simples, o que deixa também a aplicação mais flexível, facilitando nas mudanças. 

Este conteúdo foi útil para você? Então, aproveite a visita e entenda o que são microsserviços e quais as vantagens de usar essa arquitetura!

Deixe um comentário
Você também pode gostar