Recently, an admin asked me if we are doing microservices.
I thought about it for a few moments. And what I said comes here as a checklist.
It’s a really simple test with quick yes or no.
Single Responsibility Principle
Is your service small and focused on doing one thing well?
Is your service modeled around business concepts?
Are you free to pick technology, tool, language, framework or what ever for your service?
Has your service an explicitly published interface and
are internal implementation details are hidden?
Can you make a change to a service without changing anything else?
Requires a deployment of your service coordination with other teams?
Can you scale your service independently via cloning or sharding?
Does your service can take corrective actions automatically?
Fault and resource isolation
Will affect a memory leak or an unclosed database connection only your service?
Do you use REST or other lightweight communication protocols?