`
j2002sx
  • 浏览: 34437 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

是否应该允许开发人员进入生产环境?(转)

阅读更多

在Web开发公司里,有个问题会被一而再、再而三的提出来,这就是:

“是否应该允许开发人员进入生产环境?如果是,允许到什么程度?”

对于此,我的观点是,整体上,应该限制开发人员访问生产环境。在论证我这个观点之前,我想声明一下,我的立场绝对不是基于对开发人员的品质品行的判断——所以请不要往这方面想。首先我要公布一些常见的程序员们不喜欢或讨厌这个观点的论据:

“系统管理员什么都不让我们干,他又解决不了,我们根本没法完成任务。”

如果真是这种情况,那么他们应该是对的。如果是因为没有足够的管理员或管理员不称职,那么瓶颈就会出现。然而,允许开发人员访问生产环境并不是一种 解决方案,因为即使这一回你把问题解决了,以后还是会出现缺少管理员的情况。有时候一些管理上的规章制度会使事情变的繁琐,耽误时间,但我想这时间也不会 是一种不可接受的漫长。

“我们以前就是这么干的。”

创业公司很少一成立就有一些系统管理员。出于某些原因,系统管理员会被认为是一种奢侈品。尽管这种状况在以前是可以的,但随着公司的成长,管理员应 该慢慢增多。事情会变的越来越复杂,这也是公司为什么需要系统管理员的原因。所以说,“我们以前就这么干”的说法并没有多少说服力。

“我们需要进入生产环境解决问题。”

也许是,也许不是。管理员应该能够给你想要的各种信息。如果这个过程成为瓶颈,那么允许有限范围内的访问是合适的。

还有很多的关于限制开发人员访问的讨论,但来让我们把目标转向我真正想讨论的——为什么这是一个好建议。

限制访问的产生由来:

如果开发人员不能够访问生产环境,一个最大的含义就是他们不能自己去安装程序。也就意味这管理员要去为他们安装程序。这其中会发生两件事情:

1)开发人员和系统管理员必须交流——相互的交流!管理员必须学会如何安装程序(我可不希望是由我去解释),这应该是件好事。

2)开发人员必须制作安装文件和编写简单有效的部署步骤说明。这也是很好的事情。能按步骤来重建系统是应对灾难恢复的重要的一部分。
所以,一旦开发人员被限制访问生产环境,我们就能避免那种因为程序过于复杂以致于只有开发人员出面才能部署安装的情况出现。同样,开发人员也避免了把时间浪费在部署和安装程序的工作上了,节省下的时间开发新程序岂不更好。虽然起初他们会多花一点时间,但以后会越来越方便。

这样管理员也能学到更多的关于安装过程中需要备份哪些东西的知识了。即使在管理员对程序不太了解的情况,他们只需对着开发人员提供的文档来执行他们的备份操作。

开发人员所关心的并不一定是系统管理员所关心的:

通常开发人员所关注的安全领域并不一定会是系统管理员所关注的领域。对于Web网站安全,他们只是擅长他们自己特有的领域。诸如跨站脚本攻 击,SQL注入等安全问题是开发人员擅长的,对于系统管理员则不然。诸如账户权限,文件权限,web服务器配置通常不是开发人员擅长的和感兴趣的,而这些 对于生产环境确十分重要的,它们是系统管理员擅长的领域。我对这个领域的见解是越少人访问越安全。还有,这能有效的避免凌晨两点被电话吵醒——因为系统管 理员怀疑你们15个程序员中的某个人在服务器上做了不当的操作。

变更控制:

我不认为一个稳重的程序员会不把变更控制当作重要的事情。因为在程序中经常会有这样的事情。然而,我发现许多程序员却不会慎重的把在服务器上的每次改动都做上日志。(当然我也看到过一些配置文件是有版本控制的)

如果你没有这样做,这意味这生产环境不可能正确的重建。这也意味着如果某些改动导致了问题,对于来解决问题的人却未必能知道这些曾经发生过的改动。这就好像是一个系统管理员打开产品代码,在未通知任何人的情况下修改了程序或提交到产品里。哇,我估计程序员们会抓狂的。

拥有者对其有控制权:

Joel’s Spolsky有句话放在管理工作上很合适:

“每人都有自己的一块领地。是谁的,就是谁的。如果一个管理者或其他人,想插手一个事情的管理方式,他必须保证自己是事情拥有者。拥有者有最终话语权。”

系统管理员通常被认为是生产环境的拥有者。他们是持续跟踪机器运行状态的人,是凌晨2点会被电话叫醒的人,基本上也是和生产环境问题距离最近的人。如果开发人员直接访问的生产环境,那这种管理控制无形中就给破坏了。

系统管理员的职责:

为了能在这种原则下正常的工作,管理员必须完成一些工作。

1)向开发人员们询问他们想从你这得到什么信息,你要很乐意的给他们想要的。

2)确保开发人员在他们自己的空间里有一个好的开发环境。

3)理论结合实践。每个公司都有自己的特殊情况,有些公司由于自身业务的原因决定了开发人员的无访问权限(比如金融类)。然而,即使你那不是个金融 公司,取消开发人员的访问特权的作业制度也是最好的方案。有可能某些开发人员同时担任这系统管理员的工作,所以每个公司都有自己的情况。

就像我在开始时声明的那样,我认为所讨论的问题跟程序员是否优秀无关——有很多的开发人员的技术跟系统管理员一样出色。
我们所关注的更多的是如何在公司的发展中让两种角色的人都专注于自己擅长的领域。也许事情的改变需要时间。然而,最终的目的是让我们有一个更加可靠和安全的生产环境。

[英文出处]:Should Developers have Access to Production?
[中文翻译]:外刊IT评论

分享到:
评论

相关推荐

    持续交付构建系统Screwdriver.zip

    通过管理代码库中的管道配置,Screwdriver 允许开发人员以他们熟悉的方式配置管道,另一个好处是,也可以轻松地审查管道的变化。主干开发:在 Yahoo 内部,鼓励主干代码总是可交付的工作流程。团队使用修改后的 ...

    基于Delphi的仓库管理系统开发论文

    本软件的使用者可以是超市内部各个部门中的高级主管,软件开发人员,扶助开发人员和支持本软件的超市人员,软件验证者。 1.2、背景及范围 本项目的名称:超市库存管理系统。 本项目中用户是超市中库存管理的各个部门...

    新版Android开发教程.rar

    � 源代码完全开放,便于开发人员更清楚的把握实现细节,便于提高开发人员的技术水平,有利于开发 出 更具差异性的应用。 � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要...

    利用ant脚本 自动构建svn增量.docx

    测试通过后进入到模拟环境或是直接发布的生产环境,这个过程可以是全自动的。但这个自动化的方式有一些公司用到了,但也有很多公司还不知道,他们的攻城师天天在做反复、没有多大意义的、浪费生命的事情。当然这种...

    BlackBerry开发平台配置及入门介绍(傻瓜教程)

     *由企业内部开发人员自行开发  *由BlackBerry合作伙伴提供的外包开发  *由BlackBerry合作伙伴销售的“预打包”应用程序  使用BlackBerry延伸行业领先的应用程序:  *SAP..SiebelSystems..salesforce....

    C#微软培训资料

    第六章 类 型 转 换 .48 6.1 隐式类型转换 .48 6.2 显式类型转换 .53 6.3 小 结 .56 第七章 表 达 式 .58 7.1 操 作 符 .58 7.2 算术操作符和算术表达式.59 7.3 赋值操作符和赋值表达式.64 7.4 关系...

    高级软件架构师复习提纲

    19、对于开发和测试环境,下列说法正确的是:开发和测试环境必须能反映生产环境 /生产环境同开发和测试环境必须分离/应按照开发和测试计划中设置的标准配置来建立环境 /为了实现对项目的控制,需要注意同步开发和...

    印染厂生产仓储信息系统

    坯布进入印染厂后,首先存放在坯布仓库中,需要生产时,从坯布库中出库,供生产使用,本系统主要内容为坯布库的出入库管理和位置摆放管理。 (一) 坯布库管理  库存初始数据设置 在刚刚开始使用本系统时,可能仓库...

    asp学习相关资料大全

    它将可视布局工具、应用程序开发功能和代码编辑支持组合为一个功能强大的工具,使每个级别的开发人员和设计人员都可利用它快速创建界面吸引人并且基于标准的站点和应用程序。 从对基于 CSS 的设计提供领先的支持到...

    公司网络安全管理制度3篇.doc

    第六条 机房工作人员进入机房必须遵守相关工作制度和条例,不得从事与本职工作无关的事宜 ,每天上、下班前须检查设备电源情况,在确保安全的情况下,方可离开。 第七条 为防止磁化记录的破坏,机房内不准使用磁化...

    公司网络安全体系.doc

    责权不明,管理混乱,使得一些员工或管理员随 便让一些非本地员工甚至外来人员进入机房重地,或者员工有意无意泄漏他们所知道的 一些重要信息,而管理上却没有相应制度来约束。 建立全新网络安全机制,必须深刻理解网络...

    Tic-Tac-Toe:ReactJS官方教程

    它设置了您的开发环境,以便您可以使用最新JavaScript功能,提供良好的开发人员体验,并优化您的应用程序以进行生产。 您需要在计算机上使Node> = 6。 查看create-react-app文档 使用npm安装 npm init npm ...

    H3BPM 试用系统操作手册

    那么,在本演示环境中使用到的业务服务类型有:Data Table、WebService、Data Sql,详细的业务服务的使用,请参考《H3实施开发手册》。 3 流程模型(流程功能展示) 3.1 主数据 功能展示  主数据的维护和查询。 ...

    c语言编写单片机技巧

    所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。 4. 当开发一个较复杂而又开发时间短的项目时,用C还是用汇编开发好? 答:对于复杂而开发时间紧的项目时,...

    VMWare 7.0.1 build-227600

    这种多快照功能使VMware工作站成为销售人员演示复杂的软件产品、开发人员建立虚拟开发和测试环境的非常流行的工具。VMware工作站包含有将多个虚拟机指定为编队的能力,编队可以作为一个物体来开机、关机、挂起和恢复...

    基于AT89S52 单片的频率计

    数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功 能,从而提高系统可靠性和速度。 集成电路的类型很多,从大的方面可以分为模拟电路和数字集成电路2 大 类。数字集成电路广泛用于计算机、...

Global site tag (gtag.js) - Google Analytics