How do you determine the optimal balance between unit, integration, and end-to-end automated tests for a microservices-based architecture?