Datomic cloud "Fulfillment Options"

Hello,

Just getting started with datomic clould/ions, for some projects (I’m new to datomic & aws)

Wondering what are the options for configuring production services and if there’s any middle ground between solo & production. As a possible new “Fulfillment Option” or a recipe for customization.

My main concern is that solo partially fits my requirements but from what I understand it does not have a “Application Load Balancer”.

This means that I can’t have 0 downtime for code deploys an more importantly I’m stuck with pinging lambdas so that the’re wormed up, aws says they will fix the huge cold start for lamda VPC in the future, but from what I understand you’re working on a new feature for API-gateway to call ions directly if there’s a network load balancer available https://www.youtube.com/watch?v=thpzXjmYyGk&feature=youtu.be&t=4088

My current use-cases are:

  1. Develop mini-applications for my company. The apps are relatively small, we’re a python shop and already have substantial bills on aws. I’m pushing for clojure & datomic, because of the developer experience. Solo should be more than enough (3k-10k entities) and not a lot of traffic, but justifying server bills of ~300$ for production setup is pretty hard and solo is pretty limiting without a load balancer, especially if we have a SLA for those mini-projects.

  2. Rewrite my personal projects in clojure + datomic cloud. I’m flipping the bill there with not much profit, mostly developing them to experiment and have a production show-case app for future larger projects. Ex http://www.infodogs.co.uk/ It’s not that big of a project in terms of db size and I try to keep server bills as low as possible. Right now it kinda runs for free on google appengine free quotas.

Not exactly sure how to best go about keeping the server bills low and still getting the datomic experience and using it for all of my projects. So far I’m thinking of:

  1. Having a mono-repo with all my mini-projects on a production setup, having multiple databases and splitting the bill. (messy at best)

  2. Having a production setup for the small apps I develop, changing the auto-scale to 1 instance and on code deploys adding 1 more instance then after deploy and testing scale back to 1 to lower the bill to about 150$ a month. Not exactly sure this would work (docs say 2 or more instances).

  3. Ideally. If datomic cloud would have another option “mini projects” that has the solo setup with load balancer and multiple EC2 instances. Don’t know if there are any technical limitations around this. Noticed that datomic is billed separately, personally would be really happy to pay more for datomic, that’s easy to justify vs having i3.large for projects that don’t need those resources.

I realize these are probably not priority use-cases, really low scale projects and low return of investment for datomic. Just asking because this is where I’m at now, can’t really use datomic on larger projects until I have some proven success & learn it well by doing smaller ones, solo really helps but would really be great if there was another option closer to production or a recipe for adding load balancer to solo.

Thank you :slight_smile:

2 Likes

I would also be interested in a “Production Mini” option.

I’d like:

  • high availability
  • zero downtime for code deploys
  • avoid lambda warm up times

Without paying for:

  • more compute capacity
  • more memory

In the mean time I might go against recommendations and experiment with decreasing production topology from two i3.large instances to t2.small (or some other less expensive instances) and see what happens :slight_smile: If that’s even possible.

1 Like

Running the instances with types other than i3.large or i3.xlarge causes an exception on initialization:

“Msg”: “:datomic.cloud.cluster-node/-main failed: Invalid instance configuration”

The instance crashes, causing CloudFormation (or AutoScaling Group?) to try again. It does this a few times before CloudFormation fails the stack update and runs the rollback (replacing the i3.large instances, again).

Datomic Team: do you have any recommendations for running a more affordable production topology? I’m part of a small startup with low traffic and limit budgets. We love Datomic Cloud+Ions and much prefer the HTTP Direct access. We want it to grow with us but the base production topology cost is hard to stomach especially when our % capacity use is very low.

Hi @adamtait,

Solo is optimized for price, and runs only t3.small. You cannot run other instance types with this topology. The Production topology requires a fast SSD cache, and therefore runs on i3.large or i3.xlarge.

Datomic Team: do you have any recommendations for running a more affordable production topology? I’m part of a small startup with low traffic and limit budgets. We love Datomic Cloud+Ions and much prefer the HTTP Direct access. We want it to grow with us but the base production topology cost is hard to stomach especially when our % capacity use is very low.

We absolutely understand the pinch you’re in. Here are a few options that might work for you for lowering your bill:

  1. Reserved Instances | Datomic
  2. As @claudiua speculated you can indeed scale the production topology from two nodes to 1 via the ASG. This usually has the impact of cutting the bill in half. However, you will be losing HA failover (a feature not present in the Solo topology)

We’re always looking to improve our Datomic Cloud offering and if you have any more feedback about requirements for your use please feel free to open a case with us via support@cognitect.com.

Cheers,
Jaret

1 Like