terça-feira, 12 de abril de 2011

Governança SOA II

Para exercitar os conceitos de Governança SOA, gostaria de expor um exemplo.

Imagine que banco tenha um projeto de portal para seus clientes. É natural imaginar que este portal deva atender e fornecer informações para todas as classes de clientes do banco, sejam aqueles de conta corrente somente, investidores de bolsa de valores, etc

É natural também imaginar que, como qualquer portal, tenhamos uma seção de notícias do mercado financeiro. O banco, muito provavelmente, gostaria de personalizar o acesso a estas notícias: caso o usuário seja um cliente de conta corrente ou um pequeno investidor, as notícias exibidas seriam aquelas divulgadas por quaisquer agências. Já para grandes investidores o mesmo canal de notícias apresentaria notícias com mais profundidade e detalhamento.

Pense, agora, na implementação de tais serviços de negócio. Em um modelo simplificado, um único serviço poderia se basear no perfil do cliente que fez a requisição e assim tomar as decisões sobre quais notícias deveriam ser exibidas.

Por outro lado, dependendo do contexto, esta implementação não seria a melhor. O serviço de notícias para clientes de conta corrente ou pequenos investidores poderia se basear em "sites" como Yahoo Finance ou Google Finance. Neste caso, não haveria inovação no canal de notícias, mas simplesmente o repasse de notícias disponíveis a todos. Já o serviço de notícias para grandes investidores poderia ser baseado em "sites" com Bloomberg ou Reuters, que, além das informações já fornecidas e de livre acesso, disponibilizam textos de analistas especializados de mercado, projeções, etc. Diferentemente do serviço com informações públicas, esta nova coleção de informações é tipicamente paga. Haveria, então, um contrato comercial entre o nosso banco e essas agências de notícias.

Devido a estes fatores, o mesmo serviço de notícias possui comportamentos muito distintos quando aplicado às diferentes classes de clientes do banco. Por conta disso, o melhor seria, então, termos duas versões do mesmo serviço de notícias. Abaixo temos uma figura ilustrativa:


O cliente informa um símbolo de uma empresa (ORCL para a Oracle, JAVA para Sun, etc) e, baseado no seu perfil ("Platinum" ou "Gold"), o serviço adequado de notícias é invocado. Facilitaríamos significativamente a implementação dos mesmos, mas o maior ganho seria em relação ao controle do ciclo de vida e Governança. Alguns exemplos:
  • O "Governance Officer" poderia, dinamicamente, estabelecer novas condições, além do perfil do cliente, para as quais o serviços invocados
  • Um serviço poderia ter acesso durante um período do dia somente
  • Posto que um número muito menor de clientes usa a versão "Platinum", haveria um uso mais racional da infraestrutura onde os serviços estão sendo executados.
  • Etc, etc, etc

Nenhum comentário:

Postar um comentário