I run a little statistics website for World of Warcraft: subcreation.net (source at https://github.com/alcaras/mplus.subcreation.net)
I'm working on updating this site and am wondering how I should re-architect my backend to to minimize costs.
Current architecture is: - Some script queries APIs -- writes data to DB. Ideally rate limited / queues so I am a good citizen an obey api limits. (I am using App Engine Task Queues but these are of course deprecated and not available for Python 3 ... and Cloud Tasks are more work to set up). - Then some script that, when data gathering is complete, generates HTML / JSON files and writes it to somewhere the web server can read it. - Users visit and view HTML pages.
Current set-up: Google App Engine runs tasks to query APIs, write to Datastore, and then output HTML to Cloud Storage. Strangely, egress costs are the highest expense -- on order of $20/month for something like 300 GB outbound (~30k MAU), which seems egregiously high(!) to me.
Not sure as to NoSQL vs SQL -- I seem to be dealing with reasonably structured data but originally opted for DataStore over CloudSQL since DataStore was cheaper.
Wondering how to do this more cost effectively.
1. App Engine + Cloud Firestore + Cloud Storage
This is effectively updating the current architecture, but moving to Python3 and Cloud Firestore. Could write static json to Cloud Storage to enable fancy filtering as well.
2. Shared VPS + Python + MongoD / Sqlite
Not crazy about dealing with server admin, but this seems cheaper, since VPSes seem to have much cheaper egress.
3. AWS? Azure? Other options?
Appreciate any thoughts / ideas :) I am currently leaning toward option #1, but am wondering if exploring #2 would be better from a cost-basis, since my main user facing interaction is static HTML pages (or, if I make the site more interactive) HTML pages with AJAX to static json files.