我正在构建一个仍处于概念验证/原型阶段的应用程序。我使用 Amazon EC2 来满足我的服务器需求。它尚未向公众开放,我直接在 AWS 机器上进行开发和测试,还使用其他 AWS 工具,并在必要时将服务器联机/脱机。我的堆栈是 Node.js、MySQL、MongoDB 和 Angular2。
在接下来的几个月里,我希望让它(亚马逊机器)全天候运行,并向公众开放使用(规模非常小 - 10 到 100 个用户.. alpha 版本)。此时,我希望将我的测试和开发转移到测试服务器,并在我有主要/次要版本或必须修复错误时在亚马逊上部署更改。我使用 git 进行版本控制。
我查阅过的一些资源
虽然下面的资源很有帮助,但我无法得出任何结论。
- 如何将版本控制、测试和持续集成/部署等开发实践应用于系统管理?
- 多服务器部署策略-生产服务器上的 Git?
- 有关 EC2 架构和部署策略的建议
- 改进我们的部署策略
- 生产部署策略
- 部署小型 Rails 应用程序-有什么建议?
- http://guides.beanstalkapp.com/deployments/best-practices.html
我的问题如下
- 当我想修复错误或推出更新时,您建议我如何将内容从测试服务器移至生产服务器?我是否应该维护一个通用代码存储库并在生产服务器上使用 git 随时提取更改?这应该手动完成还是自动完成?
- 由于我只有一台机器(生产机器),我猜更新时服务会中断。有没有办法将其最小化,或者我应该至少有两台生产机器?
我听说过(但没用过)Capistrano、Chef 等工具,但目前我还没有设置任何 CI/单元测试(说实话!)。我几乎没有写完整的代码。
我的主要目标是证明我的想法是可行的,同时为用户提供一定程度的可靠服务(在 alpha/beta 阶段)。总的来说,我希望尽可能地让它专业化,并尽可能地利用我拥有的资源遵循良好的做法。
请记住,这只是我一个人的事,我没有一支聪明的优秀开发人员团队。任何建议都将不胜感激!
答案1
为了了解您测试产品的有效性,我建议您准备一份测试文档。当您扩展产品时,对此类文档的需求将更加明显。如果您不知道如何编写此类文档,我建议您阅读本指南:https://tech-stack.com/blog/test-strategy/。它详细介绍了此类文档的组成部分,并以一个示例作为结尾。