
Show HN: Parapet – A purely functional library to build distributed systems - dmgcodevil
http://parapet.io
======
vemv
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.

~~~
hderms
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?

~~~
vemv
Can't see the problem in principle - all kinds of storage (DBs, S3, Redis)
seem mockable.

------
linux2647
Looks like a library for Scala and other JVM languages?

~~~
theCodeStig
Yes

------
tunesmith
Is this an alternative to something like Akka Cluster Sharding and
Persistence/Distributed-Data?

~~~
dmgcodevil
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.

------
thekhatribharat
How does this compare to Metaparticle
([https://metaparticle.io/about/](https://metaparticle.io/about/))?

~~~
dmgcodevil
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.

