Post

Arquitetura Orientada a Serviços

Arquitetura Orientada a Serviços

Arquitetura Orientada a Serviços (Service-oriented architecture SOA)

Service-oriented architecture ou SOA é um estilo arquitetural que impõe uma organização e utilização dos recursos distribuídos na forma de serviços fracamente acoplados. Cada serviço possui as seguintes restrições:

  • Standardized Service Contract
  • Service Loose Coupling
  • Service Abstraction
  • Service Reusability
  • Service Autonomy
  • Service Statelessness
  • Service Discoverability
  • Service Composability

Standardized Service Contract

Serviços devem compartilhar o mesmo contrato padronizado. Serviços que possuem a mesma funcionalidades devem respeitar a mesma interface.

Service Loose Coupling

As interfaces dos serviços devem impor baixo acoplamento aos consumidores ao mesmo tempo que o serviços seja desacoplados do ambiente.

Service Abstraction

Toda informação não essencial deve ser abstraída. Os contratos de serviço devem apenas conter informações essenciais e toda informação sobre o serviço deve está contido no contrato.

Service Reusability

Serviços devem ser capazes de se reutilizar. Serviços devem ser coesos, capazes de serem vistos como recursos reutilizáveis

Service Autonomy

Serviços devem ser autônomos. Serviços devem ser capazes de evoluir separadamente de outros serviços, ter o controle sobre o seu ambiente de execução, permitindo usar essa informação com a finalidade de aprimorar sua performance.

Service Statelessness

Serviços devem minimizar o armazenamento de estado, idealmente sem estado, com objetivo de reduzir o consumo de recursos.

Service Discoverability

Serviços devem capazes de serem descobertos. Serviços devem ser complementados com meta dados que permitem ser descobertos e interpretados.

Service Composability

Serviços devem ser capazes de serem combináveis independentemente da complexidade dessa composição. Serviços serem capazes de se combinar e reutilizar é justamente o principal atrativo dessa arquitetura, uma vez que ela é aplicada a organizações que possuem recursos altamente reutilizados, na suas soluções.

Objetivos de uma Arquitetura Orientada a serviços

  • interoperabilidade intrínseca: Os serviços já são naturalmente e nativamente interoperáveis
  • federação: Ambiente de recursos e aplicativos conectados, porém com autonomia e autogestão
  • Diversificação de fornecedores: É possível escolher o melhor fornecedor para o serviço que a organização precisa

Tipos de Serviço

Serviços utilitários

Implementam algum tipo de funcionalidade genérica que pode ser utilizada por várias aplicações

Serviços de Negócio

Serviços associados a funcionalidades de negócio específicas: (Ex: matricular um aluno em um curso)

Serviço de Coordenação

Serviços que coordenam um fluxo maior de outros serviços (ordenamento,gerenciamento de contexto, etc)

Modelos de Arquitetura SOA

Existem diversos modelos de arquitetura SOA, desde de mais simples até mais complexos. O nível de sofisticação depende das necessidades da organização.

Modelo End-To-End

O solicitante do serviço invoca diretamente o prestador do serviço. Portanto é necessário ter conhecimento prévio da existência do serviços

%%{init: {"flowchart": {"htmlLabels": false}} }%%

flowchart LR

con[Solicitante de serviços]
ser[prestador de serviços]

con -- "`**invoca**`" --> ser
ser -- "`**notifica**`" --> con

Modelo Triangular

O modelo triangular envolve 3 atore: prestadores de serviço, solicitantes de serviço e registro de serviço.

Prestadores

Os prestadores publicam seus serviços no registro de serviço.

Registro de serviço

O registro de serviço recebe a solicitações de um prestador , que os organiza, cataloga e fornece alguma funcionalidade de busca para encontrar serviços. O registro geralmente possui duas interfaces, uma para publicação e outra para busca.

Solicitante de serviço

Solicitante é todo cliente que deseja utilizar o serviço, nesse modelo o cliente recorre a interface de busca de um serviço e depois o invoca.

%%{init: {"flowchart": {"htmlLabels": false}} }%%

flowchart TB

ed1[Registro de Serviço]
con[Solicitante de serviços]
ser[prestador de serviços]

con -- "`**busca**`" --> ed1
ser -- "`**publica**`" --> ed1
con -- "`**invoca**`" --> ser

Referências

Erl, Thomas. Service-oriented architecture. Upper Saddle River: Pearson Education Incorporated, 1900.

This post is licensed under CC BY 4.0 by the author.