创业公司如何在其产品上添加新功能?

时间:2014-05-16 00:10:50

标签: testing integration-testing qa staging

初创公司如何通过添加新功能并同时测试它而不破坏内容来说Feedly或Buffer对其代码进行更改?是否有沙盒框架,是否必须在内部构建,或者只是在本地主机上克隆git repo并玩游戏?

2 个答案:

答案 0 :(得分:3)

有许多特定的技术可以为软件添加功能并将其部署到正在运行的站点而不会破坏任何内容。这是一个很大的主题,但这里有一些当前的最佳实践:

  • 计划易于引入的功能:根据业务需求尽可能小且彼此独立,因此在必要时易于评估和更改或恢复。

  • 选择最小化每个部署范围和影响的体系结构。如果应用程序包含由定义的API访问的独立服务,则部署可以更新并重新启动单个服务,从而减少影响在整个申请表上。

  • 规划大型功能的实施,以便轻松部署:分段实施,除了最后一个对用户不可见,并且可以在多个部署中部署,从而降低任何一个部署的风险。 / p>

  • 由于部署时网站正在运行,因此连续版本必须兼容。例如,更改数据库可能意味着三次生产更改:首先更改软件以在数据库的旧版本和新版本上运行,然后更改数据库,然后从软件中删除对旧数据库版本的支持。您可能还需要确保当前版本的浏览器应用程序与服务器端软件的后续版本兼容。

  • 功能标记,即功能切换,通过隐藏功能隐藏部署中的一些风险,直到管理员通过作为应用程序一部分的UI在运行时激活它们。如果功能存在错误或对业务产生负面影响,功能标志还允许回滚功能而不回滚整个应用程序。 Wikipedia lists a few feature flag frameworks如果你搜索,你会找到更多。

  • 彻底的自动化测试持续集成可防止意外破坏。手动回归对于任何Web业务来说都太慢,不可靠且昂贵,尤其对于初创公司而言。持续集成可确保每次更改时都运行测试。

  • 自动部署可防止部署期间出现手动错误,并使部署更加频繁,这意味着每个部署包含的更改更少,因此风险更低。 (持续部署,又名持续投放,只是完全自动部署,这意味着甚至没有人按下按钮。)

  • Canary部署允许在提交完整部署之前将更改公开给生产中的一部分用户。

  • 监控对于捕获部署到生产环境的错误至关重要。监控两个低级指标,例如服务器和服务的正常运行时间以及高级指标,例如信用卡每分钟收费。

  • 自动回滚可在将错误部署到生产环境时将风险和停机时间降至最低。至少需要能够回滚到之前的版本,只需按下按钮即可。对于奖励积分,当关键指标低于阈值时,完全自动回滚。 蓝绿色部署提供了一种快速回滚方式。

Humble和Farley的Continuous Delivery涵盖了许多这些主题。我意识到你并没有问过持续部署,但是许多当前支持快速迭代的最佳实践导致或非常适合持续部署,所以它往往是完全相同的讨论。

答案 1 :(得分:-3)

它被称为Staging-Environement,您可以在线找到有关TestingSoftware Quality的许多资源。

另一方面,沙盒是一种用于包含不受信任程序的安全机制。