-2

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.

Antimon
  • 542

2 Answers2

3

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.

Robert Harvey
  • 200,592
1

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.

Paul
  • 3,347