我目前正在我的实时生产服务器上编辑我的 Python 代码(Flask Web 服务器)。我刚刚启动了一个网站,我明白这不是一个可行的长期解决方案。我知道很多人有许多不同的方法来管理开发、测试和生产环境(可能还有更多),但是有人可以给我指点我可以开始学习更多关于管理这种类型的过程的地方吗?流动?我不知道从哪里开始。谢谢。
让我们停下来回忆一下为什么我们首先将开发和生产环境分开。
简而言之,这是因为我们是人,也会犯错。拥有独立环境的重点是尽早发现和纠正错误,并在它们影响我们的用户之前。
有多少种方法可以进行设置,几乎与要部署的应用程序一样多。无论您在做什么,最好的办法是使用一种足够简单、易于理解和使用的方法论,您不会试图解决它,并且要进行足够的纠正以帮助您在问题进入生产之前发现问题。
现在,如果您想对它有进取心,并设置一些几乎没有人完全理解并且几乎没有人真正喜欢的东西,那么请务必遵循 ITIL。那里有足够的流程让你在一半的职业生涯中都沉浸在文书工作中。但是,如果您正在为某些行业或某些客户开发软件,则可能必须这样做。
不过,从你的问题来看,听起来你是一个单一的开发人员或一个小团队,正在从事一个需要更多灵活性和速度的项目。
本质上,您需要两种类型的工具:测试工具和部署工具。
至少,您真正需要的是两台服务器:生产服务器和测试(登台)服务器。您将首先在本地工作站上测试您的更改。如果一切正常,您将代码推送到登台服务器,然后再次测试。如果一切看起来仍然正常,您将其投入生产并等待火警警报响起。
测试软件最强大的方法之一是持续集成。使用此方法,每当您将代码签入共享存储库时,服务器都会签出代码并运行您的整个测试套件。(您确实为所有内容编写了单元测试和功能测试,对吗?)它还可以进行集成测试。如果所有的测试都通过了,你可以配置这样的工具来促进代码到生产和自动部署。例如,Github 就是这样做的。目前两种常见的 CI 工具是 Jenkins 和 Travis。
最后是部署。这似乎很明显:您将新代码复制到(暂存或生产)服务器,然后告诉 Web 服务器在新代码上启动新工作程序。Capistrano、Commando 或 Deployer 等工具可帮助实现自动化。如果出现问题,他们通常还可以回滚到以前的部署。(并且您的语言或框架应该有办法处理回滚数据库架构更改,例如 Rails 中的迁移。对于 Flask,您可以使用 SQLAlchemy 和 Alembic 之类的东西。)
您可能想要的最终状态是您拥有 100% 的测试覆盖率,对所有内容进行单元、功能和集成测试,以便您可以利用持续集成来部署您的更改——或者捕获错误——作为尽快。从小处开始,使用单个“测试”服务器,然后逐步提升,直到达到目标。
归档时间: |
|
查看次数: |
350 次 |
最近记录: |