Yesterday I tested decentralized static file storage on my website.
The initial configuration of this Decentralize blog featured two centralized services:
Amazon Web Services’ S3 + Cloudfront for Content Delivery Network (CDN) storage and delivery of my site images, and backups
Cloudflare for SSL, front-end caching and web security
There are certainly plenty of decentralized storage opportunities out there, but given that I’m walking through a decentralized site deployment using readily-available market tools rather than building a site from scratch, integration of many of the options is out of scope currently.
No sooner had my blog launched, than I was pinged about an innovative application that bridges the gap for non-coders: Filebase has built an S3-modeled liaison service on which you can create IAM-style access keys and an endpoint that will speak “S3” to your S3-compatible WordPress plugins. You have the option of using Storj or Skynet (Siacoin) for the storage and file delivery services.
Ok, this is not exactly a Content Delivery Network as it lacks caching and edge delivery features, but it is decentralized and in pursuit of “decentralizing all the things”, I’m giving it a shot.
The Load Test
Not a blind shot, mind you, as I want to keep track of the costs of decentralization: not just in terms of monetary cost (Filebase gives you your first 5 GB for free), but in terms of performance costs.
So before I cut over my site from the AWS CDN, I took a Blazemeter reading. See this blog post about what that is.
Then I cut over my site to the Filebase/Skynet solution following these steps:
Made a dev copy of the site using host file redirect and an Updraft restore
Removed WP Offload Media plugin and installed Media Cloud plugin (important not to try to activate these two at the same time)
Re-uploaded and re-referenced the images in my blog posts–it’s easy in WordPress as it tells you the name of your old reference, and you can just search your media library to replace with the same image. Media Cloud has an “import images from WP Offload Media” feature but that didn’t work for me.
Re-backed-up and redeployed my site with the new backup
After cutover, I took another reading.
The findings tell me two things:
Using Filebase/Skynet as a raw CDN is about 50% as fast as using Amazon AWS/Cloudfront CDN. This is to be expected, as Skynet doesn’t bill itself as a CDN, and there’s no caching.
The Filebase/Skynet solution renders the site virtually unavailable at the higher reaches of the load test, and starts generating errors. I believe this to be a direct result of the speed thing in #1: caching assists a site in handling load on an exponential curve, as with more traffic the more objects are cached and the more cache hits there are relative to website hits. Again, this is the lack of Filebase/Skynet being a CDN.
So is this test a failure? Not by any means! I’m stoked to be giving a decentralized solution a good run, and the test isn’t over! Second only to speed, the long-term security and availability of the solution is also important to overall use case, and the only way to test that is time. So I’ll be using this solution for the foreseeable future.