Para tornar o entendimento de SOA mais didático, invarialmente, apresentamos uma estrutura como a da figura abaixo. Diversas variantes são também possíveis mas os níveis de detalhes são bem próximos. A figura é aplicada para a indústria de Telecomunicações.
Uma sucinta descrição das camadas:
1. Camada de Recurso e Dados (legado): é a coleção atual dos sistemas, aplicações, bases de dados, etc de uma empresa.
2. Camada de Serviço: conjunto de serviços de negócio. Note que os exemplos foram "Detecção de Fraude", "Aprovisionamento", etc. Não há menção a "transações CICS" ou "importação de arquivos XML", por exemplo.
3. Camada de Processo: implementa os processos de negócio através da invocação dos serviços da camada de serviço. Tipicamente implementada por projeto de BPM.
4. Camada de Apresentação e Acesso: permite que usuários finais façam uso tantos dos processos como dos serviços de negócio.
Pode parecer óbvio mas para um projeto SOA, a camada mais importante da figura é a de Serviços. Não somente pelo nome "Serviços" mas por um simples motivo: é esta camada, e só ela, que é o resultante do projeto SOA.
Diria que esta camada possui pelo menos dois aspectos de alta complexidade:
a) A definição dos serviços desta camada.
b) O "gap" tecnológico (funcional e não funcional) entre ela e a Camada de Recurso e Dados.
Este "post" trata sobre o primeiro aspecto.
Se fizermos um "zoom" na Camada de Serviços poderemos encontrar algo mais ou menos assim:
A figura acima foi adaptada do livro "Applied SOA: Service-Oriented Architecture and Design Strategies" (pág. 58) de Michael Rosen e outros.
Todos os serviços da figura estão contidos logicamente na Camada de Serviço em uma estrutura hierárquica. Há serviços de baixo nível de abstração ("Serviços de Integração") e de alto nível de abstração ("Serviços de Negócio"). Nota-se então que um Serviço de Negócio faz uso do legado existente através de uma invocação indireta.
A concepção desta hierarquia de serviços deve ser o "projeto SOA" de uma determinada companhia. Várias questões devem ser consideradas: Quais são os serviços? Como eles se relacionam? Qual o impacto ocasionado em um serviço quando da definição de um novo serviço? Suas funcionalidades e qualidades sistêmicas (escalabilidade, segurança, disponibilidade) serão suficientes para atender as demandas dos seus consumidores? Quais pessoas devem ser envolvidas para a especificação de um serviço?
Tipicamente os chamados "Serviços de Integração" têm nível de abstração baixo em relação aos requerimentos de negócio e necessitam de uma especificação técnica mais apurada em relação às tecnologias existentes e as que serão empregadas. Por este motivo, é improvável que precisemos envolver analistas de negócio neste ponto. Todavia, estes analistas possuem não somente conhecimento mas senso de demanda e criticidade a respeito dos "Serviços de Negócio".
Enfim, o tratamento de questões como essa é que qualificam um projeto como SOA. Mais uma vez as escolhas tecnológicas para a sua implementação são um problema posterior.
Nenhum comentário:
Postar um comentário