And you haven't addressed the issue that whoever is performing the role of DevOps on this project must know Go.
Unfortunately, you missed it too.
Which is not something that one professional needs to be in order to have to perform some duties that fall within the role of DevOps.
I am, first and foremost, an application developer using Python and JavaScript. But I also have extensive experience:
- setting up Docker Swarm clusters
- managing cloud infrastructure with Terraform
- configuring deployments with Ansible
- setting up observability on Prometheus/Loki/Grafana stack
- putting up together CI servers for my team
- setting up backup/restore infrastructure.
- deploying and managing internal OSS tools for a dev/data team: Gitea, Taiga, Redash, Apache Airflow, Baserow...
These are all tasks that could be part of a "DevOps Engineer" job description, but if you tell me that "to work with a primarily Golang dev team you need to pick up Golang", I'd be assuming that you are not looking primarily for a DevOps Engineer, but a Go Developer who can do DevOps. And because I am not a Go Developer, you'd be putting my whole application on the bottom of the Stack.
I've never seen these tools used in this capacity, especially nix.
From a Nix user's perspective, this leaves a lot to be desired, because tools like Terraform are much less reliable than Nix tools that target local machines, and their management of, say, a VPC, is much less comprehensive than NixOS' management of an individual operating system. And they're slow as hell. But for the most part these issues are inherited from the APIs cloud providers expose, which don't meaningfully or uniformly support immutability.
--
Anyway, for the specific case of "deploying to hetzner":
- ansible has a whole collection of modules for hetzner: https://docs.ansible.com/ansible/latest/collections/hetzner/...
- For Nix, there is NixOps
- if no one in the team wants to learn any of that, Hetzner provides a CLI to interact with their whole cloud.
To repeat: the last thing I'd want from an application is to have its own deployment system.