相关疑难解决方法(0)

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

命名开发人员环境中, Google提出了两种为GAE应用程序实现不同CI/CD环境的方法

  • 基于同一项目/应用程序内的不同服务(以前称为模块):

如果选择仅使用多种服务来创建应用微服务,您可以为每个环境的一个App Engine的项目,并将其命名相应的,如web-app-dev, web-app-qaweb-app-prod.

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

另外,如果您选择创建通过使用多个项目您的微服务的应用程序,可以实现环境之间相同的分离,但你需要使用更多的项目,如 web-app-dev,web-app-prod,user-service-dev,和 user-service-prod.您将需要使用代码模式来确保dev项目仅调用其他dev项目,并且prod 项目仅调用其他prod项目.

在此输入图像描述

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

在隔离服务隔离和项目隔离的比较中记录了从隔离角度看两种方法之间的更详细比较:

下表提供了在微服务体系结构中使用多个服务和多个项目之间的比较:

在此输入图像描述

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

google-app-engine

7
推荐指数
1
解决办法
607
查看次数

在 Google App Engine 上持续集成/部署/交付,风险太大?

我们最近在 Google App Engine 上设置了一个 nodejs webapp 的持续集成/部署/交付。CI 服务器 (GitLabCI) 根据分支 (develop/master) 运行依赖项安装、构建、测试和部署到集成/生产。

在今天,我们面临的唯一错误是在依赖步骤期间,所以我们并没有太在意它。但是昨天(21/10/16)发生了大规模的 DNS 中断,并且管道在部署步骤中间失败,导致生产中断。只需重新运行管道即可完成工作,但问题随时可能重现。

我的问题是:

  • 在持续部署过程中,我们如何处理此类网络问题?
  • 在 Google App Engine 上持续部署真的是个好主意吗?
  • 如果是这样,App Engine 部署方法是什么?我没有找到任何相关的文档...

目前我们只有两个版本“dev”和“prod”在提交后更新,但在随机时间我可以观察到奇怪的行为。

非常欢迎任何回应/建议/反馈!

关于我正在谈论的网络问题的堆栈跟踪示例:

DEBUG: Error sending result: 'MetadataServerException(HTTPError(),)'. Reason: 'PicklingError("Can't pickle <type 'cStringIO.StringO'>: attribute lookup cStringIO.StringO failed",)'
Traceback (most recent call last):
  File "/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 733, in Execute
    resources = args.calliope_command.Run(cli=self, args=args)
  File "/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 1630, in Run
    resources = command_instance.Run(args)
  File "/google-cloud-sdk/lib/surface/app/deploy.py", line 53, in Run
    return deploy_util.RunDeploy(self, args)
  File "/google-cloud-sdk/lib/googlecloudsdk/command_lib/app/deploy_util.py", …
Run Code Online (Sandbox Code Playgroud)

google-app-engine continuous-integration continuous-deployment continuous-delivery gitlab-ci

5
推荐指数
1
解决办法
1608
查看次数