Jan 22, 2012

Rules: App & Data Services

This is the 4th installment of articles I am writing about App Services vs. Data Services. So far, we've come to realize the differences in these layers. In this article, we will see how the differences simplify design and implementation of these specific services.

CategoryApp ServicesData Services
server interfaceHTTP, SOAHTTP, SOA
implementationstatelessstateless
client interfaceREST JSON/ XMLPOJO
addressesbusiness rulesdata challenges
top concernsextensibility, flexibilityscalability, performance, reliability
techniquesAOP, OOPADT, Collections, Algorithms
communicates tohttp servicesdata repositories
testingscenariosdata volume, repository accessibility
error mgmtapp errorssystem errors
i18n, l10npass l10n headerchoose resource string

An app service loads up pluggable business rules and logic, and then executes them. A java based implementation recipe might consist of the following:
  • Spring libraries to take advantage of its AOP features
  • Drools libraries to take advantage of pluggable business rules

A data service allows its clients to create different classes of data, and then manipulate them. A java based implementation recipe might consist of the following:
  • Spring libraries to take advantage of its DI features
  • Hibernate/ Mybatis libraries for their ORM layer (maybe other JPA for various other No SQL)

As infrastructure, we could evaluate:
  • JMS provider (Sonic MQ, Rabbit MQ) for reliable async communications
  • BOSH provider (ejabberd, punjab, lightstreamer) for streaming connectivity
  • EVENT provider (mule esb) for EDA

No comments: