As for database usage, how do you monitor how much storage the account is using considering the data is spread across multiple tables?
Is there a tool that does all these?
1. you need accurate, timely, and granular monitoring metrics, network is typically the hardest here
2. A quota system and control mechanisms
3. Databases limits are typically record based or you run a DB per customer / chargeable unit
Using VMs rather than Kubernetes makes things easier for you, but then you lose some opportunities for lower cost of goods
Of course, your options will depends on your pricing model and product. This is a large reason a common solution does not exist, another is where you run your services.
For database use, it's better to create separate dB if you want to charge by storage. If the tables are shared, use the (count of rows for customer/ total rows)* total table storage. Ideally this should be possible at tablespace level