We run Dapr on GCP using GCP's Memorystore and accessing it with Dapr. Our deployments run on GKE, and we use Dapr for two things: state versioning with Redis, which we only get with Dapr and not with the native OSS clients, and a Dapr API called service invocation to discover and invoke other services across the cluster.
We looked into using a service mesh like Istio/Linkerd for the direct communications part but eventually decided that Dapr's explicit API approach makes more sense for us than a blackbox transparently intercepting our traffic. plus, these meshes were too cumbersome to setup.
Dapr gives you some capabilities that libraries don't have. at first we had the same concerns, but for our use case it works really well. We're using Dapr with Redis and it gives us state versioning using etags which is something Redis doesn't natively have. there's a bunch more features it adds like scoping and consistency.
We looked into using a service mesh like Istio/Linkerd for the direct communications part but eventually decided that Dapr's explicit API approach makes more sense for us than a blackbox transparently intercepting our traffic. plus, these meshes were too cumbersome to setup.