Vamos iniciar nossos estudos aqui pelo Blog do Grancursos acerca das arquiteturas orientadas a serviços (SOA, do inglês Service-Oriented Architectures). Elas são uma forma de desenvolvimento de sistemas distribuídos em que os componentes de sistema são serviços autônomos, executando em computadores geograficamente distribuídos. Repare que SOA não é um produto, mas um modelo de arquitetura para desenvolver softwares baseados em serviços.
A ideia por traz de SOA é a extensão da internet para que ela permita troca de informações entre sistemas (e não só entre pessoas, uma vez que a internet é centrada em pessoas). Ou seja, SOA busca implantar a chamada automática de serviços sem a intervenção humana.
Segundo Sommerville, um serviço é um ato ou desempenho oferecido de uma parte para outra. Embora o processo possa ser vinculado a um produto físico, o desempenho é essencialmente intangível e normalmente não resulta na posse de qualquer um dos fatores de produção.
Existem diversos tipos de serviços utilizados em sistemas que se utilizam de SOA:
- Serviços de negócio (business services): Podem ser definidos como o encapsulamento lógico das funções de negócio. Ou seja, eles têm que ser relevantes para os negócios da organização em questão. Uma maneira fácil de determinar se um serviço é um serviço de negócios é perguntar se o serviço pode ser criado sem consulta aos gerentes de negócios. Caso contrário, o serviço provavelmente não é um serviço de negócio.
- Serviços de entidade (entity services): Um serviço de entidade geralmente representa entidades comerciais (por exemplo, Funcionário, Cliente, Produto, Fatura etc.). Esse serviço de entidade geralmente expõe operações CRUD (criar, ler, atualizar, excluir).
- Serviços funcionais (functional services): Os serviços funcionais não representam tarefas ou funções relacionadas aos negócios. Eles são orientados à tecnologia. Podem ser entendidos como serviços que gerenciam outros serviços com baixa possibilidade de reutilização.
- Serviços de utilidade (utility services): Oferecem serviços comuns e reutilizáveis que geralmente não são centrados nos negócios. Eles podem incluir log de eventos, manipulação de exceções etc.
A construção de aplicações baseadas em serviços permite que empresas e outras organizações cooperem e façam uso das funções de negócios umas das outras. Assim, sistemas que envolvem muitas trocas de informações pelas fronteiras das empresas, como sistemas de cadeia de suprimentos, em que uma empresa compra bens de outra, podem ser facilmente automatizados. As aplicações baseadas em serviço podem ser construídas por meio da ligação de serviços de diversos fornecedores usando uma linguagem de programação padrão ou uma linguagem de workflow especializada.
Um serviço pode ser orquestrado, o que quer dizer que podemos compor um serviço a partir de diversos serviços, tal como visto na figura a seguir:
Temos um orquestrador responsável por essa composição e o solicitante do serviço vai conversar apenas com ele. Veja que nessa arquitetura, apenas o orquestrador chama os outros serviços (que são conhecidos como serviços de baixo nível ou da camada inferior), não existindo possibilidade do cliente acessar diretamente esses serviços.
Atenção! Temos questões que cobram a orquestração de serviços, então não deixe de entender esse conceito básico de SOA.
Outro conceito cobrado em concursos é a granularidade de um serviço. A granularidade diz respeito ao escopo abrangido pelas capacidades de um serviço e pode ser classificada em fina (fine-grained) e grossa (coarse-grained).
Serviços com granularidade fina possuem um maior potencial de reuso, pois encapsulam menos funcionalidades, sendo que os Entity e Utility Services constituem bons exemplos deste tipo de implementação. Já a granularidade grossa resulta numa menor possibilidade de reaproveitamento, uma vez que implica em alguma forma de acoplamento com outras construções.
Outra coisa que cai em algumas questões é a classificação de um serviço como agnóstico. Um serviço agnóstico é aquele que é independente de plataforma ou de tecnologia e, por isso, pode ser reutilizado em diversas aplicações. SOA busca a identificação de serviços agnósticos.
Agora, vamos praticar com duas questões:
Questão 01 (CESPE/ANALISTA DE SISTEMAS/TRE-PI/2016)
Assinale a opção que apresenta definição correta para um serviço agnóstico, na SOA (service-oriented architecture).
A É um serviço centralizado no negócio que fundamenta o contexto e o limite funcional em uma entidade de negócio.
B É um serviço presente em uma camada distinta de serviços orientada pela tecnologia.
C Consiste em unidades lógicas que encapsulam funcionalidades não específicas a nenhum aplicativo ou processo de negócio.
D Consiste de serviços pertencentes à camada de execução, modelada pela aplicação orientada às operações CRUD (em português: criar, ler, atualizar e excluir).
E É um serviço de negócio com limite funcional, diretamente associado a tarefa ou processo específico.
Gabarito: Letra C.
CESPE pegou a definição de serviço agnóstico de ERL (2009)[1]:
Dentro de uma solução orientada a serviços, as unidades de lógica (serviços) encapsulam funcionalidades não específicas a nenhum aplicativo ou processo de negócio. Esses serviços são classificados como ativos de TI agnósticos e reusáveis.
Questão 02 (CESPE/ANALISTA DE SISTEMAS/STM/2018)
Em SOA, orquestração é a forma de arranjar serviços diferentes para serem executados em uma ordem preestabelecida.
Certo.
A questão está CERTA, pois a orquestração de serviços é a identificação dos serviços que são utilizados em um processo de negócio e a reunião desses processos em um serviço maior, que representa o processo de negócio como um todo. Nesse contexto, teremos um orquestrador e um processo em que os serviços serão executados seguindo um fluxo cuja ordem é preestabelecida.
[1] ERL, Thomas. SOA: Princípios de design de serviços. São Paulo: Pearson, 2009.
Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente: