In my career, I’ve had the fortune to use and learn most of the big configuration management frameworks: CFEngine, Puppet, Ansible, Chef, and now SaltStack. Terraform has fit a nice corner of the market for resource creation, though if you live entirely in AWS, there is CloudFormation. I’m sure Google has its own set of tools as well.
Being relatively new to Clojure and finally finding a job where it’s use is embraced and encouraged, I’m curious what types of Clojure technologies/libraries/frameworks that people have been using to manage their infrastructure? I see that Pallet is a thing, though according to its GitHub Project, there hasn’t been much in the way of updates lately.
With the release and announcement of Cognitect’s aws-api, I’m intrigued to find out if people are using it for managing their AWS resources. One of my projects at my new position is to build out an AWS API Gateway to help our developers break a monolithic application into a more microservice suite. As a fan of Infrastructure as Code and empowering developers to have a hand in managing their projects, what approaches do you suggest?
Chiming in to say that I’d really like to see some recommendations on this. I’ve tried to learn operations and how to manage code in production the last year, and I feel that there’s recommendations all over the place, and not really that simple to navigate.
- Cognitect creates Datomic Ions, which does streamline deployment
- I’ve had success with Dokku.
- Install Dokku on your own VPS, and point your domain to it, and it can manage running your servers on it. It uses Docker internally, and builds Docker images based on Heroku buildpacks, which support Clojure natively. So I can
git push dokku master, and the rest is handled for me.
- I like Dokku’s balance between a white box and a black box. You can log into your container if you want, and you could set up a production REPL with some port forwarding and SSH tunneling.
- Considerations that may vary in your case: I was looking for something simple that wouldn’t rack me up on a huge AWS bill. Learning to use a cloud provider does take time, which I haven’t put down yet. On costs, you can do this on a $5/month DigitalOcean droplet. You’ll have to pay more when 1 GB RAM no longer is enough.
This is exactly the type of feedback I was looking for! Thank you so much!
We have been using Pulumi and it’s been great. A big step up from Terraform and CloudFormation IMO.
What are your views about Flynn?
@kenny, could you go into more detail about your experiences with Pulumi? How well does it work for Clojure/ClojureScript based projects?
@pesterhazy We have several different services all running in AWS. Everything is deployed with a
deploy script that takes an environment name (i.e.
prod, etc.) and ensures the environment is up and running according to some configuration set in an EDN file. Pulumi makes this easy with the concept of Stacks.
No friction with Clojure/ClojureScript projects. All our services are built as uberjars that run in containers. Pulumi has a nice integration with Docker which makes deployment easy.
The frontend is written in CLJS and deployed automatically via CI to Netlify.
From a quick review of the docs, it looks like Flynn can manage multiple servers, not only one. And there’s a local API – with Dokku you’ll have to SSH into your host and setup new sites from there.
If I would choose again today, I’d definitely consider Flynn. But so far, Docker has served my needs well.
This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.