Only in the past 3 years I got in contact with enterprise architecture and its terminology. The more I read about it the more I was confused about the term "service" that appears to have a multitude of meanings.

For example in the context of Domain-Driven Design (DDD) there are domain services, application services and infrastructure services. There is the term service layer and, of course, there is Service-Oriented Architecture and microservices.

What I keep wondering about is which of these terms describe intersecting concepts and which do not. Are the services from DDD part of (a) service layer(s) or does the term service layer only apply if it necessarily provides access to some sort of networking client? Does the term "service" in service layer, SOA und microservices refer to this same aforementioned concept or is one a subset of the other?

Update

I am quite certain now that the way I asked this question makes it easy to misunderstand it. It was never supposed to be a general question about the term "service" but about the relation between the given terms in the second paragraph (e.g. Which ones do intersect? Which one is (or could be) a subset of the other? What level of abstraction do these concepts belong to? Are there potentially is-a relationships among these concepts? etc.)

Update 2

This SE answer and this blog post answer my question.

  • A service is something a client uses. The demarcation is found in the adjectives that aren't the word service. A domain service is demarcated by the domain. Same as a domain client would be. It's like you're asking us to define what color is but insisting we only use skittles to talk about it – candied_orange Mar 29 at 1:08
  • Yep, I am quite certain now that the way I asked this question makes it easy to misunderstand it. It was never supposed to be a general question about the term "service" but about the relation between the given terms in the second paragraph (e.g. Which ones do intersect? Which one is a subset of the other? What level of abstraction do these concepts belong to? Are there potentially is-a relationships among these concepts? etc.) – Antimon Mar 29 at 8:07
  • Have you read this definition? – Laiv Mar 29 at 11:27
  • @Laiv: That definition seems really vague. – Robert Harvey Mar 29 at 15:29
  • 1
    @Laiv: Definition 2: A system supplying a public need such as transport, communications, or utilities such as electricity and water. This is what happens when programmers get obsessed with vocabulary precision. Sometimes, there isn't any such precision. Welcome to the English language. – Robert Harvey Mar 29 at 17:31
up vote 2 down vote accepted

While I agree with @RobertHarvey, I think I also understand what the OP is looking for. I think the simplest way to describe it is thusly:

A DDD service provides a cross-cutting capability within a given piece of software.

A networked service (eg web service) is itself a piece of software which provides cross-cutting capability to other pieces of software.

Note that a DDD service could easily be a facade for an application to access a networked service.

The fundamental meaning of the word "service," as it pertains specifically to Software Engineering contexts, is the same meaning as the word "service" when applied to any other context:

A system supplying a public need, such as transport, communications, or utilities such as electricity and water.

All services (including public utility and computing services) have some common characteristics and considerations:

  • Access Controls
  • Billing
  • Capacity
  • Interfaces
  • Maintenance
  • Metering
  • Quality of Service
  • Regulation
  • Resources

And so on.

In the case of a computing service, the public need is often data, but it can also be storage, infrastructure, application, processing or computational resources.

  • Thank you for taking the time to respond but your answer completely ignores the context of my question given in the main text. – Antimon Mar 28 at 21:42
  • Which is what, exactly? The meaning of "service" does not change at all among the different computing contexts. A service is a service. It "serves" things. – Robert Harvey Mar 28 at 21:49
  • 2
    And I stand by my assertion that, in the general case, there isn't any distinction; a service is a service. – Robert Harvey Mar 28 at 22:00
  • 2
    In few words. Regarding DDD, domain, application and infrastructurejust denote the level (boundary or scope) the service operates at. Regardless the level, they all have the very same purpose; to serve data (or access) to the boundary (scope) they are serving to. What a boundary or scope means, I think Robert already introduced some examples. Ín Microservices, services denote business capabilities of the company (Customer service, Sales, Shipping, HR, Tracking, Notifications, Security, etc). – Laiv Mar 29 at 7:21
  • 1
    In Microservice we call each of these elements "services" but they could be rightfully called applications – Laiv Mar 29 at 7:25

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.