An SOA odyssey

Friday, May 13, 2005

Service Taxonomy

As promised I will get back to the services platform we're following here at Compassion. But before doing so I wanted to discuss briefly our concept of "service taxonomy". Basically, we've defined four types of services that have different characteristics. The idea is that these different types of services may be implemented in different technologies that are suited to those characteristics. They include:

Process Services

  • Exposes a business process
  • Typically long running and invoked using a one-way or notification (reservation) pattern
  • Defines exceptions, escalations, and/or retries
  • Encapsulates rules particular to the business process
  • Invokes entity services to persist data and infrastructure services to perform steps in the business process
  • Includes transaction control using compensation
  • Includes rules particular to the business process
  • One process service may act as a controller for another and invoke it

Activity Services

  • Exposes business activities that encapsulate calls to multiple entity services and perhaps infrastructure services to perform a single activity
  • Each operation scoped as a logical unit of work
  • Typically immediate request-response pattern
  • Includes rules that are common to the organization
  • Returns exceptions

Entity Services

  • Exposes business entity and associated reference data
  • Typically immediate request-response pattern
  • Uses a published schema to represent the entity
  • Returns exceptions
  • Encapsulates data consistency rules and CRUD+ that are common to the entire organization
  • May invoke infrastructure services for data validation
  • Each operation scoped as a logical unit of work

Infrastructure Services

  • Exposes shared functionality that is not specific to a business process or entity (not domain specific)
  • Typically immediate request-response
  • May abstract interactions with third party services or legacy systems
  • Returns exceptions
  • Does not invoke other services

More about how we have decided to implement each of these soon.


Post a Comment

<< Home