2016-05-02 52 views
0

我开始使用node.jsDynamoDB开发大型应用程序。我使用Git并可能会使用CI服务器。亚马逊AWS上的测试和生产环境

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

回答

0

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

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

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

+0

好吧,我明白如何复制我的应用程序实例来执行测试,但DynamoDB呢?我想用更新的数据库副本测试应用程序,但我不想在测试时对生产数据库进行更改。有没有解决方案?我已阅读过有关跨区域复制的内容,但恐怕它太贵了。 – karliwson

+0

没有什么开箱即可的。您必须复制表格(在区域内使用备用名称,或另一个区域或另一个帐户)并复制数据。或者,您可以使用Lambda事件将写入生产表的数据自动复制到开发表中。 –

0

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

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

  • JSON中的CloudFormation模板定义并自动创建您的DynamoDB表。
  • 您可以将这些模板的副本保存在git存储库中,您可以在每个环境中拥有一个分支,从而使管理环境变得更加轻松。

如果这听起来过于复杂,更容易apprach将只是你的表的副本与“dev亡”前缀或财产以后内DynamoDB相似,但是CloudFormation可以进来非常方便,当你有很多表。

0

我意识到您希望尽可能接近生产的环境,但我会建议您检查一下DynamoDB Local以防万一您没有听说过。以下链接指向文档:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html

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