Arquitetura orientada a serviços (SOA)

Copiar URL

A sigla SOA vem do inglês e significa "Services Oriented Arquitecture", ou arquitetura orientada a serviços. SOA é um tipo de design de software que torna os componentes reutilizáveis usando interfaces de serviços com uma linguagem de comunicação comum em uma rede.

Um serviço é uma unidade ou conjunto de funcionalidades de software independente, desenvolvido para concluir uma tarefa específica, como recuperar determinadas informações ou executar uma operação. Ele contém as integrações de dados e o código necessários para executar uma função de negócios completa. Esses serviços podem ser acessados remotamente e é possível interagir com eles e atualizá-los de maneira independente.

Em outras palavras, a arquitetura orientada a serviços integra os componentes de software implantados e mantidos separadamente, permitindo que eles se comuniquem e trabalhem juntos para formar aplicações que funcionam em sistemas diferentes.

 

Antes do surgimento da SOA, no final da década de 1990, a conexão de uma aplicação a serviços em outro sistema era um processo complexo que envolvia integração point-to-point (P2P) - conectividade, roteamento, modelos de tradução de dados etc. Em cada projeto novo, os desenvolvedores precisavam recriar essa integração. Esse modelo era conhecido como "monolítico" porque o código da aplicação inteira era incorporado a uma implantação. Se apenas um aspecto da aplicação não funcionasse corretamente, seria necessário colocar tudo offline temporariamente para fazer as devidas correções e depois implantar a aplicação de novo como uma nova versão.

Ao expor serviços usando protocolos de rede padrão, como SOAP, JSON, ActiveMQ ou Apache Thrift, para enviar solicitações ou acessar dados, a SOA facilita a vida dos desenvolvedores, pois eles não precisam fazer a integração do zero. Em vez disso, eles podem usar padrões chamados enterprise service buses (ESBs), que realizam a integração entre um componente central e sistemas de back-end e depois os tornam acessíveis como interfaces de serviços. Isso também ajuda os desenvolvedores a reutilizar funções existentes, em vez de recriá-las.

No estilo de arquitetura orientada a serviços, a comunicação entre os serviços é realizada por um sistema de "baixo acoplamento". Essa é uma maneira de interconectar componentes, também chamados de "elementos", em um sistema ou rede para transmitirem informações ou coordenarem processos empresariais e reduzirem as dependências entre eles. Efetivamente, isso cria uma aplicação nova.

Crie uma infraestrutura ágil e viabilize uma organização adaptativa

Recursos da Red Hat

  • Time to market acelerado e mais flexibilidade: a reutilização de serviços faz com que seja mais fácil e rápido montar aplicações. Os desenvolvedores não precisam sempre começar do zero, como nas aplicações monolíticas.
  • Uso de infraestrutura legada em novos mercados: com uma arquitetura orientada a serviços, é mais fácil para os desenvolvedores escalar ou ampliar o uso de uma funcionalidade para plataformas, ou ambientes novos.
  • Redução de custos devido à agilidade e eficiência no desenvolvimento.
  • Manutenção facilitada: como todos os serviços são autossuficientes e independentes, é possível modificá-los e atualizá-los conforme a necessidade, sem afetar os outros serviços.
  • Escalabilidade: como a arquitetura orientada a serviços permite executar serviços usando vários serviços, plataformas e linguagens de programação diferentes, há uma grande melhoria na escalabilidade. Além disso, a SOA usa um protocolo de comunicação padronizado, permitindo às empresas reduzir a interação entre clientes e serviços. Com a redução no nível de interação, é possível escalar aplicações com menos urgência e aborrecimentos.
  • Maior confiabilidade: por ser mais fácil fazer o debug de serviços menores do que um grande código, a arquitetura orientada a serviços permite criar aplicações mais confiáveis.
  • Maior disponibilidade: os recursos da SOA estão disponíveis para todos.
 

A base de uma arquitetura orientada a serviço é constituída de três funções principais.

  1. Provedor de serviços

    Um provedor de serviços cria serviços web e os oferece para um registro de serviços. Ele é responsável pelos termos de uso desse serviço.

  2. Broker ou registro de serviços

    Um broker de serviços ou registro de serviços é responsável por oferecer informações solicitadas sobre o serviço. O broker pode ser público ou privado.

  3. Solicitante ou cliente de serviços

    Um solicitante de serviços encontra um serviço no broker ou no registro de serviços. Então, conecta-se ao provedor de serviços para recebê-lo.

O conceito de serviços introduzido pela SOA agora é um aspecto central da cloud computing e da virtualização modernas, sendo aplicado a elementos como o middleware e microsserviços.

Devido às similaridades entre ambos, muitas vezes as pessoas acham que arquitetura orientada a serviços e arquitetura de microsserviços são a mesma coisa. A principal característica que os diferencia é o escopo: SOA é uma abordagem de arquitetura adotada pela empresa na totalidade, enquanto microsserviços são uma estratégia de implementação da equipe de desenvolvimento para cada aplicação.

A comunicação entre os componentes também é diferente. A arquitetura orientada a serviços usa ESB (Enterprise Service Bus), enquanto microsserviços comunicam-se entre si de maneira stateless, por meio de APIs independentes de linguagem. Devido a esse aspecto das APIs nos microsserviços, as equipes de desenvolvimento também podem escolher as ferramentas com que preferem trabalhar. Assim, os microsserviços são mais tolerantes e flexíveis.

Às vezes, a arquitetura orientada a serviços também é confundida com software como serviço. SaaS é uma forma de cloud computing que fornece aos usuários uma aplicação em nuvem com a infraestrutura de TI e plataformas subjacentes a ela. Serviços web na SOA podem ser oferecidos por provedores como aplicações SaaS. Geralmente, um provedor de serviços de nuvem, como a AWS, o Azure ou o IBM Cloud, gerencia o ambiente de nuvem que hospeda a aplicação SaaS.

Os usuários interagem com o software por meio de um navegador da web no computador ou em dispositivos mobile. Eles também podem usar APIs, como REST ou SOAP, para conectar o software a outras funções.

Aprenda mais sobre microsserviços

Graças aos avanços na tecnologia de containers, os microsserviços se tornaram a base das aplicações nativas em nuvem (microsserviços com baixo acoplamento implantados em containers Linux e conectados usando APIs ou uma rede em malha para roteamento de mensagens).

Cada elemento implementa uma funcionalidade empresarial, desenvolvida de forma independente por equipes de DevOps pequenas que usam fluxos de trabalho como integração e implantação contínuas (CI/CD). Isso significa desenvolvimento acelerado de software, implantação automática e atualizações regulares sem as restrições dos ciclos de desenvolvimento monolíticos.

Com um portfólio de soluções open source, que inclui o Red Hat®Enterprise Linux® e o Red OpenShift, a Red Hat forma parcerias com empresas que desejam migrar a infraestrutura e o desenvolvimento de suas aplicações para o ambiente adaptável da cloud computing e aproveitar ao máximo os investimentos em TI já realizados.

 

Por que escolher a Red Hat para adoção de microsserviços?

Hub

Blog da Red Hat

Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.

Teste as soluções da Red Hat

Você sabia que a Red Hat oferece versões de teste gratuitas de suas soluções? Aproveite e obtenha experiência prática, prepare-se para uma certificação da Red Hat ou avalie na prática se a solução é adequada para ao caso de uso.

Leia mais

What is the Kubernetes Java client?

The Kubernetes Java client is a client library that enables the use of the Java programming language to interface with Kubernetes.

Kubernetes na AWS: comparação entre K8s autogerenciado e plataforma de aplicações gerenciada

Conheça as vantagens de usar o Kubernetes (K8s) na AWS e entenda as diferenças entre o Kubernetes autogerenciado e uma plataforma de aplicações gerenciada.

O que é hosted control plane?

Hosted control plane refere-se ao plano de gerenciamento desacoplado que permite o controle e gerenciamento consolidados dos principais componentes do plano de controle.

Containers: leitura recomendada

Artigos relacionados