I think a combination of hardware and cloud services could give you a cheap way to run pretty much anything you want. I will try to share what I am using :)
Tooling
For CI I bought a cheap Intel NUC that just sits on my table and runs Drone, Node-RED, my testing environment server.
1. Here from Drone I get all the test pipelines and most of my executable/docker image builds at a much better speed than I would get with Travis, CircleCI and so on. My desktop runs a Drone agent too, so never waiting too long for new builds.
2. Node-RED is used for various automation tasks such as healthchecks for all my services with rate-limits, a bit more complex checks (rather than just simple /health or /status endpoint ping), mailgun webhook handling, github brew formula updates and so on. It does control my TV too :D
3. I also run some tasks on Google Cloud builder which is free and fast.
4. Uptimerobot is also used (http://uptimerobot.com/) as it provides free, second opinion whether my services are down or not.
Compute
For compute I opted for GKE (at the time it was the best managed k8s you can get (and it's still probably is)) on Google Cloud with 3 1vCPU 3.75GB RAM VMs. That gives me plenty of resources to run my stack and any additional side-side-project on it. I tend to code in Go so I don't need much resources. I use managed postgres as a database so I can sleep peacefully.
For additional services I ended up choosing Vultr (https://www.vultr.com/) as they have many regions available and their pricing is really good. There is a nice, non-official CLI and so far their uptime was quite good (few issues but nothing major).
It really depends how much time you want to spend on ops. If you are fine with doing quite a bit of ops, go with Vultr or any other cheaper cloud provider. If you want to spend more time on features, go with GKE and fully automate deployment. Git push -> Google Cloud Builder -> Keel (https://keel.sh) -> new version deployed :)
Tooling
For CI I bought a cheap Intel NUC that just sits on my table and runs Drone, Node-RED, my testing environment server.
1. Here from Drone I get all the test pipelines and most of my executable/docker image builds at a much better speed than I would get with Travis, CircleCI and so on. My desktop runs a Drone agent too, so never waiting too long for new builds. 2. Node-RED is used for various automation tasks such as healthchecks for all my services with rate-limits, a bit more complex checks (rather than just simple /health or /status endpoint ping), mailgun webhook handling, github brew formula updates and so on. It does control my TV too :D 3. I also run some tasks on Google Cloud builder which is free and fast. 4. Uptimerobot is also used (http://uptimerobot.com/) as it provides free, second opinion whether my services are down or not.
Compute
For compute I opted for GKE (at the time it was the best managed k8s you can get (and it's still probably is)) on Google Cloud with 3 1vCPU 3.75GB RAM VMs. That gives me plenty of resources to run my stack and any additional side-side-project on it. I tend to code in Go so I don't need much resources. I use managed postgres as a database so I can sleep peacefully.
For additional services I ended up choosing Vultr (https://www.vultr.com/) as they have many regions available and their pricing is really good. There is a nice, non-official CLI and so far their uptime was quite good (few issues but nothing major).
It really depends how much time you want to spend on ops. If you are fine with doing quite a bit of ops, go with Vultr or any other cheaper cloud provider. If you want to spend more time on features, go with GKE and fully automate deployment. Git push -> Google Cloud Builder -> Keel (https://keel.sh) -> new version deployed :)