究竟什么定义了生产?

dsi*_*cha 13 production definition semantics

像几乎所有编程一段时间的人一样,我熟悉术语"生产代码",并且对它的含义有一种模糊的感觉.但是,有人可以提供一个半严谨的定义,因为维基百科和谷歌似乎不能?似乎生产中有很多灰色区域,例如一小部分人使用的内部工具,因此在UI,文档等方面没有"正式化",而且开源应用程序也是如此.功能齐全,合理的无bug和工作,但缺乏润色,UI和广泛的测试.

Jef*_*eff 24

当您的代码在生产系统上运行时,这意味着它在实际情况下被目标受众使用.

但是,生产代码并不一定意味着健壮,可靠或稳定的代码. 每日WTF在这方面提供了大量证据.

  • 我同意Eddie:"内部工具"毫无意义,重要的是意图.如果事情破裂,金钱丢失,最终目标被挫败,那么相关的流程和参与者就是定义的"生产"的一部分. (3认同)

Wil*_*ung 18

生产意味着您需要可靠,一致地工作的任何事物.

无论是构建脚本还是面向公众的Web服务器.

当其他人依赖你的代码时,特别是那些可能不理解它的人(即使是"智能"开发人员,但可能不在你的小组中,但使用你编写的库),该代码就是生产代码.

这是生产,因为当生产代码失败时,"工作停止"和"资金丢失".


Edd*_*die 7

我理解的定义是,生产代码是在实时非测试台系统上安装或使用的任何代码.公司内部使用的服务器是生产系统,如果它是公司员工使用的实时系统.这里的要点是,在编写代码的公司内部服务器上运行的代码可以是生产代码.

通常,在查看内部代码时,区别在于维护代码的组是否与使用代码的组分开.如果组是分开的,则代码是生产代码的可能性很小.如果运行业务取决于代码,那么它肯定是生产代码,即使它是在内部开发和维护的.


Rob*_*ams 5

编辑:简短的回答:如果你“把农场押在它上面”,那就是“生产”

这是一个很好的问题——一个绝对关键的区别,经常因为误解而给每个人带来麻烦。什么是“生产”的问题是什么是“环境”的相关问题的子集。

因此,部分答案是“生产”是最重要 、最值得信赖的“真实”事物。

所以现在我们必须定义“环境”(然后重新审视“生产”)。 我们还远远没有得到令人满意的答案。

我们程序员经常使用术语“环境”来指代由执行软件的硬件组成的计算机系统。该软件是我们编写的代码加上它所依赖的由其他人编写的软件。我们编写代码并将其与其他软件集成,然后我们通常通过一系列逐步升级的测试(单元测试、集成测试、功能测试、验收测试、回归测试等)来运行集成的软件,直到我们最终运行以完整的方式集成软件。

当然,并非所有事情都是完全自动化的。通常涉及很多人,并且他们需要执行手动流程。我们程序员寻找尽可能多的自动化流程的方法,但我们工作的系统中始终存在“人/机边界”。通常,在任何特定情况下都存在许多这样的边界。

另一方面,可能根本没有任何重要的自动化。例如,很久以前,当我们有一屋子的人进行手工劳动来生产产品时,我们就谈到了“生产” 。因此,我们的“生产”“环境”中不必存在任何自动化。还有一个中间立场,其中涉及的自动化不包括软件,例如一个人运行织布机织布的情况。

此外,可能没有产品,因为我们已经调整了“生产”“环境”的语言以包括无产品的服务提供商。

同样,测试可能不涉及软件,因为我们可能正在测试非软件驱动的机器(例如织机)甚至人员(培训和评估)。

现在我们已经触及了“环境”的所有关键要素:

  • intent有一个正在追求的目标
  • anintent需要一个意图,因此必须有一个sponsor(人或团体,但不是机器)来指定intent
  • intent是通过各种processes不同的执行来追求的actors
  • 这些actors可能是人,他们可能是在硬件上执行的软件,或者他们可能是非软件驱动的机器,因此可能存在也可能不存在自动化

现在我们可以正确、完整地定义我们原来的术语了。

一个environment由所有的processes和他们的代表其actors合作追求特定的目标组成。这意味着软件在硬件上执行,这意味着非软件驱动的机器,这意味着人们履行各种职责。主要定义的是the ,而不是 its或 its 。intentsponsorintentenvironmentprocessesactors

此外...

如果intent所追求的特定目标environmentsponsor's最终目标,通常涉及生产product或提供service以换取金钱,那么我们将其 environment称为production

现在我们可以更进一步。

如果intenta中所追求的environment是a的验证 processesactors准备production,我们称之为a 。test environment

我们进一步称其为“如果该测试涉及重要个人或团体及其……的最初联合” 。integration environmentprocessesactors

actors如果该准备工作涉及人类执行新 的“编程” processes,或随后的验证(评估),那么我们称之为“ 。 ”training environment

有了这些区别和定义,我们现在可以理解几种常见的场景。

Anenvironment可能会被错误标记为与其不匹配的名称intent,例如当training环境被用作时test

anenvironment可能会被严重滥用,例如当integrationortraining在 中完成时production

Anenvironment可能会被歪曲,例如当关键processesactors未被识别时(例如,手动调节,或者甚至完全忽略这些人)。

可以environment通过将其processesactors重新调整用途来重新分配任务intent。对于某些组织来说,一种非常成功的技术是在每个版本之间定期“翻转”几组(托管软件的服务器actors)。productiontesttrainingintegration

在大多数情况下,单个actor(人或硬件)可以执行多个processes可以参与多个environments. 例如,单个计算机服务器可以托管执行事务的软件,同时还托管执行或运行功能production的其他软件。testtraining

通常,一个实例一次actor只能参与一个。在极少数情况下,如果相互兼容,则可以共享environment一个。大多数时候,尝试这种共享是非常不明智的,因为它们并不真正兼容。一个完美的例子是在也支持 的服务器上运行,导致整个服务器出现故障而导致停机。actorenvironmentsintentsintentstest processproduction processestest

因此, 的intent必须environment具有非常广泛的解释范围,包括可用性可靠性性能灾难恢复准确性精确性可重复性寿命等概念。这意味着actorsprocesses必须经常被解释为包括诸如此类的内容提供电力冷却备份冗余

最后,请注意,情况可能会变得相当复杂。例如,actor开发团队 ( ) 可能会指派一台台式计算机 ( sponsor) 来托管其源代码控制 ( process),团队的主要工作 ( ) 依赖于该源代码控制 ( production)。然而,IT 人员将同一台台式计算机仅仅视为开发人员工作站(development,而不是production),并且当它出现硬件问题时,会轻蔑和冷漠地对待它。但开发人员正在生产production代码,那么他们不也是代码的一部分吗production?观点很重要。

编辑:生产质量

可靠的验证(testing)方法应该从打包的代码中获取代码development,并通过一系列tests(集成、TQA、功能、回归、验收等)运行它,直到它被另一方“盖章”以供production使用。然而,这使得包装质量却并非如此。只有当实际将其部署到最终级别的.production productionproductionsponsorenvironmentintent

但是,如果您的组织只是生产该包(其product)供其他人使用,那么这样的发布就接近production该组织将经历的情况product,因此通常会扩展该术语production来应用而不是澄清这一点这是质量。实际上,该组织的环境包括并参与其开发/发布工作,从而实现该目标。production productionactorsprocessesproduct

我说过这可能会变得相当复杂......