【问题标题】:Test and production environments on Amazon AWSAmazon AWS 上的测试和生产环境
【发布时间】:2016-05-04 23:56:18
【问题描述】:

我开始使用node.jsDynamoDB 开发一个大型应用程序。我使用 Git,可能会使用 CI 服务器。

我需要一个尽可能接近生产环境的测试环境(服务器端)。我在测试时对数据库所做的更改不应反映在生产中。实现它的最佳方法是什么?有用于测试的数据库副本吗?当我的应用在 Elastic Beanstalk 中运行时,我如何实现测试环境?

【问题讨论】:

    标签: node.js amazon-web-services amazon-dynamodb


    【解决方案1】:

    永远不要在生产环境中进行开发或测试。始终为测试和开发目的制作环境副本。

    Elastic Beanstalk 允许您创建应用程序的多个副本。因此,很容易启动应用程序的第二个(或第三个或第四个)副本来进行开发和执行测试。

    一旦您对开发中所做的更改感到满意,然后以可控的方式将这些更改应用到您的生产环境中。希望您的更改在部署过程中出现问题时是可逆的。

    【讨论】:

    • 好的,我知道如何复制我的应用程序实例来执行测试,但是 DynamoDB 呢?我想用更新的数据库副本测试应用程序,但我不想在测试时在生产数据库中进行更改。有解决办法吗?我读过跨区域复制,但我担心它会太贵。
    • 没有什么是开箱即用的。您必须复制表(在使用备用名称的区域内,或复制到另一个区域或另一个帐户)并复制数据。或者,您可以使用 Lambda 事件将写入生产表的数据自动复制到开发表。
    【解决方案2】:

    Elastic Beanstalk 允许您轻松管理应用程序中的多个环境。请参阅here 了解更多信息。

    对于 DynamoDB,您必须提出自己的解决方案。一种可行的方法是,如果您使用 CloudFormation 模板管理您的 DynamoDB 表。这将允许您在 JSON 模板文件中定义表、主键和任何索引。如果你这样做,你将拥有:

    • JSON 格式的 CloudFormation 模板,用于定义并自动创建您的 DynamoDB 表。
    • 您可以将这些模板的副本保存在 git 存储库中,您可以在其中为每个环境创建一个分支,从而更轻松地管理您的环境。

    如果这听起来太复杂,更简单的方法是在 DynamoDB 中只使用带有“dev-”前缀或类似名称的表的副本,但是当您有很多表时,CloudFormation 会非常方便。

    【讨论】:

      【解决方案3】:

      我知道您想要一个尽可能接近生产环境的环境,但如果您没有听说过,我建议您查看 DynamoDB Local。这是文档的链接:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html

      它允许您拥有本地版本的 DynamoDB。这意味着您可以在不使用读/写单元的情况下进行测试。它与生产 DynamoDB 服务之间存在一些差异,但您可以在本地版本上完成大部分测试用例。

      【讨论】:

        猜你喜欢
        • 2018-06-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        • 1970-01-01
        • 2016-10-20
        • 2016-06-14
        • 2011-08-20
        • 1970-01-01
        相关资源
        最近更新 更多