Moving
Added 2024-11-17 12:58:10 +0000 UTCI'm moving cloud providers. This sucks. The cloud is great for prototypes, or for projects that have extremely variable demands. The cloud is also notoriously expensive and it is very hard to change providers. The revenue from Patreon has never even come close to covering the running cost.
Digitalocean on the other hand - the provider I've been with for some years now - has never once in all those years adjusted storage costs. SSD storage's prices have very reliably reduced over a decade now, yet Digitalocean is keeping prices steady doing... what exactly? Well, the company has since gone public currently sitting at a smooth 42 P/E with absolutely staggering operating expenses. They're building out their "portfolio" to become the go-to platform for the poor schmucks who do not know how to install a Linux package, but are too proud to host their blog directly at wordpress.com. It's not for me to decide if that is a market niche worth filling, but I don't have to finance their business model.
To keep things simple, this will be a fairly crude operation. To quote the janitor of the dorm I used to live in, who removed four screws when exchanging an air filter and only used three screws to put the contraption back together: "This is not a sübmarine" (He's Saxon. Germans will get it.) In other words: I am not running Paypal. The world will be fine if Tillerinobot doesn't run flawlessly for a bit.
I will try (!) to keep this as smooth as possible. Maybe nobody will notice anything. Probably some people will, possibly many. So to get ahead of some questions, here is the rough plan:
First I will freeze some updates. This will prevent a part of the database from being updated, so I won't have to sync it later. This affects top scores and beatmaps. So Tillerinobot won't know about your latest scores and newest beatmaps.
Then the database will be briefly inaccessible to create a snapshot. This can be done much more elegantly, but y'know... sübmarine. Tillerinobot will probably say something about how I screwed up its wiring. Nevermind that.
I will sync this snapshot to the new location.
Then, again, the database will be briefly inaccessible to create another snapshot. Sübmarine, screwed up wiring. This point will mark the start of the amnesia period, which I will explain later.
I will again sync this snapshot to the new location, but this should be quicker than the previous sync, because part of the database was frozen. The point of this double sync is to reduce the amnesia period.
Once this sync is done, Tillerinobot and all the other parts will be started in the new location. The data in the new location corresponds to a past point in time, so in a sense, the bot will "forget" what happened since the snapshot was taken. This is the end of the amnesia period. For many systems, this would be a catastrophe (again, think: Paypal), but for Tillerinobot it's fine. The bot might give out a recommendation twice, it will forget settings changes, API keys that are created during this time will vanish, that kind of thing.
The entire database is unfrozen. Updates to scores and beatmaps continue.
I will point all domains to the new location. I don't think the API should be interrupted, but who knows what will go wrong...
Done. Once this point has been reached, I am thankful for any reports about irregularities.
I will track this entire thing on Discord (starting here, and here's a current invite). I will try to move the amnesia period to a morning in central Europe on a week day, since this would affect the fewest players. Wish me luck!