找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
.COM/.NET/.ORG 国际域名注册全功能虚拟主机/免备案虚拟主机
查看: 1877|回复: 2

[分享]Windows Server 2003开发历程揭密(下)

[复制链接]

281

主题

3228

回帖

55万

积分

管理员

积分
551869
发表于 2003-8-5 16:01:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  Thompson说:“起初,我们可以每天在固定时间Check-In代码然后停止开发,接着开始生成新系统。最终,我们将团队增加到85人,并将过程系列化以进行更多的控制。我们都为Dave Cutler工作,他掌管生成实验室大约有一周,然后要求每个人在实验室白板上写下自己的Check-In请求,并使其成为强制模式。我也在那里待了一段时间,有一天我收到了85个Check-In,那是我们当时可以有的最大数量,现在我们每天可以接收1000个以上。这是一个完全不同的比例。尽管现在白板实际上是电子的——基于Web的。”



  “其他软件项目无法与之相比,”Lucovsky说,“但是有一件事是不变的,就是生成Windows所需的时间。不管是该产品的哪一代,都需要12小时来编译并连接系统。”随着生产过程能力的增长,Windows也随之增大,开发过程变得更为复杂,因此微软在每天的生成中进行更多的代码检查。“Build实验室的CPU连续不停地工作12个小时,从Windows 2000以后我们适应了这个过程。现在,我们将源代码彼此分隔开来并使用新的生成环境。这是一个多机环境,使我们可以更快地生产。但是由于所有的代码都要进行分析,因此仍然需要12小时。”



  Thompson告诉我们,对于NT团队来说,完全“吞掉”他们自己的代码是必需的,并且是与微软的自然条件并存的。“回想当年,这是我们一直在做的事之一,今天当我们谈起email程序时都感到很可笑。当时第一次在PC上运行NT时,我们的Email程序无法工作,因为它是一个DOS程序,而我们当时还没有DOS兼容模式。所以我们将内部的Email程序WizMail改造成Win32的,这样我们就可以只在NT系统上工作了。”



  Thompson补充道:“当你被迫自己使用系统时,如果你看到了漏洞以及性能问题,你必须找到那个负责人并要求他修正问题。”Thompson加入NT团队时,他的一个主要职责就是将文件服务赋予NT,这样它就可以被用作源代码服务器。它需要的信任,特别是自NT使用NTFS文件系统之后。“网络组非常认真地工作,”他说,“同时确保其做好内部布署的准备。一旦它开始实施,就不可能回头。很显然,如果文件服务失败,那将是一场灾难。所以那是我们的非常时期。”



  后来,随着Windows NT 4.0开发的结束,Thompson的队伍采用了活动目录(AD),这是微软的第一个目录服务,它于1996年在Professional Developers Conference(PDC)公开发表。“在AD之前,我们在基础构造中使用NT域,”他说,“转向AD更为复杂。我们很早就部署了AD,先是我们的团队,然后是更广泛的Windows小组。在1999年4月,我们在雷德蒙大学正式使用了AD。”



  Thompson说,微软谨慎地在公司的其他级别实施AD,大学在上一年使用Windows Server 2003实现了多森林AD拓扑。“对所有的基础服务器,我们总是在内部进行完全的部署,然后推广到JDP(Joint Development Partners),他们进行测试,并在250个使用场景中将其产品化。我们收集错误报告、功能反馈以及复杂的测试环境,以考验产品。”



  2002年夏天,Windows Server 2003(RC1)的可靠性达到了99.995%。2002年11月,Microsoft.com网站完全采用Windows Server 2003(RC2)部署。“在内部大量使用并接近客户是关键,”Thompson告诉我,“我们现在的产品更加成熟。我们不仅仅售出盒装产品,还售出范围广泛的补充工具、产品、服务以及文档。”Thompson还谈到当前Outlook 11、Exchange Server 2003(Titanium)和Windows Server 2003团队工作结合得更为紧密,以满足最终客户的需求。过去这些产品经常是独立开发,互不相干的。



  关注产品服务



  Lucovsky补充道:“这些年服务也走向成熟,我们为每一个产品做了大量的工作,提供正确的混合服务包、热修复、产品开发分支、beta以及JDP客户。”(在下一节里有更多关于开发分支的信息)



  “我们确实延长了对产品进行服务的时间。”Thompson说,因为微软售出一个服务器产品时,客户可能使用长达10年之久。Volume或mainstream在过去的7年中提供服务,但是公司一直在研究提供全程升级和修正的方法。首先,微软必须确保错误修正被应用到所有开发分支。“我们在快速定位安全性缺陷上的工作,意味着我们现在可以更积极主动地发布热修复,”Thompson强调,“同样,它使服务包更具弹性,一个可以像传递修正包一样传递新功能的方法。但是客户使其更明确,他们只希望得到错误修正。尽管这导致了一个有趣的问题:究竟什么才算是错误?一个缺失的功能是吗?客户经常有他们自己的观点。不过NT 4 SP3是最后一个包含主要新功能的服务包。”



  影响主干服务的一个方面是微软必须为近期产品的每一次改变保留测试环境。这意味着Windows 2000的最终版或“黄金”版是一个分支,Windows 2000 SP1是另一个,Windows 2000 SP2又是一个,依此类推。“完全消化对于提供服务包也是很重要的。我们在自己的IT组织保留了一个独立的Windows 2000基础生成品,这样我们可以随时生成Windows 2000系统,并在产品环境中测试,”Thompson说,“这样做代价昂贵,但是值得。”



  热修复被精简成只修正一个特定问题,并且不会影响系统的其他部分。Thompson说一般情况下,客户只有在受到相关问题影响时,才应用一个热修复,但是安全性修正则是另一回事。“我们希望所有的客户安装安全性修正,因此我们对它们非常谨慎,并且做了足够的测试。它们一般是可分发的发布(Deployable Releases,GDRs),就像服务包一样。”



  主干、树和分支



  正如前面提到的,不同的Windows版本需要一系列的产品代码分叉路口,在那里不同的Windows产品从“主干”开发中“分支”出去。因此每一次Windows发行会产生至少两个不同的版本,在本文撰写时,Windows Server 2003和Longhorn正在同时开发。因为Windows Server 2003是从XP分离的,因此这个服务器产品基本构建于XP之上。在未来几年要超越XP的客户端发行版本Longhorn,实际上是从服务器代码分支基础生成的,而不是您所期望的XP。



  Lucovsky告诉我们:“这个机制是自觉的,我们对当前Windows版本有一个主要代码分支,它成为热修复和下一个服务包的源码基础。一旦我们推出一个服务包,它就成为一个新的分支,这样我们就有了两个分支,用来测试热修复和服务包。我们不能告诉客户说安装SP1并进行热修复。这在每一次Windows发行中延续,因此会有两三个服务包,许多热修复以及许多安全性修正。其中每一个都是被管理的,是一个5000万行代码的集合。这是一个巨大课题。”



  另外,对于每一个开发的主要分支,微软也有大约16个分支团队,并允许他们在公共主线上独立地并行工作。每一个团队掌握一个完整的生成实验室环境,用来生成包含他们所做更改的完整发行版本,各团队定期地将经测试的更改整合到主要分支中,这样他们可以互相交流已测试的工作。



  将错误消灭在作战室



  “如果有人不在作战室,我会批评他们,我专踢笨蛋。”



  ——Todd Wanke



  微软产品主管、Windows Server发行管理处



  项目最令人激动的地方是在作战室,在那里战斗团队每周5到6天,每天会面2到3次。现在Windows Server进入了开发的最后阶段。“战斗团队每天对项目进展进行度量并做出报告。”Thompson告诉我们,说作战室令人震惊毫不夸张。“现在一切都是自动的,但是想当初我们刚来时,都要将我们的工作写在纸上。那时作战室有大约15到20个人。现在大不相同了。”



  Todd Wanke掌管Windows Server 2003的作战室,我们惊讶地发现他非常迷人。但是在作战室工作时,他是一个铁腕人物,他到处发号施令,产品组成员只能耐心地忍受残酷的会议进程。



  作战室的工作状况是这样的,每天早上9:30,来自不同Windows Server 2003功能团队的代表进行会面并筛选错误。他们排队进入26号大楼的3243房间,它的门上标着手写的“Argument Clinic”。在房子中央有一个大会议桌,但是许多参与者都站着,房子里总是塞满了人。我们参加战斗团队会议的那一天,这是第一次允许外界人员进入Windows Server的圣地,也是整个NT和Windows开发历史中的第二次,那一天团队讨论了大约50个错误,大部分是简单的商标错误,尽管那天不允许我们参与一些特殊错误的讨论(因此我们很晚才进入,最重大的论题是在最后一刻将Windows .NET Server 2003改名为Windows Server 2003)。



  每一个错误都被记入一个递增的错误跟踪系统,伴随着令人眼花的信息,包括错误是如何发现的、是否有客户受到了影响,以及错误被根本解决的完整历史。Wanke快速地审阅错误,并叫来相关功能团队的成员,让他们说明修正进展的情况。例如,如果IIS存在一个或多个错误,则IIS团队的代表需要列席,他不仅要说明错误,还要说明客户是否会受影响、修正对系统其他部分的影响,以及修正将在多长时间内完成。在开发过程的最后,如果错误不是十分严重,它将被“传”给下一个Windows发行版本——Longhorn。



  作战室的气氛是紧张压抑的,我大部分时间都保持缄默,心里祈求Wanke不要注意到我和我的团队。作战室里进行激烈的争辩,对错误的处罚是受到其他团队成员的耻辱,并把错误遗留给了Longhorn。当有人建议另找时间讨论时,Wanke简单地说:“去它的,如果它足够重要,它就应该放在这里。它将留给Longhorn。下一个错误!”



  当漫长的会议结束后,我们坐下来与Wanke闲聊,这时他已完全判若两人。我对他说:“你主持了一个有意义的会议。”Wanke的背景包括NCR节约开支、美国本田以及作为美国政府承包商的一个与安全性紧密相关的神秘角色。他已经伴随微软接近8年了。在加入Windows团队之前,Wanke是Microsoft.com网站的原始设计者之一,在微软所有人认识到Internet的重要性之前,他已经当了4年的“网民”。在我们的会谈中,Wanke讲述了他调换新工作的过程,他现在做什么,以及战斗团队是如何工作的。



  “我的工作是每天对Windows的销售操作进行管理,”他说,“我对800到1000个开发员、程序管理员和测试员负责,我必须保证他们每天做正确的事情。”



  Wanke说战斗团队由Windows团队的许多人组成,他们分别负责项目的不同领域。他们的职责是测试TCP/IP和其他底层技术,一些开发员每天进行生成,另一些每天生成校验测试。他告诉我们:“项目的每个领域都有代表,战斗团队每天向Windows Server队伍发出指令,指令也来自我发出的公告板邮件。这些邮件几乎都是绝密的,特别机密的邮件只发给少数小组成员。”



  正如我们所见,作战室是一个严密的机构,每天每小时都在精确运转。团队的成员每天研究相同的错误系统,并经常共同修正一个错误。“如果你不在那里,它就不会好,”Wanke说,“微软的员工对产品有很强的主人翁意识,他们希望确保一切正确。但是如果有人不在那里,我会批评他们,我专踢笨蛋。”



  除了早上的作战室会议,Windows Server团队还在下午2到3点开会,如果需要,下午5到6点还有一次。每天的Build工作一般在4点半开始,但是可以推迟到6点,因此最后一次会议使团队有机会将最终修正增加到当天的Build中。Wanke说:“这个机构是很重要的,我们需要在任何时间了解Build的进度。我们检查Build的质量,不同的压力级别以及通宵运行发生的一切、任何我们需要跟踪的东西。我们获取详细的报告,并复检项目的所有内容。”



  除了主体战斗团队,每一个功能团队也有自己的作战室,因此每天最多可能有50次这样的会议,每一次都针对一个特定的系统组件。这些额外的作战室会议每天早上8点召开。当一个错误修正在本地战斗团队通过后,它会被推荐给Wanke的会议。“除非他们做好修正准备,否则他们不能进入作战室,他们必须准备好修正。”Wanke说。



  生成Windows的复杂程度令人惊叹。Wanke说:“为了简便,我们说Windows由100,000个文件组成,通常有7个源码仓库,每一个都包含一个全部源码的正确复制,尽管我们只使用其中一个。每个开发组都有自己的仓库,因此当一个开发员写好修正时,他可以用自己的源码仓库进行编译并进行测试,然后提交给主要Build试验室。”



  当然,不是所有的Build都是成功的。Windows Server经常遭受微软所称的“低级Build(build on the floor)”,当一个修正破坏了系统其他部分时,Build将报废。“那是残酷的,”Wanke告诉我们,“在去年有一段时间,我们在7天的时间里都无法得到一个合格的Build。我们不得不给公司产品组发邮件解释这个问题。”后来公司输入了他们的保留版本Defcon-5。“所有的红色指标都攀升了,”他说,“这使开发员牢牢记住了不要破坏Build。他们做了修正,一个好的Build,然后进行了检查。但是他们不能回家。我们在凌晨3点打电话,当一个Build损坏时,要找出破坏它的开发员,让他立即工作并修复。这个开发员一天24小时随时待命。这将明显地增加工作量。一个损坏的Build被认为是一级严重错误。”



  随着Windows Server 2003开发周期接近尾声,错误统计奇迹般地降低了,每天的过程也简单多了。接着微软宣布了名称改变。“我们不得不接受这个可恶的决定,”Wanke告诉我们,“他们应该在6个月前作决定。那时我们都会赞成这样做的。但是后来CEO Steve Ballmer不得不与所有的战斗团队探讨为什么做这个改变。”团队要修改所有商标图案、文本和系统注册表,要求的速度是前所未有的。问题是要在几千个地方进行更改,而这通常需要在错误跟踪系统中增加几千个入口。“我出去找了3个最精干的开发员,然后说‘去改吧。’其中一个开发员修改了7,000处与Windows .NET Server相关的地方。我只是说有些人我信任,有些人我不信任。我告诉这些小伙子,‘不要告诉我你们做什么,尽管去做吧。’”



  向终点冲刺



  2003年1月21日,我们在作战室的那一天,据Wanke声称,Windows Server 2003的错误达到了“绝对历史最低点”。“我们将在本周结束项目,”Wanke说,“它已完成了。我们将把它卖出去。”那一天,Windows Server 2003只有少数的错误,并且大部分只是简单的商标问题。“我们有大约150个重要问题需要定位,其中,我们即将修正100个。所有这些错误的严重级别是一到三,加起来我们只剩下很少的一级严重错误需要修正,在销售之前必须全部修正。”



  Wanke说那时服务器团队已经修复了所有已知的安全性缺陷。他说:“我们对安全性很满意,很高兴看到我们是安全的,我个人对这个工作过程有深刻印象。这是个修正和思考的过程。我们都认为它非常安全。去年提出的‘可信赖计算’是我们的里程碑,因此所有一切将会比较容易地开展。对开发员来说,他们现在有了统一的思想和最佳实践的相同培训。在从前不同的小组使用不同的方法。安全性使它们得以统一。现在所有人都理解了最终思想,并且相互交流容易多了。”



  随着Windows Server 2003组件的开发完成,开发队伍进入了一个过渡期。首先,产品将被封存,生成过程会被冻结。这个Build会被分发到大学以及微软公司体系。Wanke强调:“这是最终的Build,我们将停下一段时间,其间对产品不会有根本的修改。被封存的Build也将由测试者和JDP成员持有。”



  如果在封存期出现问题,战斗团队会逐个决定是否修正错误。如果是必要的内核修正,就会产生一个新的Build,封存就被“重启”。“核心组件的更改会延迟RTM,”Wanke说,“我们将首先请求客户运行,在停工之前也要运行数天,这是一个长时间的反复。”每一个Windows Server 2003功能团队都必须连续地运行封存生成品21天,然后才可以投放生产。



  但是Wanke并不担心精确的日程表,因为一年的辛勤工作最终会有结果,他的团队已经开始为RTM庆祝聚会做准备,聚会将在大学的一个足球场举行,如果不被允许,就移到一个车库里,Wanke考虑的另一个与RTM相关的问题是必须确定启动地点。“我和启动队伍一起登记地点,他们需要可信度在95%的确定日期。”他们也要使OEM们确信系统已准备好启用,“我必须确保8000个期望者得到一个销售奖励。”Wanke补充道。



  最后,所有努力的结果是诞生了一个微软历史上最可靠最安全的操作系统,Wanke对这个项目的贡献是不可忽视的。“在一年半的时间里,我基本上没有离开战斗团队,没有因为个人原因休息过一天,在后期我们每周工作6天,我们让员工在星期六带上自己的孩子。那是一个家庭日。星期六没有法定要求。但你仍然要留在那里,仍然要进行生成工作。”



  Wanke还会掌管未来版本Windows的战斗团队吗?



  “没门,”他笑着说,“没门!”
回复

使用道具 举报

33

主题

203

回帖

4503

积分

论坛元老

积分
4503
发表于 2003-8-8 17:39:27 | 显示全部楼层
[emb7]
再长的路也有尽头,千万不要回头,再快乐的心都有烦恼,千万不要在意,请相信,野草遮不住太阳的光芒,困难挡不住勇敢者的脚步。 我这个男孩崇尚自然纯朴的生活。喜欢聆听约翰·斯特劳斯的圆舞曲;喜欢探讨梵高画中的精神世界;喜欢阅读柯南道尔笔下的福尔摩斯;喜欢研究中国上下五千年历史和古希腊文化;喜欢享受柏拉图式的精神恋爱;喜欢捕捉大自然的规律。向往去神农架探险,到罗马度假。

4

主题

98

回帖

4861

积分

论坛元老

积分
4861
发表于 2003-8-13 20:23:57 | 显示全部楼层
[emb7]
鱼说:你看不见我的眼泪,因为我在水中 水说:我能感觉到你的眼泪,因为你在我心中!偏偏喜歡妳!! 愛是一种感受即使痛苦也会觉得幸福! 我欲与君相知,长命无绝衰。山无棱,江水为竭。冬雷阵阵,夏雨雪。天地合,乃敢与君绝。  人一定要靠自己! 因爱而恨,爱之深切,恨之浓烈,人嘛,爱了,恨了,说了,做了,又如何??不过是一夜未眠,不过是一夜泪。恨的远比爱的轻,伤的远比爱的重。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|西京校友网 ( 陕ICP备11003551号-5 )

GMT+8, 2025-5-6 17:37 , Processed in 0.023408 second(s), 7 queries , MemCache On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表