Jump to section

O que é SOA (arquitetura orientada a serviços)?

Copiar URL

Red Hat User Group Community

MeetUp Red Hat User Group chega à América Latina. Encontros presenciais para conversas técnicas, trocas de experiências e compartilhamento de casos de uso em um ambiente amigável e descontraído.

A sigla SOA 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 coordenem processos empresariais e reduzam as dependências entre eles. Efetivamente, isso cria uma aplicação nova.

  • Time to market acelerado e maior 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 no caso das 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 resultante da maior agilidade e eficiência no desenvolvimento.
  • Fácil manutenção: 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.
 

Open Technology Sessions

Conheça a série de webinars da Red Hat em português feita para você descobrir como inovar. Aprenda sobre Automação, Infraestrutura, Plataforma de Aplicações, Cloud Services, Inteligência Artificial e muito mais!

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

  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.

Microsserviços e arquitetura de microsserviços são abordagens modernas para desenvolver apps em nuvem como serviços independentes usando o Kubernetes.

 

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.

Devido 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 sendo desenvolvido 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 aplicações para o ambiente adaptável da cloud computing e aproveitar ao máximo os investimentos em TI já realizados.

 

Leitura recomendada

ARTIGO

Stateful x stateless

Para determinar se algo é stateful ou stateless, basta considerar o tempo em que seu estado de interação é registrado e como essas informações precisam ser armazenadas.

ARTIGO

O que é Quarkus?

Quarkus é um stack Java nativo em Kubernetes que foi desenvolvido para máquinas virtuais Java (JVMs) e compilação nativa, otimizando essa linguagem especificamente para containers.

ARTIGO

O que é serverless?

Serverless é um modelo de desenvolvimento nativo em nuvem para criação e execução de aplicações sem o gerenciamento de servidores.

Leia mais sobre aplicações nativas em nuvem

Soluções Red Hat

Uma plataforma de aplicações para empresas que oferece serviços testados para lançar aplicações na infraestrutura de sua escolha.

 

Conteúdo adicional

E-book

Acelere o caminho para as apps nativas em nuvem

Neste ebook, você encontra oito considerações sobre a adoção de uma abordagem nativa em nuvem para o desenvolvimento e a entrega de aplicações. E descobre como as plataformas da Red Hat podem ajudar.

Caso de sucesso

Banco Galicia, da Argentina, integra novos clientes corporativos em minutos com sua plataforma de NLP inteligente.

VÍDEO - THE SOURCE TV

O futuro da nuvem: a evolução das soluções em nuvem

Aprenda mais sobre a evolução e o futuro das soluções em nuvem com os especialistas da Red Hat.

Caso de sucesso

KPMG

A KPMG melhora os resultados dos serviços estaduais ao cidadão por meio de uma moderna plataforma de integração de sistemas.

Treinamentos Red Hat

Treinamento gratuito

Developing Cloud-Native Applications with Microservices Architectures