I’ve been working with Google’s AppEngine and Django templates to see if it is a good platform for developing a new project.
The project requires partitioning data between different domains, meaning that one company’s data is unavailable to another company if more than one company uses the system.
Further, user data may need to be partitioned in some scenarios. For example, one user’s clients may not be accessible to another user even though they are both within the same domain.
I’m unclear how to make this work with the Google platform. For example, the User object, if using the Google infrastructure to manage users, has an id that is guaranteed to remain the same UNLESS OpenId authentication is used.
The documentation reads:
If the email address is associated with a Google account, user_id returns the unique permanent ID of the user, a str. This ID is always the same for the user regardless of whether the user changes her email address.
If the email address is not associated with a Google account, user_id returns None.
Note: If your application constructs the User instance, the API will not set a value for user_id and it returns None.
Therefore, unless all my users have Gmail accounts, it appears the infrastructure is pretty useless if I have to map users to permissions, for example.
I need to look further into this problem. I’m also reading further into the Django docs to see what wisdom they shed on handling user authentication.
Another issue relates to reliability. I am reading a lot about reliability problems with the AppEngine, though it is unclear whether the problems exist in the Business level support environment.
I really like the way the AppEngine integrates with Python, which is the language I’m using. I’m not sure if this is the AppEngine’s initiative, or related to other standards.