我开始使用node.js
和DynamoDB
开发大型应用程序。我使用Git并可能会使用CI服务器。亚马逊AWS上的测试和生产环境
我需要一个尽可能接近生产环境的测试环境(服务器端)。我在测试时对数据库所做的更改不应反映在生产中。什么是实现它的最好方法?有数据库的副本进行测试?我的应用程序在Elastic Beanstalk中运行时,如何实现测试环境?
我开始使用node.js
和DynamoDB
开发大型应用程序。我使用Git并可能会使用CI服务器。亚马逊AWS上的测试和生产环境
我需要一个尽可能接近生产环境的测试环境(服务器端)。我在测试时对数据库所做的更改不应反映在生产中。什么是实现它的最好方法?有数据库的副本进行测试?我的应用程序在Elastic Beanstalk中运行时,如何实现测试环境?
永远不要在生产环境中进行开发或测试。为了测试和开发的目的,请始终制作一份环境副本。
Elastic Beanstalk允许您创建应用程序的多个副本。因此,启动应用程序的第二个(或第三个或第四个)副本以进行开发和执行测试很容易。
一旦您对开发过程中所做的更改感到满意,然后以受控方式将这些更改应用于生产环境。希望在部署过程中出现问题时,您的更改是可逆的。
Elastic Beanstalk允许您轻松管理应用程序中的多个环境。有关更多信息,请参阅here。
至于DynamoDB,你必须想出你自己的解决方案。一种可行的方法是使用CloudFormation模板管理DynamoDB表。这将允许您定义表,主键,JSON模板文件中的任何索引。如果这样做,您将拥有:
如果这听起来过于复杂,更容易apprach将只是你的表的副本与“dev亡”前缀或财产以后内DynamoDB相似,但是CloudFormation可以进来非常方便,当你有很多表。
我意识到您希望尽可能接近生产的环境,但我会建议您检查一下DynamoDB Local以防万一您没有听说过。以下链接指向文档:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html
它允许您拥有本地版本的DynamoDB。这意味着您可以在不使用读写单元的情况下进行测试。它与生产DynamoDB服务之间存在一些差异,但您可以在本地版本上执行大部分测试用例。
好吧,我明白如何复制我的应用程序实例来执行测试,但DynamoDB呢?我想用更新的数据库副本测试应用程序,但我不想在测试时对生产数据库进行更改。有没有解决方案?我已阅读过有关跨区域复制的内容,但恐怕它太贵了。 – karliwson
没有什么开箱即可的。您必须复制表格(在区域内使用备用名称,或另一个区域或另一个帐户)并复制数据。或者,您可以使用Lambda事件将写入生产表的数据自动复制到开发表中。 –