在GAE项目/应用程序级别与服务/模块级别实施CI / CD环境的优势?

时间:2017-04-04 22:47:08

标签: google-app-engine

Naming Developer Environments中,Google建议了两种为GAE应用实施不同CI / CD环境的方法

  • 基于同一项目/ app中的不同服务(以前称为模块):
  

如果您选择仅使用创建微服务应用程序   多个服务,您可以为每个服务创建一个App Engine项目   您的环境并相应地命名它们,例如web-app-dev,   web-app-qaweb-app-prod

  • 基于不同的项目/应用程序:
  

或者,如果您选择创建微服务应用程序   通过使用多个项目,您可以实现相同的分离   在环境之间,但您需要使用更多项目,例如   web-app-devweb-app-produser-service-dev和   user-service-prod。您需要使用代码模式来确保这一点   dev项目仅调用其他dev项目和prod项目   项目只调用其他prod个项目。

     

enter image description here

上述文档片段中的措辞似乎表明两种方法大致相同,但两种方法之间至少存在一个显着差异:基于项目/应用程序的方法确保数据隔离,而基于服务/模块一个没有 - 所有服务共享数据存储和内存缓存。

Comparison of service isolation and project isolation中记录了隔离视角下两种方法之间的更详细比较:

  

下表提供了使用multiple之间的比较   微服务架构中的服务和多个项目:

     

enter image description here

我的问题是:除了上述差异之外,使用基于项目的方法与基于服务的方法还有其他优势吗?或者任何可能被视为劣势的事情?

1 个答案:

答案 0 :(得分:6)

基于项目的方法还允许您分离计费问题和IAM角色。

您可以直接使用不同的信用卡收费,或者只是单独设置结算限额(由于开发错误超出了您的结算限额,谁希望生产停止?)。您还可以获得单独的结算报告,因此我们可以更轻松地确定您的投放费用。

基于服务的方法可能会最大限度地减少额外的管理工作。例如,如果由于某种原因需要设置VPN或其他网络方面,单个项目意味着您只需要配置一次,而不是每个项目配置一次。