Kubernetes,Ad Manager,Google的解耦艺术

Kubernetes与Ad Manager是Google开发的两个不同领域的产品。Kubernetes大家都认识,Google的开源容器管理平台。Ad Manager即没那么有名气,它的前身是Google基于收购的DoubleClick所开发的DoubleClick For Publishers, 是一款AdServer产品,做互联网广告行业的人应该都多少接触过,虽然是有点历史的产品,但使用的人还是非常多。

本文试图通过这两款产品,浅析Google在设计商业软件平台时的逻辑,同时分享一些个人思考。

两产品的相同之处

这两款产品看似风马牛不相及的产品,但处理的问题其实有很大的共性:就是处理资源的供求关系。

KubernetesAd Manager
SupplyNode, PersistentVolumeAd Unit
DemandPod, PersistentVolumeClaimLine Item

在传统的运维里,硬件与软件基本上是绑定的。软硬件团队必要在充分协商后才能部署。而在Kubernetes下,所有硬件都被抽象成不同的资源供应,而需求方只要声明要用的硬件和想部署的软件,剩下的Kubernetes全部搞定。

https://thenewstack.io/strategies-running-stateful-applications-kubernetes-persistent-volumes-claims/

Ad Manager处理的问题也有点类似。网站管理员在网站上设置广告位(Ad Unit),也就是库存(Inventory)。广告销售出售拉拢需求方(Demand),也就是广告主(Advertiser),然后根据广告主的要求和预算把广告分发到这些广告位里。

为了帮助用户更好地进行匹配,这两产品都提供了很多用来设置规则的工具,比如Ad Manager里的Key-Value还有Kubernetes里的labels,都可以让供给自由地分配到吻合条件的需求方。两者也有一些简单的算法,去最大化整体的匹配的合理性。

与互联网信息平台的不同

谈到Supply与Demand,很多人会联想到很多互联网平台应用(Platform)。互联网平台的本质在于消弥信息不对称,撮合供求关系。从电子商贸平台,众包平台,到现在以Uber、AirBnB为代表的共享经济,都是这一类。

关于Platform的畅销书,建议一读。

尽管都是匹配供求关系,但是Kubernetes与AdManager显然与这类“Platform”是不同的产品:

Kubernetes & Ad ManagerPlatform
设计目的解耦资源 & 高速匹配效用最大化
参与者利害关系同一利益不同利益
参与范围企业内部用户所有平台用户
匹配方法以匹配度为主导以价格为主导
人工参与程度以自动化为主以人为主
人均匹配量
匹配标的虚拟资源可交易的实物或虚拟物

Kubernetes & Ad Manager的设计目的,尽量把企业内部资源进行责任分离,与不同的角色关注不同的资源;通过计算机把供求关系当成一个最优化问题(optimization problem)去解决,节省人力物力。这种问题属于传统管理学和运筹学的研究课题。

而互联网平台则是通过自由市场原理,通过增加市场的流动能力,用价格机制解决供求关系。这里更多是一个经济学问题或者博弈学问题。

两种模式的融合

上述的两种模式也不是完全的非黑则白。比如Ad Manager,可以通过RTB价格机制来获得外部需求来最大化利益。RTB(Real-Time Bidding)是次贷危机后金融行业的Trader转行互联网广告行业时发明的玩意,对于用户的每一次访问都开始一次拍卖(Bidding),胜者(根据价格设置决定,不一定是最高价的人)赢得本次曝光机会。

Kubernetes虽然目前没有类似的机制,但既然AWS已经有Spot Market可以竞价开ec2,可以想像在不久的将来Kubernetes也能通过价格机制调用外部资源,最大化整体利益。

资源的解耦的结果是增加了流动性,而流动性是价格机制的第一步。Google通过解耦把这些传统上强耦合的资源分离,再逐步用网络至它们上市流通,实现利益最大化,真是神来之笔。

延伸

像企业内部资源的优化问题,传统运筹学已经研究很多,比如人力资源、生产资源的调配,都是老话题。但是这些研究的课题都着生产资料、金钱的分配,而非资源的虚拟化与流通化。Kubernetes和Ad Manager都在这些问题上给出了不错的答案,而类似的方式还能用在其他问题上,这还有待大家的尽情想像。

发表评论

电子邮件地址不会被公开。 必填项已用*标注