For SOA in App Engine, I would look at https://cloud.google.com/appengine/docs/python/microservices-on-app-engine .
In GAE, people use either completely different projects, or different βmodulesβ within the project, which are services, and they can have different βversionsβ for things like AB testing and easier rollbacks.
The module and its different versions have separate URLs and say HTTP.
Using modules means that you get a common global database, you should remember that do not structure things in such a way that you end up with a β common database architecture β, for example, each service library should be the only way to access the service data (try not get to the level of the http / data access interface directly into the services database, as you can).
The same goes for other things, such as task queues, you will have the opportunity for modules to use each other's queues, and you should be vigilant and use different namespaces for each module queue.
with Heroku, I assume that you can have a similar choice using completely different Heroku projects that use a common library that is configured with environment variables to talk to another joint heroku project with different code or one big heroku project. Heroku should be http://12factor.net/ pretty strong and well configured to use other peoples' microservers with add-ons .
source share