Reputation: 1254
When you upload a new version to app engine, let's call it '10', you can send requests to this version directly using this url: http://10.myapp.appspot.com
I find it very useful and I made an habit to release my android app pointing to the corresponding server version. So when I upload version 10 to the play store it points to http://10.myapp.appspot.com, the same goes to version 9: http://9.myapp.appspot.com.
Is this correct usage or this feature? What is the best practices regarding Versioning in App Engine?
I'm doing it because I want to maintain backward compatibility, so that if I'm making a change in the server the old clients won't notice it because they are connected to an older version.
I understand it's problematic because all the versions share the same DB as well as problems that could occur when I configure warmup for the default version that doesn't apply to the other versions. So am I making a mistake by using it this way?
Upvotes: 1
Views: 486
Reputation: 8240
Application versions are useful for things like testing new versions before deploying them "live." I would not use it to ensure backward compatibility with you existing clients. Furthermore you can have only limited number of versions per application.
You can have up to ten versions of each application; once you've reached that limit, you'll need to delete existing versions before you can deploy new ones.
Another thing to consider is that some App Engine services (e.g. Datastore) are independent on a particular version but others (e.g. Cron jobs) are tight to a concrete version (usually default version unless specified otherwise).
However, you can have different versions of your application's public interface (REST/SOAP services or whatever you use) so that new features or changes are available only to the respective clients.
Here is an example of dummy REST API using versions.
https://myapp.com/api/v1/questions/10/answers?max=10
https://myapp.com/api/v2/questions/10/latest-10-answers
Upvotes: 1