Veo servicios en DDD como resultado de la Inversión de dependencia .
Si usara dependencias "simples", entonces su código de dominio llamaría a la base de datos para guardar o consultar una entidad, o fábrica, que crea una entidad, que está vinculada a la base de datos o servicio externo o algún otro tipo de código de infraestructura.
Pero no es así como debería ser el código de dominio. El código de dominio no debe depender del código de infraestructura. Como esta dependencia dificulta la prueba y, posiblemente, la reutilización. Es por eso que inviertes esa dependencia. Hace que el código de infraestructura dependa del código de dominio. Y para hacer eso, necesitas introducir una abstracción. Una abstracción que define qué comportamiento el código de dominio espera que la infraestructura implemente.
Y los servicios en DDD son esa abstracción. En la mayoría de los casos, para el código de dominio, esos servicios deben ser interfaces simples. Y la implementación debe estar en el código de infraestructura, que depende de esas interfaces.