I really like the concept of a fully API/CLI-driven IaaS platform. This looks to function similar to platforms such as Heroku which allow you to build applications through the command line. My only concern with the way you have built it is the 28-day limit which others have asked about but I still don't understand why it is there as well as the prices for the VPS servers not being visible, or at the very least I could not find them. If I may ask, are these servers built on top of another platform, and if so which? There seem to be quite many different locations that I don't think you would have set up yourself to host the servers on which these VPSs are run. I would like to know about the reliability and uptime of these servers.
Thank you for your reply.
I guess in that way it is like Heroku but this is a couple layers lower, providing just the infrastructure and nothing like a Python app abstraction layer. Of course you could build that on top of SporeStack. I wanted to start with servers as the base layer and build from there.
The 28 day limit is intentional. I've designed it to be ephemeral by default, which is more of a modern practice and takes some getting used to. For the most part rather than upgrading the same server over and over, you'd just replace it with another. This has some advantages on my end as well.
The easiest way to see the price is to just try and spawn a server and see how many Bitcoins it requests.
https://launch.sporestack.com/ shows it a bit better, but masks the flavors from you. You can guess the cost by looking here:
https://sporestack.com/node/optionsThere's a base_satoshis_per_day. There's a random amount added onto that of 1-10,000 Satoshis that's used for identifying your payment. It's a very unusual system but you can see how it works here:
https://github.com/teran-mckinney/bitcoinacceptor-pythonYes, currently all of the servers are created on Vultr. They accept Bitcoin as well, although I think you have to provide a credit card. They are great to work with. SporeStack adds an anonymous layer and I tend to prefer my API/tooling on top of it. Using Vultr directly is cheaper.
If you want a very traditional VPS and don't mind Vultr knowing who you are, they are a pretty good bet.
That said, you can "topup" your servers with SporeStack. There's a topup command so you can topup past the 28 day mark. Now down the road that may fail for some reasons. Say I start hosting these myself and there's a critical patch I need to apply to the host, say some security vulnerability. As a host you have two options: Take everyone down unexpectedly, live migrate to another host (more on that later), or let all VMs expire from the machine. So in that case I would mark the host to not have new servers built there and to not allow renewals. Once the servers expire (at very worst, 28 days from then), then I can patch it and restart it. Or say the server has to be moved from one datacenter or another, the same applies. You are going to have some unexpected downtime with public clouds unless they employ a lot of behind the scenes live migration. Which is doable but tricky to pull off, especially without any incidents at all. Some people do manage it well and I've never been a fan of it. In my mind, too many moving parts and there are cases where it doesn't work at all, if the host is degraded enough.
I would say the reliability of Vultr is about what I expect normally. Maybe a restart of a VM due to some host issue, once per 12 VM months? Maybe a bit more than that, just kind of a number I threw together. Occasionally there are boostrap issues where a VM does not boot at all the first time, maybe 1 in 80 or so, I'm not sure.
In general, servers will always fail so it's best to make a completely redundant architecture. Say you get to 99.99% reliability per server, adding another makes it almost improbable that you'll be totally down. Whereas adding more nines gets to be quite expensive.
In the future I may add more providers or try to host these myself. But in those cases the servers will only come up with iPXE -- different providers with stock images will just vary much too much and iPXE is probably the best way to make it more of a uniform platform.
Here's an example using self-renewing:
https://github.com/sporestack/launch.sporestack.comAnd my blog replaces itself every week:
https://github.com/teran-mckinney/staticator/I also have an example doing self-renewing and self-propagating:
http://go-beyond.org/post/autonomous-crowd-funded-tor-relays/Those examples are automated and work by sending Bitcoin to a new wallet that the servers use themselves. You an also watch for when the server is about to explore locally and run sporestack topup.
I hope this answers your questions. Let me know if you are curious about anything else.