第一个问题就是所有的快速交付在向底下基础设施要需求的时候,你要让我快速把业务拿到,让我部署上去把业务运行起来。最好就是说我提出这个需求的时候我马上拿到这个资源。对于一个业务来说还好办,但是对于底下的基础设施来说你需要的需求不一样的,有时候需要硬盘大的等多样性的需求和快速交付有一个天然的矛盾问题。怎么解决这个矛盾的?首先说我们要改变传统的预算模式。我们还是业务线提这个预算,我们需要做这个审核,每年有几次的预算审核,如果大家有过几十万台大数据中心,你发现每年预算这个复杂性基本上是不可承受的工作。而且每个预算提出来的时候,他希望我最好拿到我需要的资源,但是这是不可能实现的事情。因为需求的越多样就意味着说你每个量PC就越少,就是越需要定制,越不能交付。提供交付能力我们改变这个运算模式,由按需预算改成定期扩容。我们做over provisioning,利用系统冗余资源满足业务突发需求和多样性的需求。你提前准备好这种资源一定是确定的,来自业务线的需求是不确定的。我们怎么能够做到这点,你要做provisioning你必须是标准化的需求。对于上面应用来说最重要能力就是做快速迭代,它拿到资源以后可以利用上去去做实验,去升级它的版本。但是我们怎么使这个迭代做的更快,除了我们现在提供的这些功能之外,实际上还需要很多很多东西,一个我们需要有更好的资源调度,需要有平台帮你处理容错和扩容的问题。这个实际上很难,我们做了很久,整个业界也做了很久,实际上这个还是很难做到的。我们下面有一个平台,上面的业务还是要做处理,需要把模块之间关系曝露给你,需要把数据提取出来,前面需要逻辑的部分是无状态的,这时候我才能在错误出现的时候做调度,流量变大的时候做扩容,但是这个意味着你这个结构需要重构,而且底下的系统需要有更好的错误监测和调度的能力。对于应用来说你需要有更好的部署能力,这个部署能力在大规模的系统里面,实际上也是一个很复杂的事情。我们典型的在线服务可能是几百个上千个模块在里头。我们做部署的时候你发现我们部署一个系统,它有很多的模块间的依赖关系,每个模块有好多个版本,要做多版本的迭代,这时候业务要存一个多版本的数量。怎么由系统帮助你维护服务之间的拓扑关系,这是需要解决的问题。我们有了一套环境之后你可能要扩建多个环境出来。
第二个问题:我们分发可能经历灰度过程从5%到10%到90%到100%,这个过程中间需要处理,这个业界很少做这个研究的。资源首先应该是弹性的,基站位网络还有机器,这是真正可以弹性扩张的。下面你快速迭代,服务运营的需求,对这种服务运营的需求你同样也需要支持这种弹性扩张。我们说到系统的弹性,它应该每个上面都有这种端到端统一做交付,由这些能力加起来才是真正弹性的平台。根据多年关于Elasticity的经验,你没有一个更好的预算模型,更好的硬件系统架构的话,是一个很大的瓶颈。当你把资源问题解决掉,功能解决掉,对上面的业务来说实际上最典型要处理的问题就是它需要做快速的迭代,做快速的版本升级,这里面需要有很多环境的支持。然后做运营的时候有大量收集数据和分析数据的需求,这些都应该集成到我们整体的平台上去才行,只有把这些做起来才是真正弹性的平台。我们为了解决这个问题,我们需要什么东西?我们考虑这个数据中心体系是什么?你本身基础设施怎么升级做到标准化,在标准化下满足应用多样性的需求。我们需要把那些资源都给出来,现在的机器一个一个节点都是CPU、内存、硬盘、SID,我们有那么多台机器插入的时候,整个基站和数据中心是单位,我们还可以把那些资源拿出来,CPU、内存、硬盘都拿出来,拿出来以后我们有很多的灵活性,我们就可以重新构造成一台一台的机器。这个有点像是说我们需要定义数据中心的体系,这个体系对于单机来说更像是原体系机构,我们配置这些原体系机构变成一台一台机构的体系结构。
另外我们在这个上面需要OS,可以帮助我们做资源的调度、更好的部署整个发布的管理,这是整个OS需要的功能。disaggregation我们把每一个节点里面CPU和电源拿出来放在后面去,下一步可能把网络拿出来放到后面去,这是无物理机的方式,这个不会改变整个系统的disaggregation。下面我们会做一件事情就是把里面机器节点直接联系起来,现在有这样一些技术可以使它们联系起来。一些机器可以访问另一台机器的某一个设备。再一下我们彻底的把它们重组起来,我们通过disaggregation出来,然后就可以形成一台一台需要的机器。这样我们可以在标准化系统交互的标准下满足应用多样化的需求。
我们需要有机器的管理,这个上面我们可以帮助做部署和发布,这时候应用的架构需要做变化,我们需要每一个应用里面服务依赖关系抽出来由系统管理,这个我们叫PIS的服务。然后一些应用可能服务加大,有一些它的数据,这个数据同样要列出来在前期管理,我们对应用做迁移和扩容的时候是无状态的也可以,很容易扩容。对应用的多个版本我们同样需要做软件包的管理,把它所依赖软件的环境都抽离出来由系统统一管理,这样我们可以构建出多种多样的环境出来,多个版本的环境出来。上面还要构建一些兼容系统,这个系统本身运行也会产生大量数据,我们对这些数据分析可以帮助我们指导系统的优化。这个我们已经做了一些工作,我们对磁盘做了大量的改进,现在可以把磁盘误报的错误率降低80%。在这个基础上还可以做机器CPU内存使用情况,网络通信情况,模块和模块之间通信的情况,我们把数据收集起来可以做分析,异常的检测,把异常的检测和错误事件解决连接起来,这样可以发现这个系统存在的问题防止一些错误的发生。