A related comment about our costs:
Asking because we use MinIO, and for us (a small online place with a single actually active MinIO server) it's been pretty good + super stable.
For ex: We use SQLAlchemy as the source of truth for our relational database schema, and we use Alembic to manage database schema changes in Python. We even shard our Postgres tables in Python [1]. It fits with my preference to keep this caching logic also in Python, by reading/writing directly to the cache and S3 from the Python app and workers.
[1] https://github.com/sqlalchemy/sqlalchemy/issues/6055#issueco...
edit: Found this https://docs.min.io/docs/minio-gateway-for-s3.html
Awesome! So minio can actually act as a caching proxy for S3. Very cool.
A one man shop with paying customers shouldn't spend time on optimization, unless it's just for fun.
If I'm a customer - I'd rather see more value added functionality, rather than cheaper data storage.
But that is my opinion, hope that your customers appreciate you spending time on this.
In fact, adding another component to optimize the cost is adding another point of failure.
A) you first need to run the service to get any customers
B) this might take long
C) you maybe don't want / can't get VC money at this stage
D) you maybe are not the most advanced dev who can properly utilitize s3 from I/O perspective, getting you to higher costs than possible
E) there might be a time period between introducing the service and getting traction which yields enough feedback, so you can start adding more business features
F) when you are burning your own money, you are more senstive to the cost side - which is not ultimately wrong
Just my 2c
Which ends up being back to - purely cost optimization of the initial cost optimization.
It seems like the whole product is focusing on cost optimization. I suspect that the OP would be better off making money by doing cost optimizations for third parties.
Splitting up the storage and execution between cloud providers was clearly an early cost optimization.
Then this cost optimization was to fix with the result of the previous cost optimization.
Adding more code that has no clear end value to your service* never makes anything more stable. Now OP has to maintain three things, instead of two. It's a classic "look at how smart I am" overengineering.
*- OPs customers definitely give 0 f's if everything is on AWS or split between AWS and DO.
or you could look at it as a tool to help the one-man shop make it through a tight cashflow situation that's coming down the line.
I'm curious if you've tested what it would cost to just host on EC2 (or something potentially even cheaper in AWS like ECS Fargate) with a savings plan. At a glance, it looks like AWS would be cheaper than DO if you can commit to 1-yr reserved instances.
That would seem like an easier (and possibly more effective) way to get around costly AWS outbound data costs compared to running a separate cache and sending data across the internet between cloud providers just to save $200/mo.