When I try to enable billing in app engine for using blob store, I found a notice for Minimum Spend $2.10 Per Week.
The Minimum spend subtotal is in support of our new pricing model. The new model requires that you spend at least $2.10/week. This subtotal indicates the value beyond your other spend that we need to add to your contract. To make the transition to the new model smoother we are beginning to account for this minimum when we authorize new budget changes. Please note that you will not be charged for the minimum spend until our new model takes effect.
I search online and found no one ask about it. I use app engine just for a school assignment, so the usage won't be excess free quota. So, Must I pay $2.10 per week even I do not excess free quota? It sounds unreasonable.
As of April 2013, "We’re happy to announce that billing-enabled applications will no longer be required to spend a minimum of $2.10 per week. This means that you can enable billing for a free tier application and continue running within the free tier without concern that a spike in traffic will terminate serving (note that you can always specify a daily dollar budget). The minimum spend was originally intended to prevent abuse and ensure that we can offer a stable, reliable system with a free tier. We have determined that we can continue to support the free tier, without relying on the minimum spend. So, goodbye $2.10!"
Google has removed the $2.10/week for billing-enabled application from now onwards. You can enable billing for a free tier application and continue running within the free tier without concern that a spike in traffic will terminate serving.
http://googleappengine.blogspot.com/2013/04/app-engine-177-released.html
I enabled billing because I needed to add Google Cloud SQL. The notice said that minimal Cloud SQL was free for now. We're still in early development and aren't using any resources, so we're not over the quota for anything. I don't think I was ever advised by any page that I'd be billed even if under the free thresholds. In fact, I think one of the pages explicitly said I would not be.
It really isn't a lot of money. Probably not even if you add all the users who have been deceptively billed together, so it probably won't attract any lawyers. But unless I missed some notice (and even if I did if that notice was intentionally hidden) this is legally wrong, as well as ethically so.
It appears that their "new" system hasn't gone into effect yet so I would go ahead and use it. Besides, $2/week compared to the $150/book that I just spend isn't that bad. =/
As for enabling billing it appears that unless you need the new (per 1.5.3 version) unlimited blobstore then you should be fine with the free limits.
Related
I am confused... Probably because I am not very smart.
As I understand it:
1. Free Trial gives certain allowance(300 USD) to be used up in 60 days.
2. Free Quota gives daily allowance of free usage to (all?) app engine resources.
Did I understand these two things correctly? What is the relationship between these? Is free quota still being offered? Are there dependencies between these two(if I sign up for free trial, would I lose free quota after the trial ends in 60 days)?
Yes, you got them right. They aren't really related.
The free quotas are still offered. They don't expire and they apply regardless if the app is in the free trial or not. They may get revised now and then, though. From Billable limits and safety limits:
Free quotas: Every application gets an amount of each resource for free. Free quotas can only be exceeded by paid applications, up to the
application's spending limit or the safety limit, whichever applies
first.
The free trial has a limited lifespan and simply covers the billed costs of the paid apps (during that limited lifetime) up to that 300 USD amount.
I have a google app engine application that uses the cloud datastore. My application usage is increasing, I cannot maintain it as “free” since I am paying
for the read/write operations to the datastore
the storage of data in the cloud
instance hours
I plan to charge “by the drink.” In other words, as I am charged for application usage, I will pass on that charge on to my clients. Before developing my own solution to do this, I realize that there must be countless others who have solved this problem. If so, what technique(s) have you employed?
Thank you in advance for your suggestions.
Unfortunately there is no silver bullet for this situation. Be advised, unless you really think this through keeping track of your users consumption might end up costing as much as the actual usage.
Without knowing anything else about your app its hard to help but my advice would be to use appstats to figure out the actual cost of a given service and charge the user per time accessed.
Most users do not like (actually, hate) to be charged for something they (a) do not understand, and (b) have no control over. If a phone company tells its customers to go ahead and use their service without telling them how much - exactly - they are going to pay, it will lose all customers in no time. How are you going to explain read/write datastore costs to your users, with indexed properties and all? How about query costs and instance hours? It's a difficult task even if all of your customers are software engineers.
I recommend charging users for something they understand, like creating a free and a premium version of your app with additional features, or charging per game, or per document processed (you did not tell us what your app is doing), etc.
I'm doing a prototype backend and in the near future I expect little traffic but while testing I consumed all my 300$ free trail.
How can I configure my app to consume the least possible resources? I need things like limiting the number of instances to 1, using a cheap machine, sleep whenever possible, I've read something about Client vs Backend intances.
With time I'll learn the config that best suits me, but now I need the CHEAPEST config to get going.
BTW: I am using managed-vms with Dart.
EDIT
I've been recommended to configure my app.yaml file, what options would you recommend to confront this issue?
There are two train of thought for your issue.
1) Optimization of code: This is very difficult for us as we are not privy to your App's usage and client-base and architecture. In general, it depends on what Google App Engine product you use the most, for example: Datastore API call (fetch, write, delete... etc...), BigQuery and Cloud SQL. Even after optimization, you can still incur a lot of cost depending on traffic.
2) Enforcing cheap operation: This is easier and I think this is what you want. You can manually enforce a daily budget (in your billing setup page) so the App never cost more than a certain amount per day. You can also artificially lower the maximum amount of idling instances to 0 and use the smallest instance possible (F1 for frontend).
For pricing details see this article - https://cloud.google.com/appengine/pricing#Billable_Resource_Unit_Costs
If you use managed VM -- you'll be billed for Compute Engine Instance prices, not for App Engine Instances, and, as I know, the minimum possible instance to use as Managed VM is "g1-small" which costs you $0.023 per hour full sustained usage (if it will be turned on all month), so you minimum bill will be 0.023 * 24 * 30 = $16.56 only for instance hours. Excluding disk and traffic. With minimum amount of datastore operations you may stay on free quota.
Every application consumes resources differently. To minimize your cost, you need to know what resources used the majority of your expenses and go from there.
If it is spent on extra instances that were just sitting there - then trim the number of instances to the minimum required and use a lower class instance. If you are seeing a lot of expense on datastore calls - then look at optimizing your entities and take advantage of memcache.
Lowest Cost for a simple app:
Use App Engine Standard. It scales to zero instances, so will not cost anything if there is no traffic. With App Engine Flex you will pay for the instance hours and the Flex (GCE) instances are bigger.
Use autoscaling with max instances, F1 instance class:
With autoscaling you do not need to guess how many instances you need. F1 are the smallest instances. Set the max instances in case you get DoS'd or more traffic than you can afford.
Stop Instances:
You can stop the App Engine versions when you do not expect the app to be used. The will be no charge for instance hours for either Standard or Flex. For Flex there will be disk charges. The app will be ready to go when you need it again.
App Engine Version Cleanup:
Versions are easy to create and harder to remove. Here is a post on project cleanup. See this post on App Engine cleanup
https://medium.com/google-cloud/app-engine-project-cleanup-9647296e796a
We are building a service that utilizes the Gmail API. In order to understand our costs as we scale, I would like to know how much it costs to use the Gmail API. I've followed the instructions at https://developers.google.com/gmail/api/v1/reference/quota through to the point at which it says:
If you have enabled billing for your project [we have], clicking Quota
takes you to a page where you can view and change quota-related
settings.
The only option on that page for changing our daily quota is to "Apply for higher quota"; however, clicking that opens a window that says:
Please be sure to review the existing quota limits to confirm you need
more than the daily default.... If you simply have a question on limits, please ask it on the Stack
Overflow forum
Thus, I am asking here: what is the cost per API unit when one's needs exceed the daily free quota?
The API isn't marked as "billable" meaning it's free up to a limit and there's no set/published pricing above that. If you are using your existing quota or are getting close and want to ask for more, I think best place is to ask on the quota request form. It's quite reasonable to ask for quota to provision for a few quarters of growth IMO and if you're migrating from some other API (e.g. IMAP, atom feed, DOM hacking) then obviously that should be quite reasonable to provision all that beforehand as well.
I looked in the documentation, but I did not find anything.
Suppose you have a small app, which during some months fits in the free app quota, and some other months it does not.
Since billing is per month, is there a way to configure my application so that billing is by default disabled and automatically activated only during the months when I need to use more resources than those under the free quota?
The question may sound silly, but I'm trying to understand if I can optimize the budget for extremely small realities, such as local no-profit organizations. I'd prefer to invest 9$ in resources when needed and not in the monthly fee when there's no traffic.
No, there's no way to programmatically or automatically enable and disable billing.
Why do you want to do this? You can always enable billing and the free app quota are still available to you free. They only charge you for any usage exceeding the free quota! Plus you can set a daily budget limit. You can just set it to $1 to start with.
You can use Google's Billing API to enable and disable billing automatically:
https://cloud.google.com/billing/v1/requests