Let’谈论您的开发环境

让’s talk about your development environment.

具体来说,我想和你聊天关于数据架构团队,软件开发人员和信息策展人的虚拟空间,他们的开发和测试工作。适当的开发环境在逻辑上与生产环境分开,通常进一步划分为不同的领域,以进行初始开发,数据或功能验证以及用户验收测试。对于成熟的企业就绪环境,通常还有一个构建和部署过程,可以自动从一个环境从一个环境移动到下一个环境,减少通过其步骤移动代码并最终进入生产环境时的人为错误的机会。

看到贵公司正在做一些伟大的事物,并具有增长的增长,我有信心你想要有效的开发环境,以保持正确的轨道上的数据和软件计划。

现在我们在同一页面上的开发环境是什么,告诉我你的一些关于你的。

“我们没有开发环境。我们将代码直接推到生产。“

发展环境我懂了。虽然这种直接制作方法是风险的,但对于相对较新的数据或软件团队来说,这并不罕见。但是,您希望尽快纠正这一点,因为将新的和更改的代码直接推向生产将您的组织暴露给一些可能的破坏性后果。由于缺乏适当的测试和验证,可能会导致意外停机时间,系统异常,信息安全泄漏或永久数据丢失。

生产中的测试代码是您可以逃避一段时间的行为之一,但它在出现问题之前只是时间问题。当出现问题时,它可以去 非常 wrong.

“但我们定期备份我们的代码和数据。”

那太棒了!请继续这样做,但请记住,备份无法替代适当的预生产和验证。如果在代码部署期间的事情完全偏离轨道,则从备份中还原是一个选项,但它不应该是您的第一个或仅追索权。

从备份恢复时,几乎肯定会与该恢复操作相关联,您可能无法恢复到介绍错误代码的点。

此外,如果您不立即发现问题,则可能在您必须从较旧的备份还原的情况下,然后尝试合并在部署后发生的任何更改的数据或设置到恢复的副本。

这里的底线是备份的还原不是魔法橡皮擦,也不应该是纠正未测试代码效果的唯一手段。

“我们买不起发展环境。”

我肯定可以同情需要限制这些系统的成本,但是让我问你:停机费用是多少?什么是成本 失去信任 在系统和数据中?如果未经测试的代码导致数据丢失或无意中曝光,有多少客户可能会丢失?

我不喜欢这句话“这是做生意的成本”,但是在测试代码和数据之前,在生产之前跳过代码和数据测试就不应该是一个选项。企业买不起 不是 具有适当的测试和验证环境。

“我们的团队很小,所以我们不需要一个单独的开发环境。”

我明白,最初它可能觉得为只有几个工作人员(或在某些情况下,一个人的团队)来设置一个单独的开发环境。但是,我建议它至少对小型团队来说是重要的。通过一个小团队,您可能会在编写促销之前的程序保障措施更少,并且很好的机会是一个特征或变化将从概念到生产使用,只有一套审查它的眼睛。

开发和测试的适当环境不应仅限于大型企业团队。

“我们没有做'真实的软件开发,所以我们不需要开发环境。”

即使您未创建商业上可用的软件,您的员工仍在创建软件。 PowerShell脚本,T-SQL代码,SSIS包,Azure数据出厂功能,甚至数据库元数据都是源代码。这些代码资产操纵您的员工,高管,客户和股东使用与您的业务进行互动并评估您的业务。

即使您没有创建打包软件,您的代码和数据工件仍对业务的成功仍然至关重要。在将它们推向生产之前,确保他们已经为大舞台做好了准备。

“我们在这里快速移动。那些额外的步骤会让我们放慢速度。“

建立开发环境和正式测试和部署过程的目标不是减慢速度。毕竟,您仍将测试直接推进到生产中的任何变化 - 这与较小的错误幅度较小,您总是将某些负担推向您的最终用户,客户和客户。

通过专用的环境来执行预生产测试和验证,您将有一个安全的地方来执行你已经在做的任务。通过在非生产环境中进行这些东西,在将更改推出到前线用户并支付客户之前,您将有更多的时间和自由来纠正任何错误。

此外,有一个 含有爆炸半径 在开发或测试环境中,您的开发人员可以更快地测试潜在的变化,而不会影响生产系统的风险。您的团队可能会最终完成更多的测试,但他们会更快地和令人痛苦的令人痛心并担心直接向生产部署未经测试的代码。

“我们确实有开发环境,但它不像我们的生产环境。”

在一个完美的世界中,开发和测试环境将包含一整套实际生产数据,不超过一天,并且在相同的硬件或资源级别运行。每个端点(源,目的地,API和其他支持铸造构件)将具有单独实现的开发和测试,以允许尽可能逼真和无风险测试。每个潜在的失败点 - 硬件,网络,应用程序和磁盘I / O - 应该具有自己的开发和测试实现,具有类似的生产资源工作负载,以确保从生产资产中完全解耦的逼真测试。

那说,这些东西都是成本时间和金钱。完全冗余的开发和测试环境需要与其生产对应物的设置和维护,以及运行的系统(无论是物理,虚拟,或基于SAAS的)还原为解决方案的总成本。此外,有些企业由可能限制使用实际数据进行开发和测试的数据规定的业务。

我对客户的建议是建立非生产环境,以与预算,支持资源和法规相似。使用陈旧或人为生成的数据的开发环境,或者具有与生产非常不同的资源的开发环境仍然比在生产环境中的开发和测试更好。

“我们使用制作数据进行开发。这是足够的吗?“

同样,假测试数据优于没有测试数据,但是您会发现复制您的应用程序或数据解决方案将在生产环境中暴露的细微符义和数据质量挑战几乎不可能。市场上有一些体面的工具可以在批量生产中产生假测试数据,但这些公用事业公司可能永远无法生成现实世界中发现的那种创意异常值。

“我们一直在没有问题的数年部署到生产。为什么现在改变?“

我与表达了类似情绪的客户,但每次我深入挖掘这一点时,他们都证明了他们的直接制作方法没有问题。真正的事实是他们没有与缺乏开发环境相关的主要灾难。 然而。

这不是一个问题,但何时,何时,一个意义,但未经测试的变化取消了机器。将守则和数据转化为生产将不可避免地导致一些惊喜。使用现实的开发和测试环境可以将这些惊喜保持在最低限度。

关于作者

Tim Mitchell
Tim Mitchell is a 数据架构师和顾问 谁专注于摆脱数据疼痛点。 需要帮助数据仓库,ETL,报告或 训练 ?如果是这样的话, 联系Tim. 没有义务30分钟聊天。

是第一个评论 on "让’谈论您的发展环境“

发表评论

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.