PaaS中的SOA云可能吗?

gus*_*t1n 6 architecture soa google-app-engine heroku paas

我目前正处于一个新服务云的绘图板,我们正在构建一个面向服务的架构.这个想法是这样的:

  • 10个服务的云.
  • 3个完全不同的业务逻辑层(BL),可以自由地混合和匹配这些服务.
  • BL处理授权和访问管理,服务仅接收和响应.

问题是,如果使用PaaS(最好是Heroku或Google App Engine)进行此设置,主要问题是要有多个非公开的服务,但同时可以从不同的应用程序(BL)访问.

基本上:如何保护服务免受公共访问(最好不使用身份验证和令牌),但同时让我的任何应用程序都可以访问它们?

在此输入图像描述

lee*_*man 1

对于 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/,并且已经做好了使用其他人的微服务与插件的准备。