O que é a SOA (Service-Orianced Architecture)?


A Software Orientado Architecture (SOA) é uma arquitetura de software que permite aos serviços comunicar através de uma rede, apesar de ser implementada em diferentes sistemas. Estes serviços foram concebidos para serem independentes, reutilizáveis e interoperáveis e foram concebidos por trás de uma interface de serviços para permitir uma gestão simples.

CloudDB Architecture

O objetivo da SOA é ajudar as empresas a utilizar os serviços de forma mais eficiente. Graças ao SOA, os utilizadores podem combinar, integrar e reconfigurar rapidamente os serviços, sem os silos que muitas vezes inibem o desenvolvimento das aplicações e dos softwares. Assim, as empresas podem expandir-se e entrar no mercado mais rapidamente, ao mesmo tempo que reduzem os custos e são mais capazes de responder às mudanças nas exigências.

Como funciona a arquitetura orientada para os serviços?

SOA (service oriented architecture) consiste em aplicações de software fracamente acopladas, que se dividem em componentes chamados serviços. Estes serviços executam funções empresariais ou tarefas distintas e comunicam através de uma rede, normalmente via HTTP, SOAP ou API REST.

Aqui estão os diferentes elementos do SOA:

serviços,

Os serviços são o núcleo do SOA. As aplicações de software subdividem-se em serviços que desempenham funções profissionais específicas. Cada serviço foi concebido para funcionar de forma independente e pode ser reutilizado noutras aplicações. Este conceito aumenta a agilidade e a interoperabilidade, apoiando processos empresariais mais eficientes e permitindo que novas soluções sejam criadas e integradas facilmente.

Interfaces de serviço

Como os serviços SOA funcionam de forma independente, cada serviço requer uma interface própria. Especifica a forma como outros serviços interagem com o mesmo, os parâmetros de entrada e saída para cada operação e os protocolos de comunicação necessários. A utilização de interfaces no SOA oferece visibilidade, além de simplificar a gestão e a configuração.

Comunicação do serviço

No SOA, os serviços comunicam entre si utilizando protocolos como HTTP, SOAP ou API REST. O tipo de protocolo utilizado dependerá dos requisitos da aplicação, e os protocolos podem ser configurados na interface de serviços. Esta abordagem normalizada promove a interoperabilidade entre diferentes tecnologias, permitindo que os serviços interajam e sejam acedidos e integrados numa gama de plataformas.

Service Registry

A arquitetura orientada para serviços utiliza um registo de serviços para catalogar todos os diferentes serviços disponíveis no ambiente. Esse registo contém metadados sobre cada serviço, como a sua interface, a sua localização e as suas dependências. Permite aos clientes invocar serviços em tempo de execução, assim como ajudar os utilizadores a gerir serviços a partir de uma localização central.

Acoplamento solto

Um dos conceitos chave do SOA é o acoplamento solto. Isto significa que os serviços funcionam de forma independente e não se afetam mutuamente, o que permite uma manutenção, uma resolução de problemas e atualizações mais fáceis, sem perturbar todo o sistema. O acoplamento solto no SOA é conseguido usando princípios como abstração e comunicação baseada em interfaces.

Icons/concept/Cloud/Cloud Infinity Created with Sketch.

Reutilização do serviço

Outro princípio central do SOA é a reutilização. Os serviços foram concebidos para serem modulares, permitindo a reutilização dos serviços para a criação de novas aplicações. Isto ajuda as empresas a reduzir os custos, a melhorar a eficiência, a racionalizar os processos e a reduzir o prazo de desenvolvimento.

Administração dos serviços

A arquitetura orientada para os serviços permite às empresas garantir a segurança aquando do desenvolvimento e exploração de serviços. Podem ser implementadas políticas e procedimentos que asseguram a conformidade em todo o sistema, e não apenas em áreas isoladas.

Icons/concept/Cloud/Cloud Hand Created with Sketch.

Orquestração do Serviço

No SOA, vários serviços necessitam frequentemente de trabalhar em conjunto para realizar um processo comercial. Para ativar esta orquestração de serviços, as empresas podem utilizar ferramentas de orquestração ou de automatização - como soluções Business Process Management (BPM) - para executar serviços.

Quais são as vantagens do SOA?

A arquitetura orientada para os serviços oferece múltiplas vantagens às empresas que procuram desenvolver sistemas de software complexos de forma eficiente. Veja algumas das principais vantagens:

Agilidade

Com SOA, os serviços podem ser modificados, integrados e substituídos sem que seja necessário mudar todo o sistema. Isto permite que as empresas sejam mais flexíveis e que se adaptem muito mais rapidamente às mudanças dos requisitos das empresas ou dos mercados.

Rentabilidade

A SOA promove a reutilização dos serviços, o que permite às empresas reduzir os custos e maximizar o valor da sua infraestrutura informática existente. Evita também o desperdício de esforços, ajudando as empresas a reduzir o tempo dispendido na manutenção das aplicações.

Integração simples

Os serviços concebidos de acordo com os princípios SOA foram concebidos para serem interoperáveis e podem, por isso, ser integrados mais facilmente em diferentes sistemas. Assim, as empresas podem integrar as suas soluções tradicionais nas tecnologias modernas, como a computação em cloud, e adotar uma abordagem mais coesa e simplificada.

Escalabilidade

A arquitetura orientada para o serviço permite às empresas dar resposta às exigências dos utilizadores e às elevadas cargas de trabalho, ao mesmo tempo que mantém um elevado desempenho em todo o sistema. Isto porque a SOA distribui funcionalidades por vários serviços geridos de forma independente.

Manutenção mais fácil

Uma vez que os serviços SOA foram concebidos para serem independentes, podem ser mantidos sem necessidade de interromper outros serviços ou infraestruturas. Isto aumenta a eficiência e poupa tempo e recursos.

Qualidade

A arquitetura orientada para os serviços promove a utilização das melhores práticas e de princípios, interfaces e protocolos de design padronizados. Assim, as empresas podem assegurar que os serviços são bem concebidos, consistentes e fiáveis.

Segurança

Com o SOA, as empresas podem centralizar a gestão da segurança, permitindo uma aplicação muito mais eficaz das políticas, do controlo de acessos e da monitorização. Isto ajuda as empresas a atenuar os riscos de segurança e a assegurar a conformidade e a proteção dos dados.

Qual é o exemplo de SOA?

partner-new-managed-service-provider-logo

Um bom exemplo de uma solução frequentemente concebida de acordo com os princípios SOA é um sistema de gestão da relação com o cliente (CRM). Os CRM consolidam aplicações, dados e processos provenientes de várias áreas de negócio, tais como vendas, serviços a clientes e marketing. Este tipo de sistema complexo funciona bem quando construído sobre uma arquitetura orientada para os serviços, uma vez que os princípios SOA permitem que aplicações e serviços reutilizem o mesmo código e comuniquem entre si. Isto permite, por exemplo, uma aplicação de vendas partilhar dados de forma eficiente com aplicações de marketing integradas no CRM, proporcionando visibilidade e ajudando a simplificar os processos.

Porque é que o SOA é diferente das arquiteturas tradicionais?

Antes da arquitetura orientada para os serviços ser desenvolvida, a abordagem por defeito era a arquitetura monolítica. Este modelo tradicional de software de construção envolve a criação de uma unidade única e unificada de aplicações interdependentes. Os sistemas monolíticos costumam ser complexos, assentam em bases importantes de código e assentam em soluções de um único fornecedor. Por estas razões, mesmo uma pequena modificação pode significar mudar e testar todo o sistema.

Uma vez que a arquitetura monolítica utiliza apenas um código base, pode facilitar o seu desenvolvimento. No entanto, não oferece a agilidade, a flexibilidade e a escalabilidade desejadas pelos programadores de software dos nossos dias. Existe também o risco de aprisionamento tecnológico, e pode também constituir uma barreira à adoção e integração de tecnologia. Em comparação, os sistemas de software criados com recurso a SOA consistem em múltiplas aplicações pouco acopladas, divididas em serviços concebidos para funcionarem de forma independente e comunicarem através de uma rede, apesar de estarem baseados em localizações diferentes. Assim, os programadores podem utilizar soluções de vários fornecedores, integrar facilmente novas tecnologias, reutilizar códigos para criar novos serviços e efetuar modificações rapidamente, sem perturbar todo o sistema. Isto torna o SOA muito mais ágil e alinhado com as necessidades do desenvolvimento de software moderno.

Collaboration as a Service

Qual é a diferença entre SOA e microsserviços?

Embora os microsserviços e a SOA pareçam abordagens semelhantes ao desenvolvimento de software, os microsserviços podem ser considerados como uma evolução mais especializada e leve da SOA. Ambas as abordagens defendem serviços escaláveis, independentes e pouco acoplados, embora os microsserviços se baseiem em serviços mais pequenos e autónomos que executam tarefas ou funções muito específicas. Os microsserviços também usam controlo descentralizado e tecnologias leves.

Eis as principais diferenças entre SOA e microsserviços:

Tamanho e complexidade

SOA: os serviços SOA são independentes, mas também de grande envergadura e complexidade, dispondo de uma maior funcionalidade e de um âmbito mais vasto. Frequentemente, requerem muito middleware e abstração.

Microsserviços: à semelhança dos serviços SOA, os microsserviços foram concebidos para serem independentes. Contudo, são mais pequenos e, normalmente, mais fáceis de desenvolver, implementar e manter.

Granularidade

SOA: os serviços são concebidos para serem reutilizáveis, mas são normalmente grandes, de grande granularidade e oferecem uma vasta gama de funções.

Microsserviços: são mais pequenos e refinados, focados em funções específicas, singulares, ou num pequeno conjunto de funções.

Pilha de tecnologias

SOA: para construir um sistema SOA, os programadores costumam usar soluções e middleware Enterprise Service Bus (ESB) para suportar a comunicação e a orquestração.

Microsserviços: normalmente contam com soluções simples, como o Kubernetes para a orquestração, o Docker para os containers e as API para a comunicação e a gestão de serviços.

Gestão de dados

SOA: muitas vezes a gestão dos dados é centralizada, assente em bases de dados partilhadas e em soluções de bases de dados centralizadas.

Microsserviços: em geral, a gestão dos dados é gerida de forma descentralizada, sendo atribuída a cada serviço uma base de dados otimizada para as suas necessidades específicas.

Impacto na atividade

SOA: a implementação de um sistema SOA pode requerer uma mudança organizacional para garantir que os serviços funcionam de forma consistente em toda a empresa. Também é necessário tomar medidas para assegurar uma gestão eficaz do ciclo de vida do serviço e a reutilização dos serviços.

Microsserviços: normalmente não requerem grandes alterações a nível organizacional, uma vez que aderem frequentemente aos princípios DevOps, que permitem que a equipa de desenvolvimento detenha a totalidade do ciclo de vida do serviço.

Comunicação e decomposição

SOA: as aplicações são divididas em serviços pouco acoplados, que comunicam através de interfaces e protocolos padronizados, como HTTP e SOAP.

Microsserviços: leve a decomposição das aplicações mais longe, dividindo-as em serviços que podem ser implementados de forma independente e comunicar através de protocolos leves ou sistemas de mensagens, como HTTP/REST e Kafka.

Casos de uso SOA

A arquitetura orientada para o serviço pode ser utilizada para conceber muitos tipos diferentes de software, mas é especialmente eficaz quando utilizada nos seguintes cenários:

private-cloud-vs-public-cloud

Modernização dos sistemas "legacy"

Os sistemas antigos consistem frequentemente em aplicações interdependentes que são complexas de manter e atualizar. A SOA pode ser usada para modernizar tais sistemas, deitando as aplicações em serviços com as suas próprias interfaces. Isto permite que as empresas substituam ou melhorem sistemas antigos, sem causar interrupções no sistema. Por exemplo, uma empresa pode transformar o seu sistema monolítico em serviços pouco associados, de modo a modernizar o sistema e introduzir agilidade e escalabilidade.

Integração de aplicações empresariais (EAI)

Outro uso comum para o SOA é integrar aplicativos diferentes dentro de uma organização. Assim que a SOA atribui funções ou tarefas aos serviços e lhes permite comunicar através de protocolos e interfaces, esta tecnologia permite a comunicação eficaz entre uma variedade de sistemas diferentes. Um bom exemplo disto é no comércio retalhista ou eletrónico, onde uma empresa pode utilizar o SOA para integrar a sua plataforma de gestão de stocks com a sua loja online.

Cloud computing e integração híbrida

À medida que mais empresas adotam a cloud e os ambientes híbridos, o SOA pode ser utilizado para apoiar a integração e a interoperabilidade entre soluções locais, serviços cloud e API de terceiros. Ao utilizar os princípios SOA para transformar as capacidades baseadas na cloud em serviços e adotar protocolos padronizados, como APIs REST, as empresas podem assegurar uma conectividade eficaz e trocar dados de forma segura entre ambientes híbridos distribuídos.

Suporte para normas da indústria e interoperabilidade

Um dos conceitos centrais do SOA é a interoperabilidade. Graças a este princípio, as organizações podem utilizar protocolos de comunicação e definições de serviços normalizados, a fim de permitir a interoperabilidade entre soluções de diferentes fornecedores. Um exemplo disto é no sector da saúde, onde as normas da indústria como o FHIR (Fast Healthcare Interoperability Resources) se baseiam no SOA. Tais normas ajudam as organizações a transferir registos de saúde e dados clínicos entre sistemas.

public-cloud-paas

OVHcloud e SOA

A OVHcloud suporta a Service-Orianced Architecture (SOA) graças aos seus serviços cloud escaláveis e flexíveis, que permitem uma implementação e gestão eficientes de aplicações baseadas em serviços. Ao oferecer as soluções Infrastructure as a Service (IaaS) e Platform as a Service (PaaS), a OVHcloud disponibiliza os recursos necessários para criar e executar sistemas SOA. O seu suporte para a conteinerização e os microsserviços alinha-se com as práticas modernas de SOA, enquanto as ferramentas de gestão de API facilitam interações de serviço sem falhas. Além disso, a OVHcloud garante uma segurança e uma conformidade robustas, essenciais para a proteção dos dados de serviço e das comunicações. De um modo geral, as soluções cloud abrangentes da OVHcloud melhoram a implementação do SOA, promovendo a agilidade, a escalabilidade e a eficiência de custos.