In a microservice architecture, each service should be autonomous. A small team should be able to run it without the other services that make your application. That team should also be able to develop autonomously and make changes to implementation without affecting the application.
The development team should be able to:
- Test, creating business logic and unit tests to ensure the service functions work as expected
- Deploy, upgrading functionality, without restarting other services in the process
Services should be able to evolve regardless of others, keeping backward compatibility, adding new functions, and scaling to several locations, with minimal changes to the architecture: