Consumer? Provider? Who is who?

When defining the terminology of who’s the Consumer and who’s the Provider of a Service, that’s something confused in many environment that I’ve being involved with. Although it seems a naive subject (the worry about who is the consumer and who is the provider), think of you being at a meeting with more than four person each one having different visions about this subject, and all of them discussing service design solutions. This can get a lot messy and turn out to be a pointless and looong meeting. It is important to have this cleared before start talking about the design of the solutions. The confusion goes like this:
  • some people interpret that the Consumer is whose consuming information;
  • some other people interpret that the Consumer is whose consuming the service;
Hence, here we have different interpretation of what perspective the Consume label should be applied: The Consumer consume the information or consume the service? Let there be the confusion!  Let’s try shed some light on this.
Let’s put an example to get this cleared: in the picture below we have two scenarios of a Service being executed:
  • Scenario 1
    • Here we have an Consumer application that gets information of a specific customer, hence that’s true, it’s consuming the customer information, and for this the application has to consume the Service function Get Customer Data to get what needs;
  • Scenario 2
    • Here, an Consumer application needs to store a new customer. In order to make this happen, the Consumer application needs to consume the Service function Add New Customer, providing the information of the Customer to be saved. Although we have an answer of the Status of what happened in this transaction of insert a new customer,  consuming the Status information, is not exactly the main objective of the Consumer. This request could even be done in a one-way communication (asynchronously), it all depends on the business context.

In both scenarios we have cleared who is the Consumer, even though in the second scenario the Consumer is providing information to the Provider, the Consumer is still consuming the Provider Service function.

Conclusion: in order to get a better communication regarding who is the Consumer and who is the Provider before starts discussing services design solutions, take into consideration the perspective of function being realized. That being said, the consumer is whose interested to execute a service function, does not matter if it is sending or receiving the information.