--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-appengine+unsubscribe@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-appengine/CABfTu2D1MM%2BTUdgGR_dnaeYj%3D3ECTe7F94LpktyydpYWPR3e0Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Hello Joshua,
The necessity to backup data in your App Engine environment is not overly intense. A data protection policy is in place, covering backups and all kind of risks to data in the cloud. If you backup your data, you do what has already been done for you in a thorough and systematic manner.
There is still a legitimate need to control your data and download it, and tools are in place to backup and restore . If you would like to set up an object versioning policy for your app environment, cloud storage buckets allow that.
Each tool individually offers ways to backup data. The backup process does not include values stored in Blobstore or Cloud Storage.
I hope this helps. Cheers!
Hello Joshua,
The necessity to backup data in your App Engine environment is not overly intense. A data protection policy is in place, covering backups and all kind of risks to data in the cloud. If you backup your data, you do what has already been done for you in a thorough and systematic manner.
There is still a legitimate need to control your data and download it, and tools are in place to backup and restore . If you would like to set up an object versioning policy for your app environment, cloud storage buckets allow that.
Each tool individually offers ways to backup data.
The backup process does not include values stored in Blobstore or Cloud Storage.
I hope this helps. Cheers!
Hello Joshua,
Leaving data in the Blobstore and hoping for the best, as you say, is not such an unreasonable policy: as mentioned, there is a standards-validated data protection policy in place, covering backups and all kind of risks to data in the cloud, including what you mention about hacker interference.
Your view on versioning and team member error seems to be influenced by a code development environment mindset. GAE is not specifically built for developing code on-line, you may refer to specialized third-party tools for that, for instance git. These tools take care of versioning, and are able to revert data to a healthy previous state in case of team-member/human error. There are in fact versioning features offered for the instances running in the cloud; please refer to the “Versioning and instances” paragraph in the overview of the app engine.
One can find a Backing up or restoring data chapter on the Managing Datastore from the Console page.
You are perfectly right about the Blobstore, the backup process does not include values stored in Blobstore or Cloud Storage. Applications do not create or modify blob data directly; instead, blobs are created indirectly, by a submitted web form or other HTTP POST request. This means data is not modified within Blobstore workings, so it maintains identity with the original data uploaded by the user. There is no immediate need to backup cloud data that is already stored in identical state in your system.
Some tools may not yet work 100% as expected. You already submitted bugs for that, and we hope these issues are going to be address within reasonable timeframes.
In short, the difference in attitude towards accidental deletion or overwrite originates in our confidence in the highest standards implemented by our data protection policy.
Hello Joshua,
Leaving data in the Blobstore and hoping for the best, as you say, is not such an unreasonable policy: as mentioned, there is a standards-validated data protection policy in place, covering backups and all kind of risks to data in the cloud, including what you mention about hacker interference.

Your view on versioning and team member error seems to be influenced by a code development environment mindset. GAE is not specifically built for developing code on-line, you may refer to specialized third-party tools for that, for instance git.
These tools take care of versioning, and are able to revert data to a healthy previous state in case of team-member/human error.
There are in fact versioning features offered for the instances running in the cloud; please refer to the “Versioning and instances” paragraph in the overview of the app engine.
One can find a Backing up or restoring data chapter on the Managing Datastore from the Console page.
You are perfectly right about the Blobstore, the backup process does not include values stored in Blobstore or Cloud Storage. Applications do not create or modify blob data directly; instead, blobs are created indirectly, by a submitted web form or other HTTP POST request. This means data is not modified within Blobstore workings, so it maintains identity with the original data uploaded by the user. There is no immediate need to backup cloud data that is already stored in identical state in your system.
Some tools may not yet work 100% as expected. You already submitted bugs for that, and we hope these issues are going to be address within reasonable timeframes.
In short, the difference in attitude towards accidental deletion or overwrite originates in our confidence in the highest standards implemented by our data protection policy.
Worst case: We've discussed writing something ourselves multiple times, that would scan our Datastore and writes entities out in a more useful way, but we haven't prioritized it.
Worst case: We've discussed writing something ourselves multiple times, that would scan our Datastore and writes entities out in a more useful way, but we haven't prioritized it.Evan, can you explain why this is not a high priority? Do you see accidental deletion as unlikely?
Hello Joshua,
Protecting against human error is important, we all agree on that. You mention your production project along with test projects. The platform allows granting various levels of access to team members; IAM lets you adopt the security principle of least privilege, so you grant only the necessary access to your resources. Only programmers and team members can access test projects.
Access to data from the production process is granted to users in various forms, and is controlled by your app’s security features. Users have the data access rights you grant them.
One may notice that developer team members usually have a different level of expertise with data, and are able to control risks to a higher extent than an app user. They are generally considered more reliable.
It may be worth mentioning that automated backups are possible and can be scheduled, and that Cloud SQL allows you to enable binary logging.
Given the nature of distributed systems, and the complexity required in engineering them, and the backup tools already provided, it seems obvious that the most likely error states wrt data loss will be bugged code or devops error. Effectively, managed data removes the traditional data loss mechanisms, so it makes sense for GAE to provide supportive tools in this space.
I'd be interested if anyone has used the data store versioning features - do they scale and perform well in the real world? I've not heard anyone else even acknowledge them let alone that they use them. I'd love to get a recommendation on whether it's worth using.
Re: deleting data - historically I've favored using a delete flag on important entities, and filtering those out in queries. This was pragmatic and also relatively favored by the platform before the delete costs changed.
We do this to defend against programmer error or attack, e.g. If some programmatic process were to delete or mangle our whole Datastore.
The major downside of this aporozch is that is is insanely expensive. We have to read every Datastore instance every day, which takes a lot of Read and a lot of Instance Hours. For a modest sized datastore this costs us several hundred dollars per month. I really wish there was a better approach