Data Services são serviços de software que encapsulam operações das entidades chave relevantes para a empresa. Os dados da empresa são armazenados em múltiplos sistemas que, por sua vez, fazem uso de diversas interfaces, ou mecanismos, para prover interação.
Existem variados canais (branch, Online, call center) e mecanismos (orientados à eventos, em demanda, processos em lote) que precisam ser atendidos adicionando novos desafios aos data Services. Sem uma camada de abstração para desenvolvedores que os separe desta complexidade o empreendimento terminará com um spaghetti de integrações ponto à ponto entre fontes de dados e desenvolvedores.
Os Data Services tiram do desenvolvedor a necessidade de acessar e atualizar as múltiplas fontes de dados ajudando-o a manter a integridade de tudo que está armazenado.
Adicionalmente, ajudam a construir código reutilizável que pode ser aproveitado em outros projetos e iniciativas. Também atuam em um função importante de governança - eles ajudam na centralização de métricas, monitoramento, controle de versão, reutilização de tipos de dados e forçam a visibilidade de dados e regras de acesso.
Os Data Services oferecem alguns benefícios adicionais - abstração das fontes de dados, centralização dos provedores de dados, reutilização (padrões genéricos, interoperáveis, flexíveis e de consumo), alinhamento com os modelos lógicos de dados, suporte à múltiplas versões de serviços, oferecem funcionalidade com valor agregado e pontos de interação simples. Consequentemente, servem de base onde o empreendimento pode evoluir as necessidades do negócio de maneira contínua.
a. Fundamentação para Data Services: Como dito acima, data services proporcionam vários benefícios importantes para a empresa. Aqui cada um deste sera melhor detalhados.
- Abstração da fonte de dados: Afastam as fontes físicas de dados de quem as utiliza. Isto permite que provedores de dados mudem sua estrutura (adicionando/removendo tabelas, colunas ou outros objetos de banco de dados), formato dos dados (transformando de texto simples para HTML), mecanismo de persistência de dados (alterando de um único banco de dados para múltiplos, alterando os fornecedores de banco de dados, adicionando tabelas de partições), protocolo de troca de dados (Driver ODBC para OLE DB) sem afetar seus usuários. A mudança de qualquer um desta parâmetros irá afetar somente o código daquele data service e não obrigará que cada desenvolvedor mude sua lógica de acesso à dados.
- Agregação: Permitem que os provedores usem um ou mais fontes de dados para criar a entidade de negócio. Esta ideia não é aplicável somente à fontes de dados homogêneas, o são também para as heterogêneas. Como exemple a agregação pode ser feita através de dois bancos de dados ou um banco de dados e um documento XML. Ex. Isto permite que o data service combine dados estruturados com dados semi estruturados ou ainda, como os que não têm qualquer estrutura. Ex. O data service pode agregar dados de texto como informação de retratação de uma fonte juntamente com dados de perfil de outra. Este provedor é capaz de construir uma mensagem com dados de uma conta ou partido usando diversas fontes de dados para agregando dados em uma mensagem final para o consumidor. Isto permite que o consumidor não precise buscar/acessar diversas fontes de dados e faça ele a agregação. Adicionalmente, ao agregar dados ele oferece uma interface de programação mais simples para o usuário acessar, manipular erros e fazer manutenção.
- Reutilização: Servem como construtores de blocos de operações reutilizáveis para dados da empresa. Data Services que criam, leem, atualizam, apagam e fazem buscas em dados de negócio são inerentemente reutilizados entre múltiplos projetos. Data Services - também conhecidos como Entity Services - são reutilizáveis por diversas motivos - natureza genérica, interoperabilidade de plataforma e suporte à múltiplo padrões de consumo. Sua lógica pode ser aplicada à diversos processos de negócio facilitando grandemente a reutilização. Por exemplo - um serviço chamado Find Party é aplicável para encontrar um grupo enquanto atribui um individuo autorizado à uma conta de vendas bem como procura um grupo para unificar perfis duplicados em uma atividade de unir dados. Eles são interoperáveis através de múltiplas plataformas e podem estar disponíveis através de diversos protocolos de transporte como HTTP e JMS. O data service pode ser acessado pelo padrão de troca de mensagens predominante - fire/forget, request/reply e publish/subscribe. Por isso o usuário pode acessar o serviço por demanda através de sua interface ou por um processo assíncrono exigindo um transporte de mensagens confiável.
- Alinhamento com os modelos lógicos de dados: Os data services oferecem alinhamento com entidades lógicas de modelos de dados como Perfil, Contas ao manter a consistência com a estrutura de dados e no comportamento de vários atributos de dados. Sem eles, cada usuário deve interpretar os atributos físicos dos dados à sua maneira com o risco adicional de duplicar a estrutura de dados do provedor. Os data services permitem reutilização dos tipos de dados através de esquemas e a reutilização de esquemas através de serviços. Uma vez que os esquemas são definidos a partir dos modelos lógicos dos dados orientados pela informação de arquitetura os data services oferecem alinhamento com estes modelos lógicos. Isto permite aos data services influenciar os valores e atributos dos dados lógicos (contrariamente aos atributos e valores específicos de sistema). Porquê isto é tão importante? Um dos grandes obstáculos ao se refatorar sistemas legados está na propagação e na utilização de valores e atributos físicos legados através de aplicações consumidoras. Isto amarra o sistema legado com cada utilizador dos dados. Os data services efetivamente desacoplam utilizadores dos valores e atributos legados ao alinhá-los com os modelos de dados lógicos.
- Suporte à múltiplas versões de serviço: Os data services permitem ao provedor a opção de expor uma ou mais versões do serviço. Isto possibilita que o provedor do data service ofereça uma nova versão do serviço à uma população de utilizadores pequena. Também permite que o provedor ofereça novas características em uma nova versão do serviço sem forçar que todos os usuários o atualizem simultaneamente. Neste sentido, isto possibilita que os usuários migrem para as novas versões de maneira graciosa.
- Agrega valor: Somada à sua função primária de operação na entidade de dados, o data service pode agregar serviços como caching de dados (oferecendo acesso mais eficiente/rápido aos dados utilizados frequentemente), filtro (ex. Para clientes que apenas desejam receber um subconjunto das mensagens publicas referentes à entidade de dados), e controle de subscrição (gerenciamento do registro das publicações para clientes).
- Interação em um ponto. Os data services atuam como ponto único de interação entre entidades de dados para usuários. Eles podem utilizar mecanismos consistentes para operar dados de negócio através de diferentes domínios (dados de perfil, dados de contas, referências cruzadas, relacionamentos, etc.). Isto facilita a autenticação (validação das credenciais do usuário) e autorização (ex. O usuário tem a autorização para executar o serviço? O usuário vê um atributo confidencial?). A interação em apenas um ponto também permite à organização um processo de integração contínua do usuário através dos data services.
b. Escopo dos data services: Os data services estão principalmente concentrados em ações de entidades de dados - ponto. Assim o escopo dos data services incluem várias manipulações em entidades de dados, agregações de dados através de múltiplas fontes de dados, uma facilidade para utilizar interfaces de dados de uma variedade de protocolos de transporte, mapeamento entre interfaces lógicas com físicas, e manipulação graciosa de erros. Data sourcing e transferência de grandes quantidades de dados também podem utilizar data services embora, tradicionalmente, estas áreas utilizem ETL e ferramentas de busca. Administração da lógica do processo de negócio e execução das regras da linha de negócio estão fora do escopo dos data services uma vez que proíbem a reutilização. Claro que o que é específico à uma aplicação de um usuário em particular também está fora do escopo dos data services.
c. Desenvolvimento de data services: Buscando uma abordagem do tipo "contract-first" para o desenvolvimento de data services, o contrato de serviço - esquemas de entrada e de saída são desenvolvidos baseados em necessidades. O planejamento do esquema precisa seguir algumas diretrizes e boas práticas. É importante rever as principais aqui.
- Atributos/tipos/elementos de esquema são planejados em conjunto com o modelo lógico apresentado e controlado pela arquitetura de informação. Isto garante que os valores/identificadores específicos do sistema ou tecnologia não fiquem expostos no contrato público do esquema. Valores padrão precisam ser utilizados e novos adicionados onde aplicado para garantir que o esquema esteja alinhado com os objetivos estratégicos da organização.
- Contratos existentes são examinados para considerar oportunidades de reutilização. Esquemas de entidade de negócios são também controlados pela arquitetura de informação e esquemas padrão para dados de entidade do negócio precisam ser reutilizados sempre que possível. Ex. Os web data services Pegar Produto e Criar Produto utilizam o mesmo esquema Produto. Isto também é aplicável quando planejando serviços de publicação - reutilizar esquemas quando publicando uma entidade de dados ao invés de expô-lo para invocações em demanda. Isto não só economizará tempo como também garantirá que o usuário do data service terá uma definição consistente das entidades de dado ao preparar entradas ou analisar saídas de data services.
- Ao planejar contratos WSDL para usuários de data services, esquemas precisam ser importados para que os documentos WSDL sejam consistentes com as interfaces usadas para implementar o controle dos dados. Também garante que documentos WSDL sejam leves e modulares.
- Esquemas e documentos WSDL devem ser validados através de ferramentas como Web Services Interoperability (WS-I) WSDL Validator para garantir que os contratos de serviços de dados não utilizem plataforma/fornecedor/tecnologia específica inibindo a interoperabilidade e reutilização dos data services.
Uma vez que os contratos estão concluídos, o controle dos dados é planejado para implementá-lo. Este controle consiste em componentes modulares de data services sendo executados em sequência, em paralelo ou ambos. Este passo no processo de desenvolvimento irá decidir quais chamadas precisam ser feitas, em que ordem, quais podem ser feitas de modo concorrente e quais dependem de outras, etc.
d. Padrões de consumo para data services. Este ponto precisa ser analisado de diversas perpectivas:
- Ambiente de computação: Data services podem ser utilizados a partir de diversas plataformas. Sendo que a maioria delas será de: .Net linguagem comum em tempo de execução (CLR), máquina virtual java (JRE), mainframes e Unix/Linux. O ponto de partida é o ambiente de computação pode ser qualquer um onde uma chamada web service possa ser feita; uma mensagem para uma fila confiável possa ser enviada ou recebida.
- Protocolo de transporte: Os Data services podem ser utilizados através de protocolos de transporte de mensagem confiáveis (como JMS através de MQ Series) ou não confiáveis (como HTTP). Alguns data services devem ser oferecidos somente através de determinados protocolos de transporte, dependendo de sua funcionalidade.
- Padrões de troca de mensagens: Data services podem ser acessados através de quatro padrões de troca de mensagens principais - request/reply (tight SLA), request/reply (relaxed SLA), fire/forget e publish/subscribe.
Sobre o Autor
Sou Vijay Narayanan, líder de uma equipe de desenvolvimento de software criando data services reutilizáveis e componentes de automação de processos trabalhando para uma empresa de serviços financeiros. Trabalhei em diversos projetos de software desde sistemas single user até grandes, distribuídos, plataformas multiusuário com diversos serviços. Publico em um blog assuntos sobre Reutilização de Software em http://softwarereuse.wordpress.com/.