One specific thing I think FP distributed-system frameworks could bring is instantaneous, deterministic testing.
e.g. I have N microservices, they communicate via IO (which means slow/brittle tests) but the framework abstracts over that, so I can run the whole system test suite under a second, because all IO (messaging, DB, concurrency) can be replaced with an in-memory implementation.
Interestingly, one could also inject faults to those IO mocks, and test how the system respond to that.
I believe FP is a prerequisite for meeting those goals, because otherwise having impure IO all over the place is hard (if not impossible) to mock out.
In theory, wherever Akka is used Parapet can be used instead. It's just not that big as Akka. Parapet provides a messaging module for interprocess communication based on ZMQ.
as I can see Metaparticle is a tool specifically built for Kubernetes and uses its API underhood. Parapet can be extended to support Kubernetes ecosystem how it was done for ZMQ. Parapet can be integrated with Metaparticle, so that you can run the same distributed algorithms written in Patapet in a Kubernetes cluster.
One specific thing I think FP distributed-system frameworks could bring is instantaneous, deterministic testing.
e.g. I have N microservices, they communicate via IO (which means slow/brittle tests) but the framework abstracts over that, so I can run the whole system test suite under a second, because all IO (messaging, DB, concurrency) can be replaced with an in-memory implementation.
Interestingly, one could also inject faults to those IO mocks, and test how the system respond to that.
I believe FP is a prerequisite for meeting those goals, because otherwise having impure IO all over the place is hard (if not impossible) to mock out.
What you describe seems similar to Akka's multi node test kit.
I agree, but what about when the persistent shared state ends up actually being most of what needs to be tested in a distributed system?
Can't see the problem in principle - all kinds of storage (DBs, S3, Redis) seem mockable.
Yes, that's certainly possible. Also, you can choose between different effect systems, e.g.: Cats Effect, Monix and Scalaz ZIO
Looks like a library for Scala and other JVM languages?
Yes
Is this an alternative to something like Akka Cluster Sharding and Persistence/Distributed-Data?
In theory, wherever Akka is used Parapet can be used instead. It's just not that big as Akka. Parapet provides a messaging module for interprocess communication based on ZMQ.
How does this compare to Metaparticle (https://metaparticle.io/about/)?
as I can see Metaparticle is a tool specifically built for Kubernetes and uses its API underhood. Parapet can be extended to support Kubernetes ecosystem how it was done for ZMQ. Parapet can be integrated with Metaparticle, so that you can run the same distributed algorithms written in Patapet in a Kubernetes cluster.