1
  • The SOA pattern consists of service providers and service consumers.

  • It seems to be opposed to monolithic applications.

The above two also apply to the client-server pattern. So how is the SOA pattern different from the client-server pattern?

Must the SOA pattern use the client-server pattern? Can the client-server pattern be used not by the SOA pattern?

halfer
  • 19,824
  • 17
  • 99
  • 186
Tim
  • 1
  • 141
  • 372
  • 590

1 Answers1

2

Service-oriented architecture is really about coupling and, as with all architecture, is not too interested in the implementation.

The ideal is to decouple services in order to expose autonomous functionality. How that service is implemented should not matter. You may even expose functionality from a a legacy monolithic application.

Along with the coupling goes what I call reachability. You need to execute some code and there are going to be a couple of ways to do that:

  • copy & paste
  • call existing function
  • reference assembly
  • call over-the-wire / out-of-process

In order to have autonomous business components you need to have some deployment strategy. This is where things get more involved as updating a legacy system that exposes services is a lot harder than, say, a bounded context (in domain-driven design parlance) as a micro-service.

Client/Server implementations may look very much like SOA if your server is exposing services in a rather easy-to-access fashion (say a REST API). If you look at things logically from a high enough level they start looking very much alike. In that regard SOA is actually really rather old hat and even though we have "newer" techniques they still truly fall under the SOA banner.

Eben Roux
  • 12,983
  • 2
  • 27
  • 48
  • Thanks. Must the SOA pattern use the client-server pattern? Can the client-server pattern be used not by the SOA pattern? – Tim Jun 27 '19 at 09:28
  • Client/Server usually refers to a rather specific implementation where the two ends are closely coupled and usually use some communication mechanism that makes it difficult to expose the server. However, SOA in no way requires a client/server implementation. But again, on a logical level there will be clients to any server. – Eben Roux Jun 27 '19 at 13:35
  • Thanks. (1) Client/Server "usually use some communication mechanism that makes it difficult to expose the server." What communication mechanism is that? What does "expose the server" mean? (2) "SOA in no way requires a client/server implementation". What can SOA use alternative to client/server implementation? – Tim Jun 27 '19 at 13:41
  • An example would be custom TCP sockets between client and server. SOA is about exposing "services". Those could be exposed externally via REST endpoints for instance. You may have messaging endpoints internally (as you wouldn't want those directly exposed). There are consumers of your services but it isn't "client/server" in the traditional sense. There are subtle differences between these concepts that make it quite tricky to identify and explain but hopefully that makes sense. – Eben Roux Jun 27 '19 at 17:32