Rersources on building distributed systems using Clojure?

I want resources on building distributed systems with Clojure (preferably practical ones), which supposedly should be good with that. Unfortunately I’ve found only few material on that topic (and the only book I found that goes on that is a non-published edition of Clojure in Action):

1 Like

Do you have more information on what type of system you are trying to build?

@mjmeintjes No. I’m just learning really, so any resource on the topic is good. I was initially doing some remote invocation (rpc, rmi), but it seems Clojure people don’t do that much in the wild. It is mostly indirect communication. Quoting Stuart Sierra

  1. Direct connections between nodes, e.g. HTTP, raw sockets, HornetQ
  2. Message broker, e.g. ActiveMQ, RabbitMQ
  3. Distributed shared memory, e.g. ZooKeeper, Hazelcast, memcached
  4. Distributed job control, e.g. Hadoop, Storm

So anything that covers those communication paradigms and, fault tolerance, etc, in Clojure would be good.

My people (incl the stuff I’m working on) build on top of Java libraries and/or infrastructure-level tooling, like Consul or Zookeeper. You really do not want to reimplement any of this stuff yourself for production use.

Also a “distributed system” can many things - I’m working on an application composed of 10+ services, running in AWS on top of ECS + Fargate. It’s as distributed as it gets I suppose, we do RPC over HTTP+JSON/Avro plus we have lots of async communication.
But, to keep things simple we rely on RabbitMQ and AWS ALB to distribute traffic between various pieces.

Gene Kim’s interview with Scott Havens on “The Idealcast” is right on the topic and is a very interesting listen:
https://itrevolution.com/the-idealcast-episode-23/

1 Like