Any ideas for isolated dev environments with Datomic Cloud?

I’m the lead dev on a project with several other inexperienced devs. I really want to use Datomic Cloud, but I’m struggling to find a decent and inexpensive setup to let each dev have a logically isolated development environment.

One idea is that each dev could have their own Solo Topology. That’s a fair bit of setup for each person, especially given their experience level, but more importantly it would get fairly expensive even at the $1/day/dev mark. (Plus my devs are not full-time: more like 5–10 hours per week, which exacerbates both of these downsides.)

Another idea: create an EC2 keypair for each person to access the bastion for a single Solo Topology that we all share, and maintain some discipline around each using a separate :db-name. That seems like some work to manage all the keypairs and maintain the discipline, but maybe this is the best option? Similarly, we could also all share a single keypair, which has security implications of course.

I also thought of using Datomic Free Edition, e.g. using this Docker image and maybe Docker Compose. But then I learned that Free Edition doesn’t support the Client API, so we’d have to maintain parallel code paths: using the Peer API in the dev environment but the Client API in the prod environment, which sounds pretty messy.

Has anybody been down this road? What did you do? Any advice?

1 Like

Hi Jeff. We have been using datomic-client-memdb to facilitate local development with Cloud. It’s a small library that wraps Datomic Free in-memory databases with the Datomic Client protocols. To my knowledge, several other people are using this library, or a related, custom implementation, for a similar purpose.

I wrote the library so let me know if you have any questions.

4 Likes

That looks like just what I need. Thanks very much!

I’d love for Datomic to officially support an in memory workflow for cloud

1 Like

Hi, I tried to use the library however there is no support for tupleAttrs because of the version of the datomic dependency used in the implementation.

I think the datomic-free dependencies does not have support for this and you can only get those at newer versions of datomic-pro. There’s a related question opened about the out-phasing of datomic-free here. I would need to sort that out before migrating to use this library.

Thanks!