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:
- O que é a SOA e como funciona?
- Como é organizada a arquitetura da SOA?
- Quais são os tipos de serviço em SOA?
- Conheça alguns conceitos e protocolos da SOA
- Quais são os princípios de design de serviços?
- Entenda como funciona a segurança em SOA
- Quais as principais características da Arquitetura Orientada a Serviços?
- Quais os benefícios de usar a SOA?
- Quais as desvantagens da SOA?
- Quais as diferenças entre SOA e microsserviços?
- 10 boas práticas para implementar SOA
- Qual a relação entre a SOA e a IBM Cloud?
- Outros exemplos
Tire 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.
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.
Quais são os tipos de serviço em SOA
O SOA apresenta alguns tipos de serviços que podem ser classificados como:
- Task Services: serviços com um limite funcional diretamente associados a uma tarefa ou processo operacional “pai”. Bastante utilizados na automação de processos operacionais, costumam utilizar mais dois tipos de serviços, o Utility Services e o Entity Services, para entregar os resultados esperados, que vão depender dos requisitos de negócio específicos da empresa.
- Entity Service: serviço refinado que cuida de uma única entidade de dados, normalmente expondo métodos CRUD simples. Trata-se de toda a implementação do CRUD, ou seja, as responsabilidades da inserção, exclusão, modificação e a busca de informações. Entity Services são o resultado final de uma tendência que viu os serviços ficarem menores à medida que os comandos são interpretados de forma mais literal.
- Utility Service: são funcionalidades que por sua vez não estão diretamente ligadas ao negócio, por exemplo o envio de emails e a visualização de logs. Também são conhecidos como serviços de aplicativos, infraestrutura ou tecnologia.
- Orchestrated Tack Services: é um serviço que tem como objetivo incorporar e controlar toda a lógica que compõe um determinado serviço de negócio, no qual envolve todos os outros serviços citados acima. Ou seja, uma arquitetura hierárquica que serve para coordenar e gerenciar sistemas.
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:
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.
Quais são os princípios de design de serviços?
Como já sabemos que o SOA pode se estender por diversas áreas dentro de uma empresa, que devem ser analisadas com bastante cautela para o retorno ser o mais favorável possível para o negócio. Por isso, entender a base de como funciona o design de serviço é essencial para que a implementação dessas soluções orientadas a serviços seja mais eficiente.
Os princípios de design de serviços são:
- Apresentar autonomia
- Permitir reutilização de serviços
- Contrato de serviço padronizado
- Boa abstração de serviço
- Granularidade
- Composição
- Visibilidade
Vamos ver mais detalhes sobre cada um desses princípios, a seguir.
Apresentar autonomia
A autonomia na construção do SOA pode fazer toda a diferença, pois traz a ideia de oferecer os serviços a partir de uma noção de independência entre eles. Ou seja, que os serviços possam operar com uma menor dependência de recursos. Por isso, a autonomia é algo muito desejável e que faz sentido para os negócios.
Permitir reutilização de serviços
Antes da implementação de um novo serviço, é importante considerar reutilizar um serviço já implementado, por exemplo através de Web Services. Assim, evitamos desperdícios e agregamos mais valor para o negócio.
Contrato de serviço padronizado
Criar um contrato de serviço padronizado é essencial para a criação do SOA, pois através dele é possível registrar todos os serviços. Outro ponto é que a padronização permite sua reutilização posteriormente.
Boa abstração de serviço
Ao utilizar uma aplicação, é comum tentarmos entender toda a estrutura dela e como ela é desenvolvida. Porém ao consumir uma API, por exemplo, não há necessidade de detalhar como ela é desenvolvida para que ela funcione de acordo com o seu propósito. Sendo assim, nos interessam apenas as funcionalidades que ela oferece. Esse é um princípio fundamental do design de serviços.
Granularidade
Geralmente, essa característica é designada à quantidade de funcionalidades encapsuladas que o software fornece por um único serviço. Elas podem ser classificadas entre granularidade fina e grossa. A granularidade fina é aquela que apresenta uma maior chance de reutilização do serviço. Já a granularidade grossa é o oposto, apresenta uma menor possibilidade de utilização do serviço.
Composição
Bastante relacionada com a questão de reutilização, a capacidade de composição tem como objetivo verificar os serviços já existentes para a formação de um novo. Serviços que são desenvolvidos dessa forma podem apresentar algumas dificuldades, por exemplo a autonomia e alguns conflitos ao realizar novas implementações.
Visibilidade
A visibilidade está relacionada a outras aplicações descobrirem o serviço e conseguir entender toda a estrutura que ele fornece.
O que é a governança descentralizada?
Quando falamos em governança descentralizada, o primeiro assunto que vem em mente é o famoso Blockchain, pois, por sua vez, ele é considerado um sistema de governança descentralizado.
Precisamos lembrar que a governança descentralizada se baseia em quatro pilares, sendo eles:
- O gerenciamento através de uma comunidade.
- A liderança que pode atrair os participantes de uma rede.
- As regras que são gravadas no protocolo do software.
- As regras de regulamentação externa.
O que é o gerenciamento descentralizado de dados?
É bastante comum dentro de uma empresa termos diversas atividades a serem executadas, que podem até mesmo causar sobrecarga nos funcionários. Nesse sentido, a descentralização de dados pode ser algo positivo para algumas empresas, mas infelizmente, para outras, nem tanto.
O gerenciamento descentralizado de dados é aquele em que as tomadas de decisões são distribuídas para a equipe operacional, de modo que o processo não fica mais centralizado na figura de uma única pessoa, como um supervisor de área. Dessa maneira, a alta administração fica responsável e mais concentrada em assuntos mais ligados à estratégia de negócio.
Porém para que a empresa utilize dados descentralizados é importante que toda a equipe esteja alinhada, pois na maioria das vezes os dados, assim que chegam para a equipe, precisam ser avaliados. Normalmente, a quantidade de pessoas que ficam responsáveis pela validação dos dados não é muito grande e um sistema para isso pode acabar fazendo toda a diferença.
Alguns pontos negativos encontrado no gerenciamento de dados descentralizados são:
- Queda na produtividade e lucros.
- Risco de perda de dados importantes.
- Perda de controle na equipe.
- Falta de segurança.
Para que nada disso aconteça, é de grande importância o alinhamento do time em relação ao gerenciamento de dados.
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 desvantagens da SOA?
Assim como todos os desenvolvimentos de projetos de software, a Arquitetura Orientada a Serviço também apresenta suas desvantagens:
- Sua disponibilidade de serviço pode acabar sendo prejudicada como uma queda de energia ou até mesmo no servidor ou na rede. Caso ocorra algum desses fatores, todos os os serviços acabaram ficando indisponíveis.
- É mais complexa, já que existe uma grande quantidade de serviços e todos eles precisam ser gerenciados.
- Sua performance pode ser prejudicada, pois isso depende de onde o serviço se encontra hospedado.
- A implantação de novos serviços precisa ser feita com bastante cautela, visto que um erro pode acabar prejudicando os demais serviços.
- Com os serviços sendo disponibilizados na rede, a segurança acaba se tornando um ponto bastante crítico, já que qualquer um pode consumir o serviço.
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:
- Seguir os seus princípios da forma correta, como reutilização de serviços, baixo acoplamento, etc;
- Facilidade na nomenclatura do código, pois isso facilita para que outros desenvolvedores e desenvolvedoras possam entender o que foi feito anteriormente;
- Utilizar os padrões que estão sendo utilizados no mercado, atualmente. São eles: SOAP, WS-BPEL, WSDL, UDDI.
- Utilização do ESB para comunicação entre os sistemas;
- 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;
- 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;
- 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;
- 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;
- 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.
- 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.
Conclusão
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.
Podemos dizer que um dos maiores desafios encontrado no processo SOA não é a dificuldade em utilizar a tecnologia por exemplo, e sim nas pessoas que lideram todo o processo, pois para que essa mudança seja bem sucedida é de grande importância realizar alterações dentro das próprias organizações.
Apesar disso, as abordagens relacionadas a SOA e a microserviços estão cada vez mais em alta. Sendo assim, utilizar soluções como essa pode ser de grande valor na sua carreira, além de se tornar um grande diferencial dentro da empresa.
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!