@Rays
2016-12-12T21:02:29.000000Z
字数 7097
阅读 1715
摘要: 《系统与网络管理实践》一书从整体视角看待系统管理,给出了解决问题的通用框架和策略,内容并非局限于具体的操作系统、设备品牌或环境类型。该书意在帮助读者成为专业的系统管理人员。第三版中吸纳了许多系统管理领域的最新进展,包括DevOps、架构即代码、持续集成(CI)、卓越运营及评估等。
作者: Ben Linders
正文:
本文要点
- 对《系统与网络管理实践》第三版中的新内容先睹为快。
- 学习如何获取DevOps实践,用于支持企业IT和桌面应用。
- 比IT服务beta测试更好的方法是什么?是做许多次小规模的发布。
- 了解双向移情是如何营造协作的IT文化的。
- 一个新服务上线后,系统哪里会发生故障?各处皆有可能!下面介绍如何避免突发的故障。
《系统与网络管理实践》一书从整体视角看待系统管理,内容并非局限于具体的操作系统、设备品牌或环境类型,而是给出了解决问题的通用框架和策略。该书意在帮助读者成为专业的系统管理人员。第三版中吸纳了许多系统管理领域的最新进展,包括DevOps、架构即代码、持续集成(CI)、卓越运营及评估等。
InfoQ的读者可以使用打折码下载本书。
InfoQ访谈了本书的三位作者,Thomas A. Limoncelli、Christina J. Hogan和Strata R. Chalup。内容涉及系统管理改变游戏规则的策略、使用采用开放标准和协议的架构的优点所在、新服务上线时会出现哪些问题、如何对可能发生的故障未雨绸缪、监控系统的最新进展、改进系统管理与系统用户间的交流和协作、如何评估系统管理提供的服务,以及本书作者们期待未来在系统管理领域将出现的进展。
InfoQ:本书的目标读者是哪些人?
Limoncelli:本书面向供职于各种规模的企业和教育机构中的系统管理人员,从事于售后服务、桌面应用支持和软件交付企业的读者,或是从事后端服务的读者。
Chalup:撰写本书针对于系统管理人员和具体执行系统工作的人(他们可能并非专业的系统管理人员),这些读者有意向通过学习“为什么要如此做”及“应如何去做”的最佳实践而实现自我“提升”。本书并非侧重于特定的平台或程序,而是描述了对设计和过程的模式并加以解释。这种撰写方式可使读者把这些模式应用于任何当前技术中。
Hogan:本书也适用于企业中系统管理人员的主管经理。特别是本书的最后两章,聚焦于如何建设性地评估系统管理员的组织,以及如何驱动改进并做优先考虑。
InfoQ:在第三版中给出了哪些新的内容?
Hogan:第三版有大量的更新。过去的十年间,系统管理领域出现了不少显著进展。该版内容体现了这些新进展,并解释了最佳实践是如何改变的。我们探寻了如何在运行商业软件的环境中应用DevOps方法。书中也非常注重管理自动化,以及通过集成HR数据库和资产数据库等系统构建出众的服务。
Limoncelli:非常多!在第三版的五十六章中,有二十八章的内容是全新组织的。在上一版中只有一章内容涉及桌面服务,而在第三版中有八章的内容涉及,其中涵盖了从架构到桌面生命周期以及新员工入职管理的所有事情。服务器一章替代为连续三章的内容。运行服务一章现在是连续七章的内容,涵盖了规划、各种部署方法以及服务转换等。第三版比第一版加厚了50%,比第二版加厚了20%。
InfoQ:本书开篇给出了一些改变游戏规则的策略。这些策略是什么,它们的作用如何?
Limoncelli:本书以如何拯救一个处于极度糟糕状况的企业为开篇。我们上一个版本收到反馈说,一旦发现全系统网络都出现故障,这时系统管理人员很难做出正确的处置。因而第一章的内容是关于如何尽可能先把“火”扑灭的,以便你能使用本书其余章节所给出的建议内容。
第一章至第四章的内容是关于组织工作的策略。例如,系统管理员在某个时刻会发布一个新的服务,但是客户并不喜欢这个服务。这会使系统管理员感觉自己浪费了一年的工作。书中给出了如何解决问题的策略,那就是将一个新的服务转化为一系列的小型服务,可能每周做一次发布。第一次发布的服务可能只提供了少量特性,并仅对一小组用户可见。这时所得到的反馈是无价的,可用于指导下一次的小型服务发布。随时间的不断推进,每次小型服务发布会逐渐添加特性并支持更多的用户。这样,该项目可能仍需花费一年时间,但是项目完成时会构建出一个更好的系统,更接近和匹配用户的需求。对于无论是要推出一款新型办公用打印机,还是推出一个投资百万美元的网站,该策略均适用。
很多人会认为系统管理类书籍就是教会人们如何去输入命令和点击按钮,本书的这种开篇方式可能会令他们感到惊奇。但是一旦你与高级系统管理员交谈,这些人就会告诉你书中的这些内容都是顶级系统管理员的真正秘密。许多建议是在操作手册中找不到的。
Hogan: 第一章至第四章描述了系统管理人员在习惯和方法上的改变,这是过去十年间系统管理所发生的演化的基础。这四章中所描述的方法构成了所有系统管理员所应带有的工作习惯,这些方法也会告知系统管理员如何做出解决各个挑战的决策。
InfoQ:使用一个采用了开放标准和开放协议的架构,我们从中能得到哪些好处?
Limoncelli:会得到竞争,竞争将引发更好的项目和更低的价格。我们在前期的版本中就给出了这个看法,这在当时被认为是激进的,但是现在却被人们普遍接受。我们很自豪此书能引领潮流。但是软件厂商也在寻找创新的方法以锁住客户群,我们也震惊于这些企业所做的持续不懈的努力。此版也力图让读者明白这一点,进而留意软件厂商所做的更细微的新尝试。
InfoQ:在新服务发布时,哪里可能会出现故障?
Limoncelli:任何事情!服务还不够快速、服务未给出客户所需的特性、服务破坏了数据中心中其它不相关的系统、服务并未在所期待的任何浏览器中工作、服务不能被通过VPN接入的用户看到,诸如此类,几乎所有可能的事情。几年前,在Apple公司的一次著名的主题演讲报告期间,他们的网站出现访问故障,导致原因是一个新的“实时新闻源”特性不能扩展到百万并发用户的级别。有谁能预见到这种故障?我们可以!在未做容量测试的情况下,这样关键的事情是不应预先开放给百万级别的用户的。但是让Apple去哪里找到百万级别的用户仅为测试那一小部分代码?那好,我们建议将需测试的代码作为不可见元素放入到主页中。这种做法给出了足够解决问题的预置时间去测试代码的扩展能力。这并非纸上谈兵瞎指挥,已经有一些企业一直在做此类测试。Facebook Messenger就作为不可见服务在用户浏览器中运行了六个月,在此期间仅是发送测试信息,直至用户规模问题得到了解决。
InfoQ:为准备好解决发布过程中的问题,系统管理员应怎样做?
Chalup:关键在于尽早地获取信息。最坏的情况是在发布日当天才发现问题。为尽早发现问题,一项基本技能是先做Beta发布。虽然这个方法众所周知,但是很多人认为没有必要实施于内部系统或是系统管理工作上。让我们进一步思考这个问题,你能提前真正发布数月为验证假设单独而发布一个特性吗?我喜欢提前数月发布不具有任何特性的服务,仅是一个欢迎页面。这让我有时间去演练软件升级、开发备份过程、编写文档并测试操作手册,等等。同时开发人员可以通过添加特性去更新系统。一旦系统准备好可供真实用户使用,这时它已经运行了数月,很少再会发生意外故障。这种做法的最大好处是让用户尽早用上新的特性。
InfoQ:有哪些系统监控的最新实践?
Hogan:工业界正发生巨变,系统监控也从对启动宕机的监控转变为基于时序的监控。原有方法监控是否有服务启动或宕机并报警,例如有服务长时间不可访问。新方法从多个方面收集系统的遥控数据,在这样的历史数据上做数据挖掘,预测系统可能将会何时出现故障。这可以根治系统故障,防止服务宕机。系统管理人员很少再需要在凌晨四点被叫醒去解决系统故障,他们很可能在工作时间就解决了那些将引发故障的小问题。原有方法就像是帮助有心脏病的人,而新方法就像是对高血压病人的处理。使用了新方法的系统包括Bosun、Prometheus和Circonus。
InfoQ:你们能解释一下“一次性解决问题”这个口诀吗?
Hogan:一旦系统发生故障,我们总是希望能用最快的方法解决它(例如重新启动服务器),并继续做事。这可能是由于用户在不断催促,系统管理人员需要为用户提供支持并尽快让服务运行起来,或是仅是因为管理员无暇顾及故障致因。但是如果没有搞清故障原因并铲除故障的根源,这样的故障还会再次发生,还需要再次做故障恢复。因此最好的做法是一次性地解决故障根源,而非每次故障发生就去重启服务器。
例如,如果有一个服务并且运行服务的机器常处于CPU、内存和交换空间高占用率的状态,这种状态是可被监控所检测到、生成报警并通知管理员重启系统。更聪明的做法是实现异常情况下的自动重启,或者去调查一下哪些进程侵占了CPU和内存,检查已知的程序故障,并在必要情况下向软件提供商发出支持请求,解决软件故障。如有可能可以将软件升级到解决了故障的版本。后一种方法就是我们所说的一次性解决问题方法。问题得到了永久的解决,而非持续重复相同的工作。这并非是让机器在故障得到永久解决前一直处于宕机状态,而是做到透彻地分析问题并尽快永久地解决问题。
Chalup:清空一片沼泽可比与其中每一条鳄鱼做搏斗好多了!
InfoQ:DevOps为系统管理带来了哪些关键改进?
Chalup: 对于专业人员,DevOps带来了一定程度上的协作责任。很明显,程序开发人员的责任在于创立提供功能性API的可维护系统,而管理员的责任在于建立可管理和监控的环境,可在这样的环境中操作系统。双方无需在发生故障时隔墙对骂。聚焦于系统的完整生命周期,从系统设计到开发、发布直至维护,这将使两组人员的想法更加整体统一。
Limoncelli: DevOps技术会导致更少压力和更大生产力的环境。设想如果开诚布公地表述招聘职位要求的话,那么大多数企业在招聘IT员工时都会说这份职位在整体上是非常好的,只是需要应付每年两次的“地狱月份”,其中每个人都会因为一些主要软件系统的新版本而忙做一团。“地狱月份”中是如此地充满压力、恐惧和指责,它会伤害到你的员工、你的工作,甚至你的生命。不幸的是,许多公司每个月都是“地狱月份”。而采用了DevOps的企业则无需如此,企业每月甚至每日都可以做环境的快速发布,更频繁地将升级自动部署到生产系统中,并很少需要甚至无需人为的参与。这使得发布成为毫无压力的事情,只是同样节奏的一个工作日又来了。员工无需对将到来的地狱月份心生恐惧。
虽然现在使用这种技术的企业很少,但是数量正在增长。当大多数的企业这样做以后,那些还没有消除地狱月份的企业将发现自己很难招聘到员工,不仅仅是IT员工。如果让应聘者选择除此以外其它条件都一样的两个企业,你会选取为员工提供无缝技术和支持的企业吗?
InfoQ:你们对于改进系统管理和系统用户间的交流和合作有什么建议吗?
Chalup:重要的是,在客户交流中尝试直接发现客户请求的目标所在与紧迫性。
我曾听说曾有用户向一位同事申请一块网卡,该同事回复说需要等待15分钟,并由客户支持来提供,用户就离开了。在10分钟内,网络崩溃了,问题最终定位在该用户挪用了一块网络传输设备,“我需要这个设备,而且看上去没有人在用它。”
系统管理员需要超越问题症状本身,去发现用户事实上在努力达成的最终目标。所需培育的重要心态是成为一个为用户提供任何可能的人,而非成为系统维护人员。不应将客户的请求当成是烦人的打断而尽快应付了事,而是应作为真实世界的用例,帮助我们理解如何去提供有效的服务。
Limoncelli:做好与用户的交流还是不够的。为创建可用并且可持续的IT系统,我们必须形成双向共鸣与合作。我们对用户的理解必须基于与用户形成共鸣点。可以通过跟随一个用户一星期时间,更好地理解用户的工作过程,发现我们所构建系统在使用中的不顺之处和陷阱。这也可在团队层面去做。我曾与两个在工作中互为依赖的团队共事,但是两个团队间却很少有直接的交流。我尽力协调两个团队坐在了一起,将主要过程完整地走了一遍,列出所有的步骤并指出了其中的未尽事宜、不可靠的部分和繁重的手工操作。这种全新的理解引领每个团队做出了改变并改进了过程。其中有一些很小的事情,例如按日期而非姓氏排序显示数据。也有一些很大的事情,例如给出让其它团队无需提请服务请求就获取所需内容的API。我记得有与会的人一度这样说:“不需要记录这个程序故障,我刚刚修改了代码。它今晚就会发到生产系统中。”
共鸣是一个双向通路。开发人员通常认识不到运维的难处,并拒绝去添加将会大大降低运营冲突的特性。他们为什么会这样做呢?因为开发人员的绩效考核是根据是否编写了新的特性。但是如果让所有的开发人员共同承担起系统正常运行的责任,必须担负随叫随到的职责,这样痛点就会被快速解决。
Hogan:在与终端用户交流时最重要的事情是倾听,确保用户明白他们的问题正在被听取。提供一个论坛,让用户可以提出意见,并可对将要推出的大型项目或是可消除大量时间消耗的小改动进行投票。一旦找到了让用户提供反馈的方法,我们就可以分配一些资源去处理这些用户最高请求,并用请求的处理状态去更新论坛,显示请求是否已完成、正在进行还是正在考虑。这样用户看到了自己参与其中的价值所在,并知道他们的问题已被听取。
InfoQ:你们如何对系统管理人员所提供的服务做绩效评估?
Chalup:任何评估工具都具有一系列为评估定制的期望值或度量。用户满意度和企业成熟度是两个主要评估系统,它们在一定程度上是正交的。
客户满意度矩阵与响应能力、端到端解决方案完备度、提交问题解决时间及类似问题相关。它是评估系统管理人员对客户服务良好程度的重要工具,因为他们所做的大部分工作在本质上都是预防性的,而且容易被忽视。一种变体是评估对自身服务的满意度,例如应用适合性和反应能力。
从为企业提供的整体服务的角度考虑,能力成熟度模型是测定IT团队操作实践成熟度的标准方法。我们在本书中讨论了如何应用CMM,以及如何通过各层级的过程、可重复性和文档工作建立一个更具操作能力的系统组。我们在书中为对该方法有兴趣的企业给出了40页的指导内容,其中包括可被企业自身团队所采用的完整的评估系统,以及如何使用该系统的指导意见。
InfoQ:你们期待未来在系统管理领域将会出现哪些发展?
Chalup:我期望能看到工作场所个人助理的发展,这种个人助理可感知技术问题,就像是将Siri用于系统管理中,而不像是Clippy这个我们由爱生恨的老朋友。这样的自动化专家系统将会创建随时可用的虚拟咨询台,并可在询问一些有用的背景信息后逐步升级为现场工作人员。
Limoncelli:我期待所有工作会变得更加可程序化。这不仅使IT可以自动化他们的工作,而且提供了自服务门户,让非IT员工无需等待IT服务。人们常会认为这种事情只有“云企业”才能做到,但是它正在各个层级的企业中发生。在一个企业中,任何需要网络远程访问(VPN访问)的员工必须首先提出一个请求,IT部门必须经由他们的经理做批准,然后在提出请求的员工的电脑上安装软件并做配置。一旦改进了系统的可编程性,可以最终实现这样的一个系统,员工可以在自服务门户申请VPN访问,他们的经理会收到一封带有“同意”点击链接的电子邮件。在一分钟内电脑软件更新系统(Puppet)就会安装VPN客户软件并做安全配置。这消除了等待时间、输入错误和由错误配置所导致的安全问题。实现这样的系统需要实现五个可通过API编程的子系统。在10年前这还是不可能的事情。
Hogan:下一年中,物联网革命将会给出一些新的机遇。我们的网络将充斥着大量的“智能”设备,但所谓的智能要远低于我们所熟知的智能。这些设备正在被传统上并不生产可联网设备的企业所制造,虽然这些公司并不希望这些设备会被黑客攻破或者成为僵尸网络的一部分,但是他们予以界定条款和应对办法。这个重任终将落在系统管理员身上,去找出如何保护他们的企业网络乃至整个世界的方法,其中涉及公司的智能灯泡、百叶窗、影音系统、电冰箱和卫生间,等等。
物联网还意味着为确保设备团队参与产品评估和选型过程,系统管理团队将需要为设备团队提供支持。新出现的标准将使物联网设备更易于管理,但这仅是设备制造商需要符合的标准。物联网领域是一个高速变化的新领域。你应确保自己了解该领域发展的最新情况,使所有这些新的网络设备类型尽可能的易于管理,并被无缝的管理,否则你会发现自己在不断在扑物联网的“火灾”。
Thomas A. Limoncelli是世界范围内的知名作者、研究者和系统管理员,在Google、Bell实验室和StackOverflow.com等企业中具有20多年的工作经验。他现在StackOverflow.com管理SRE团队。
Christina J. Hogan具有20多年的系统管理和网络工程的工作经验,曾工作于硅谷、意大利和瑞士。她具有计算机科学的硕士学位,航空工程的博士学位,曾是一级方程式赛车团队的一员。
Strata R. Chalup具有超过25年的硅谷工作经验,主要领域是IT策略、最佳实践和可扩展架构。他曾供职于Apple、Sun、Cisco、McAfee和Palm等公司。
查看英文原文:Q&A on the Practice of System and Network Administration (3rd Edition)