In a service-oriented architecture, subsystems can depend on each other in different levels:

  1. Database level => Foreign keys to enforce data integrity across services on deletions and updates (cascade), and views which use tables from other services to increase performance
  2. Code reuse => like DLL references in .NET platform, to reduce the amount of code, and to follow DRY
  3. Service usage => To enforce business centralization; Each service can use any other service in a mesh-like scheme
  4. UI reuse => To facilitate consistency in UI and take UX higher

Which of these dependencies are encouraged and which are not?

1 Answer 1

  1. Datastore level dependencies are dangerous. Where possible, prefer a subsystem to abstract away the details. Otherwise, prefer creating a data-access library that abstract the details of accessing the datastore and ensure consistency between services.
  2. Code reuse should be encouraged, especially if you have a system for distributing that reused code consistently.
  3. Service usage should generally be encouraged, but if you see loops developing, that may mean that some component is doing more than it ought to, and splitting that service into pieces may be in order.

I'm unsure what "UI reuse" means, so I won't speculate.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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