Wednesday, 10 December 2014

Microservices vs Mechanical Sympathy

At what point does it make sense to split some functionality out to run in a separate process to be called upon over HTTP?

When the only driver is the single responsibility principle, I'm looking for a term that means the opposite of premature optimisation - premature over complication has a nice ring to it.

Why don't I like this?  Let me enumerate the ways:
  • Additional network IO
  • Additional processes
    • requiring memory
    • occupying CPU cores
  • Placing additional load on networking infrastructure
  • A potential point of failure
In addition to those runtime overheads, we have some development and deployment considerations:
  • Another artefact to deploy
  • Another service to test
  • Another stream in the continuous delivery pipeline

No comments:

Post a Comment