对于 App Engine 中的 SOA,我会查看https://cloud.google.com/appengine/docs/python/microservices-on-app-engine。
在 GAE 中,人们使用完全不同的项目或项目中的不同“模块”作为服务,这些可以具有不同的“版本”,例如 AB 测试和更容易的回滚。
一个模块及其不同的版本都有单独的 url 并使用 HTTP。
使用模块确实意味着您最终会获得一个共享的全局数据库,您必须记住不要以最终获得“共享数据库架构”的方式构建事物,例如,每个服务库都应该是实现这一目标的唯一方法服务数据(尽量不要通过 http 接口/数据访问层直接进入服务数据库,因为您将能够做到)。
对于任务队列等其他事物也是如此,您将能够让模块使用彼此的队列,并且您应该保持警惕并为每个模块队列使用不同的命名空间。
对于 Heroku,我想你可以有一个类似的选择,要么使用完全不同的 Heroku 项目,这些项目使用一个配置了环境变量的共享库,以与另一个共享的 Heroku 项目与其他代码进行对话,或者一个大的 Heroku 项目。Heroku 相当强烈地遵循http://12factor.net/并且很好地设置为使用其他人的微服务和插件。