近年来,随着企业的业务形态从线下走到线上,企业的传统业务逐渐向互联网方向转型,对IT系统提出了新的要求,企业级客户纷纷采用云计算作为新一代的IT架构。互联网公司的飞速发展,已经印证了云计算可以对互联网业务提供有力支撑。因此,企业级客户借鉴互联网公司的经验,逐步建立新一代云计算IT架构,以更好地支撑互联网相关新业务。

Google作为IT行业的标杆,是云计算领域公认的领头羊之一。Google打造了一套高效的云计算IT架构体系,有力地支撑了Google的互联网业务,使得其搜索、广告、视频、邮箱等业务都极具竞争力。

新一代his总体架构 新一代it架构_新一代his总体架构

在Google的云计算IT架构体系中,PaaS平台最为强大,Google的PaaS平台管理了内部数十亿应用程序,并运行在上百万台服务器上。具体来说,Google的PaaS平台相关的IT架构体系包含两个部分:一部分是工具层,即数据中心操作系统,包括应用调度、日志检索、监控报警、测试打包、应用发布、镜像仓库等等。Google数据中心操作系统的核心是调度器Borg,Google内部所有的业务应用程序都被Borg统一调度统一运行在Google所有的数据中心里,并实现应用的全生命周期管理。另一部分是管理运维层,即Site Reliability Engineering (SRE)体系,SRE体系强调开发和运维的有机结合,是Google对DevOps的一种实践。SRE体系最大的特点是对IT人员(包括开发和运维)的管理,诸如各种制度、规范等,最终都落实到了工具的层面,而不只是纸面,切实加强了对IT人员的规约,保证了业务应用的快速交付和稳定运维。

新一代his总体架构 新一代it架构_PaaS_02

Google SRE体系的本质是提升IT效率

IT行业虽然发展多年,各种高新技术层出不穷,但是IT行业自身的效率仍然不高。从面向对象编程、UML、SOA、瀑布式开发到近些年流行的DevOps、微服务、敏捷开发等等,这些软件工程方法都是为了提升IT行业软件开发的效率。跟制造业的工业化程度相比,IT行业的工业化程度还非常弱。但是IT行业的软件开发、交付、运维,无不需要大量的人力工作,因此,IT公司的技术水平严重依赖软件工程师的水平。

SRE体系跟制造业的工业化程度有异曲同工之处,它们的目的都在于提升效率。一般来说,工业化程度有四层:工业化1.0是机械化和动力化;工业化2.0是自动化和流程化(过程中伴随着标准化);工业化3.0是信息化;工业化4.0是智能化。由于IT行业特殊性,软件开发需要脑力劳动,不存在机械化这一维度。Google的SRE体系分为三个层面,分别对应工业化2.0、3.0和4.0:

1、自动化、服务化、标准化,这个层面注重提升IT效率,尤其是业务应用的交付、运维效率,对应工业化2.0;
2、信息化,这个层面强调数据化的IT管理,对业务决策提供数据支持,对应工业化3.0;
3、智能化,这个层面是IT行业的革命性改变,对IT管理的方方面面都要智能化管理,对应工业化4.0。

下面以Google的SRE为例,着重介绍如何有序分步建立高效的PaaS平台管理体系,从而有效提升IT效率,更好地支撑业务需求。

第一步,应用管理

SRE体系第一步是实现应用管理,把应用全生命周期涉及的各个环节都尽量做到自动化、服务化、标准化,进而提升开发效率、缩短交付周期、加速业务应用迭代,这一步跟工业化2.0相对应。应用的全生命周期包括开发、测试、发布以及线上运维管理等环节,SRE在应用管理方面分别有相应的方法和工具提升这几个环节的效率。

首先,微服务是SRE采用的一种有利于分工协作的敏捷开发方式。微服务,可以类比工业化大生产提倡的分工协作,它提升了团队协作效率。每个微服务由一个小团队负责开发实现,小团队的人数不多,降低了团队内的沟通成本。微服务之间用开放的API进行互联,通过API来封装每个微服务的内部系统复杂性。更进一步,API采用RESTful风格,使得API的操作符合HTTP标准,更方便理解API操作的语义,便于团队合作。

其次,容器是SRE采用的标准化应用封装、分发的方式。容器,可以类比集装箱,它提供了标准化的应用交付方式,有效降低了环境异构带来的应用交付复杂度,极大地提升了应用交付的效率。Google采用的容器技术,虽然不是流行的Docker技术,但是理念完全类似。通过把应用程序和所依赖的各种library都打包在一起,形成一个二进制文件,使得该二进制文件在运行时对外部的依赖降到最低,仅依赖Linux内核。这样一来,Google内部的所有二进制可执行文件(不管程序是用C++写的还是用Java写的)都能够在任何一台Google的数据中心服务器上运行,进而极大地方便了Google的数据中心操作系统来调度运行各种内部应用程序。当Google的数据中心操作系统调度运行内部应用时,从调度器Borg的角度看,所有的应用都是标准化的容器应用,容器应用需要的资源都是标准的CPU、内存、网络、硬盘等资源。当应用都变成标准化的容器应用时,PaaS平台管理的不再是形形色色的应用程序,也不再考虑应用程序对运行环境的各种不同依赖,只需要处理应用的标准化需求,这使得数据中心的管理复杂度大为降低。

DevOps是SRE采用的变更发布、运维管理的方式。DevOps,可以类比供应链管理,它提升了应用交付效率、缩短了更新迭代周期。Google内部采用数据中心操作系统来落地DevOps,把很多IT能力变得自动化或是自助服务化。在自动化方面,数据中心操作系统提供了自动化的构建、测试、运维能力。特别的在自动化运维方面,数据中心操作系统可以实现故障自愈、弹性伸缩、流量迁移等自动化运维功能,有效地降低运维复杂度,提升运维效率。在自助服务化方面,数据中心操作系统提供了应用一键部署、滚动更新、灰度发布能力,并提供自助的监控、报警、日志服务。有了这些自助服务能力,Google开发人员可以自行发布应用并管理运行中的应用,无须依赖运维,有效地提升了交付效率。

Google内部已经落地了应用全生命周期管理,并完全实现了IT管理自动化、标准化、服务化。

第二步,数据管理

SRE体系第二步是要实现数据管理,把业务应用在运行时产生的各种数据进行采集并提供大数据处理能力,用于后续对业务进行分析,这一步跟工业化3.0相对应。

Google的数据中心操作系统会采集各个IT环节的数据,不仅包括监控数据、报警数据、日志数据等应用运行时产生的数据,还包括开发测试阶段的数据。Google利用各环节产生的数据进行各种分析:SRE部门利用监控数据分析应用的资源使用情况,Google的监控系统可以很方便地查询线上应用系统过去一两年的监控数据,很容易看出业务对资源消耗的需求,进而有效地进行资源规划,防止资源浪费提升资源利用率;Google利用日志数据分析业务的运行情况,比如Google的广告系统利用日志数据分析广告点击情况,进而提升广告点击率;SRE部门利用报警数据来评估业务系统的稳定性,Google的SRE部门对重要业务系统每个季度的报警次数有严格要求,不满足稳定性要求的业务系统则不允许上线;Google利用测试数据来评估测试用例的质量,如果某个单元测试用例失败次数过多,该测试用例会被标记为不稳定,并要求编写该用例的工程师进行改进;Google会采集代码提交、代码审查数据,工程师在升职报告里可以附上自己的代码提交和代码审查数据,用于侧面印证自己的工作量。

Google内部已经落地了数据管理,并基本实现了IT管理信息化。

第三步,智能管理

SRE体系第三步是要实现智能管理,利用上一步采集的各种数据进行分析,然后智能地管理各个IT环节,这一步跟工业化4.0相对应。Google已经实现了部分IT环节的智能管理。Google的数据中心操作系统在运行某些应用时,可以不用人为指定应用运行时需要的资源使用量,调度器Borg自动按需给应用分配资源。Google数据中心冷却系统的功率会自动根据数据中心的负载情况进行调节,数据中心部门会依据历史数据对数据中心的负载进行预测,当负载高峰时增大数据中心冷却系统的功率,当负载低谷时减小数据中心冷却系统的功率,从而节省数据中心电力开销。Google的负载均衡系统会根据业务系统的负载变化,自动进行流量调节,防止业务系统过载,保证业务稳定性。

Google内部正逐步实现各IT环节的智能管理。

云计算已经成为下一代企业级IT的事实标准。现阶段,IaaS平台相对成熟,而PaaS平台还相对早期,企业级客户对如何搭建、使用、管理PaaS平台尚有很多困惑。SRE是Google采用的一套行之有效的云计算IT管理体系,我们相信SRE的理念可以被企业级客户借鉴并应用于PaaS平台的管理,进而有力地支撑企业级客户的互联网新业务。

作者:数人云CEO 王璞