Orientação a serviços: é um paradigma de
design que abrange um conjunto específico de
princípios de design. A aplicação desses
princípios ao design da lógica resulta em uma
'lógica orientada a serviços'.
Serviços: programas de software fisicamente
independentes, com características de design distintas
que dão suporte à obtenção dos objetivos estratégicos
associados à computação orientada a serviços. Essas
capacidades adequadas para a invocação por programas
externos são comumente expressas via um contrato de
serviços públicos (quase como uma API tradicional).
Composição de serviços: consiste em
um agregado coordenado de serviços. É
comparável a um aplicativo tradicional
porque seu escopo funcional
normalmente se associa à automação
de um processo de negócio da empresa.
Inventário de serviços: é uma coleção
padronizada e governada de maneira
independente dos serviços que se
complementam, dentro de um limite que
representa uma empresa ou um
segmento de uma empresa.
Modelos de serviços
Serviço de entidade: representa um serviço centralizado no
negócio, que fundamenta o contexto e o limite funcional em
uma ou mais entidades de negócios relacionadas. Ele é um
serviço altamente reusável porque é agnóstico à maioria dos
processos da empresa controladora; como resultado, um
único serviço de entidade pode ser aproveitado para
automatizar uma série de processos de negócio da empresa.
Exemplos de entidades: cliente; reclamações.
Serviço-tarefa: é um serviço serviço de negócio com limite
funcional diretamente associado a uma tarefa ou a um
processo específico de uma empresa controladora. Tende
a ter menos potencial de reúso e, em geral, é posicionado
como o controlador de uma composição responsável por
compor outros serviços mais agnósticos ao processo.
Serviços utilitário: é dedicado a fornecer
funcionalidades reusáveis de serviço utilitário, como
registro de eventos em logs, notificação e
tratamento de exceções.
Web services
1ª Geração
WSDL (Web Service Description Language): é
usado para descrever web services. É escrito em
XML. É uma recomendação W3C. Especifica a
localização do serviço e os métodos do serviço.
(w3schools). Estabelece o meio pelo qual os
provedores de serviço devem definir a interface
para esses serviços. Essencialmente, ele permite
que a interface de um serviço (operações de
serviços, parâmetros e seus tipos) e suas
ligações sejam definidas de maneira
padronizada. (Sommeville)
SOAP (Simple Object Access Protocol): é um padrão
de troca de mensagens que dá suporte à
comunicação entre serviços. Ele define os
componentes essenciais e opcionais das mensagens
passadas entre serviços. (Sommeville)
UDDI (Universal Description, Discovery and Integration): define os
componentes de uma especificação de serviço que pode ser usada
para descobrir a existência de um serviço. Esses componentes
incluem informações sobre o provedor de serviços, os serviços
fornecidos, a localização da descrição de serviços (usualmente
expressa em WSDL) e informações sobre relacionamentos de
negócio. O UDDI registra os usuários potenciais de um serviço
capazes de descobrir quais serviços estão disponíveis.
(Sommeville). É dividido em páginas brancas (contatos), páginas
amarelas (categorização da empresa) e páginas verdes (detalhes
mais técnicos, WSDL, etc.)
WS-I Basic Profile
2ª Geração
WS-*
Objetivos e
benefícios da
orientação a
serviço
Maior interoperabilidade intrínseca: software que
não são interoperáveis precisam ser integrados;
portanto, a integração pode ser vista como um
processo que permite a interoperabilidade. Um
objetivo da orientação a serviços é estabelecer a
interoperabilidade nativa dentro dos serviços, a fim
de reduzir a necessidade da integração.
Maior federação: um ambiente de TI federado é
aquele em que os recursos e os aplicativos
permanecem unidos e, ao mesmo tempo, mantêm a
autonomia individual e a auto-governança.
Mais opções de diversificação de fornecedores:
significa a capacidade que uma organização tem de
escolher inovações tecnológicas e produtos do 'melhor
fornecedor da categoria' e de utilizá-los conjuntamente
em uma empresa. Não é necessariamente benéfico
para uma organização ter um ambiente diverso de
fornecedores; contudo, é benéfico ter a opção da
diversificação, quando necessário (exige que a
arquitetura de tecnologia não esteja associada à
plataforma de um fornecedor específico).
Maior alinhamento do domínio de negócio e de tecnologia:
a computação orientada a serviço trás um paradigma de
design que promove a abstração em vários níveis. Isso é
alcançado pela incorporação de uma análise e de um
processo de modelagem estruturados. Como os processos
de negócios são ampliados em resposta a vários fatores
(ambiente, novos concorrentes, políticas, etc.), os serviços
podem ser reconfigurados em novas composições, que
refletem a lógica modificada do negócio.
Maior retorno sobre investimento: quanto maior o retorno,
mais uma organização se beneficia com a solução. Contudo,
quanto menor o retorno, maior a erosão que os custos das
soluções automatizadas provoca nos orçamentos e lucros
de uma organização.
Maior agilidade organizacional: agilidade, em nível
organizacional, está relacionada à eficiência com a qual
uma organização pode responder a mudanças.
Menor carga de trabalho da TI: aplicar constantemente a
orientação a serviços resulta em uma empresa de TI com menor
desperdício e redundância, menor tamanho e custo operacional e
menos despesas indiretas associadas a governança e evolução.
Princípios de design
da orientação a
serviços (8)
Baixo acoplamento de serviço: permite que o design e a lógica de um serviço possam evoluir
independentemente de sua implementação, ao mesmo tempo em que garante a interoperabilidade
básica com consumidores do serviço.
Abstração de serviço: enfatiza a necessidade de ocultar o maior número possível de detalhes
subjacentes de um serviço.
Contrato de padronização de serviço: estabele os termos do compromisso, fornecendo restrições e
requisitos técnicos, bem como todas as informações sobre a semântica que o proprietário do serviço
deseja publicar. Por exemplo, pode ser composto por WSDL, XML Shema, WS-Policy e Acordo de Nível
de Serviço (SLA)
Capacidade de reúso de serviço: refere-se a tornar um software útil para mais que um único
propósito
Autonomia de serviço: capacidade de se autogovernar. Se um software é autônomo em runtime, ele
será capaz de realizar sua lógica independentemente de influências externas.
Independência de estado de serviço: serviços devem ser projetados para manterem informações de
estado apenas quando estas forem necessárias (stateless
Visibilidade do serviço: serviços precisam ser facilmente identificados e entendidos quando houver
oportunida
Composição de serviço: capacidade de os serviços se juntarem e serem acessados de
forma a englobar e atender um problema maior. Da mesma forma, pode-se decompor
diversos serviços para resolver um problema, dividindo-o em partes menores.
Representa uma forma distinta da arquitetura de tecnologia projetada no suporte à lógica
orientada a serviços, que é formada por 'serviços' e 'composições de serviço' modeladas e
projetadas em conformidade com a 'orientação a serviços'. É muito importante visualizar e
posicionar a SOA como modelo arquitetônico que seja agnóstico a qualquer plataforma de
tecnologia. No mercado atual, a plataforma de tecnologia mais associada à realização da
SOA é a de web services. (Erl)