License to Use
By Antony Reynolds on Nov 28, 2008
I was on a training course this week around an Oracle SOA Reference Architecture. This led to an interesting conversation about what is a service. There was a difference in opinion on some of the characteristics of a service, most noticeably does a service have to be re-used to be a service. There was however, general agreement that the definition of a service presented was a good one so I thought I would share it with you. The service definition had four parts
- Service Contract – the requirements document for the service in terms of what does the service do and what promises does it provide in terms of response time, scalability, availability.
- Service Interface – the formal definition of operations and data formats provided by the service.
- Service Implementation – the physical endpoint and code that provides the service.
- Service Usage Agreement – the contract between the client and the service.
The one that may not be immediately obvious is the fourth one, service usage agreement. This indicates the expected level of use of the service by the client, number of requests per time period, message size and concurrency for example. This is important because SOA is about using services in place, sharing not just the service code, but also its implementation resources such as network bandwidth, memory and cpu resources. Usage by one client may impact another and so it is important to set expectations of how a given client may use the service. Service usage agreements may be realised by policies within a service bus that enforce some of the constraints agreed within the usage agreement.
So all told I think a very useful way to think about services and I will certainly be making sure I do a better job of formalising the service usage agreement in future.