Marc Andreessen 曾说过,“软件正在吞噬这个世界”,而在数据中心领域,我们也正在目睹这一潮流。软件正在接管那些过去一直由硬件实现的功能;而对于人们如何共事,这一变迁正在引发戏剧性的改变。
基本上,整个云计算的发展都与用软件来取代或抽象硬件有关。它始于虚拟化,已经走过了数十年的时光,但只是在最近10 来年间才在商品化硬件方面普及开来。
将硬件与其上运行的服务解耦,将让大量服务器得以合并,从而加速乐硬件商品化,并进一步降低制造商的底线——他们已经处于勉强维持利润率的境地了。尽管对硬件制造商来说这并不是最佳产出,但对于VMware 这样的创新型软件制造商来说则是非常好的消息。同样,技术买方也乐得如此。
很快,人们就注意到了,虚拟化并不只是用来节约资金的——它还提供了新的可能。物理基础设施的变动率受到两方面的制约,分别是供应链,以及诸如服务器上电或固件升级等工作所需要的时间。但一般来说,虚拟基础架构则是通过API 工作,因此会明显快很多。过去在物理基础设施上进行的需要数周甚至数月的事情,在虚拟服务器和网络上操作的时候,可能往往只要几分钟或几小时。
在2009 年,我们终于看到了虚拟服务器的数量超越物理机。这意味着现在大部分从事基础设施工作的人,已经不再需要在硬件上操作了。讽刺地是,这可能会创建一个新的前所未有的烟囱(注:Silo,在本文中指企业内,处于互相独立状态、缺乏横向联系的垂直管理体系,如开发、IT、运营等):专注于维护从硬件到虚拟机层面的团队。同时,这个星球上的其他人则在纯软件的环境中执行操作。
好吧,至少一定程度上是这样。事实上大部分组织机构都已经虚拟化了他们的计算资源,并且或许已经迁移到商品化硬件上,来实现防火墙或负载均衡器(基本上,使用的是运行Linux 或BSD 的x86 盒子,并叠加了某些特殊的软件)。但是他们的存储和网络资源依旧侧重于硬件,即使其上的商品化IP 设备,其行为也是尽可能地按照硬件设备的方式,而不是类似软件的表现。
下一个重大的发展,不仅会把计算抽象到软件层面,还会抽象存储和网络。这是一种向着完全由软件定义的基础设施的转变,将为采用它的组织机构开启无数的可能性。
DevOps 和软件定义基础设施
对于云计算来说,DevOps 既非因也非果,不过 DevOps 倒的确是一项与云计算关系紧密的运动。基本上它算是一种文化变革,其目标是打破开发者与 IT 系统管理员之间泾渭分明的状态,从而以更高的频率,更好地部署软件,并更好地匹配业务需求。
开发与 IT 之的间这种分隔之所以会存在,不仅仅是因为开发者和运营人员的兴趣不同,而且实际上他们的典型工作场景甚至会发生冲突。系统管理员被要求保持 IT 运行平滑可靠——没有故障,没有宕机,而且能够根据业务要求按需扩展。开发部门则处于另一个方向,他们被鼓励频繁发布新代码,从而在竞争中保持领先。在 IT 运营部门看来,开发者们发布充满 bug 的代码,而留给 IT 接手时则会让 IT 难以开展自己的工作。而在开发部门看来,IT 运营部门对流程和程序的坚持,则阻碍了开发工作的开展。
不过,如果我们将基础设施看作软件,那么就可以将它当作一个正在运行的应用,并围绕运营构建软件开发工作流——比如应用升级、软件补丁等,从而让系统管理员和开发者结成一线,和谐地工作在一起。如果我们认为基础设施只不过是服务器、交换器和路由器,那么刚刚说的这些就不可能了。但一旦我们将基础设施视作一系列服务,那么很明显我们就可以把它当作软件来对待和操作。
DevOps 应归于文化,云计算应归于技术——然而在现实中,云计算必须与二者同时相关。尽管技术无法解决“政治”问题,但会有助于缓解。云计算技术能够让应用开发者围绕着无法提供软件世界观的 IT 部门工作。但对于能够获得完整的软件定义基础设施的人来说,传统的系统、网络和存储的烟囱正在被打破。单独一支团队就能够构建并部署新应用,支持更高的敏捷度、更快的速度,同时从软件就绪到真正将价值交付给目标用户所需要的时间也会大幅减少。
新型 IT 与新型系统管理员
我们正在见证一类新型管理员的兴起,他们用基础设施能力和服务的方式进行思考——而不是沿用设备的思维方式。对于运行在类似亚马逊 AWS 等环境里的应用,我们已经在其管理员身上,看到了这场思潮。在大部分情况下,这些管理员无需考虑网络或存储,他们只需要围绕亚马逊提供的软件,构建自己的基础设施。
这种将基础设施作为软件的重新定义,正在融入企业——一般通过基于 OpenStack 等技术的私有云。即使现代私有云并不能完全取代传统上基于设备的企业基础设施,但是他们依旧正在推动组织机构,非常迅捷地朝着将基础设施作为软件的方向前进。哪怕能够在一小时内启动 1000 个虚拟机——启动、运行并执行真正的工作——但要想建起新的虚拟局域网或配置好存储,依旧需要 10 倍的时间,因为做这些事情的人处于不同的烟囱,组织机构很快就注意到自己需要发生改变。
随着云计算对企业的“侵蚀”,我们会看到从纵向团队向横向团队的转化。我们的云计算团队会把自己的工作看作维持 API 和 SLA——它们能够理解全部基础设施的需求。我们的应用团队将依据这些 API 和 SLA 来谈论基础设施,而不是讨论操作系统或硬件需求。从硬件到软件的抽象,将从技术界面转移到团队界面——而我们的业务将看到这样的好处。我们会更频繁地发布新产品,更快速地获取客户反馈,而且能够更迅捷地响应市场变化。把基础设施当作软件来治理,并将其作为一种核心能力,将为我们提供与竞争对手相比显著的优势。
毫无疑问,最终我们将发现,我们所有的应用都运行在服务层和按需的基础设施。在商品化硬件之上运行的软件,自身也会商品化。我们的绝大多数应用,将不再拥有独一无二的特殊基础设施要求——相反,它们将能够运行在通用软件平台上,这些平台完全消除了应用层面操心基础实施的需求。
在这个世界上,存储、网络和系统团队(更不必说 VMware、防火墙和负载均衡团队)等垂直的烟囱,带来了如此之多的不便——并延缓了业务的发展——将不再有任何意义。在这些领域,我们将拥有负责业务服务可靠交付的团队。毕竟,这才是 IT:一项业务服务。
你的团队是在努力迎接这一变革,还是在拼命抗拒这场变革?
关于作者
Luke Kanies,在 2005 年创建了 Puppet 及 Puppet 实验室——出于恐惧和绝望,带着产出更好的运营工具并改变我们如何管理系统的目标。自 1997 年以来,他就通过文章及演讲来介绍自己系统管理领域中的工作,而自 2001 年起他开始专注于开发。他开发并发布了多个独立系统管理工具,对 Cfengine 等产品的建立做出了共享,并出品了 Puppet 及其他工具,包括 OSCON、LISA、 Linux.Conf.au 和 FOSS.in。他在 Puppet 方面的工作成为 DevOps 中的重要部分,并且正在实践关于云计算的承诺。此外,他还是俄勒冈州软件协会的董事会成员。
评论