多环境下的应用运行时定义
1. 为什么需要定义应用运行时
我们的服务器可能分散到不同的区域、所属不同的厂商、具有不同的类型,应用的运行时定义就是在这些运行时提供者与应用之间建立联系。当创建应用时,能够再找合适的运行时,在运行时上创建工作负载。回忆一下,通常情况下,运维系统会怎样选择一个运行时。如下图:
首先给用户呈现的是区域,东北、华中、华南、亚太、新加坡等,再选择使用虚拟机、容器、Kubernetes。过了一段时间,我们发现用户更关注的不是区域,而是运行时类型,因此对运维系统进行了调整。如下图:
我们将一级菜单选设置为虚拟机、容器、Kubernetes,二级菜单设置为区域设置为东北、华中、华南、亚太、新加坡等。过了一段时间,我们发现,在区域下得加一个层级数据中心,运维系统又得进行适配。浏览我的网站时,你会发现,它没有分类,只有标签。因为给一个文章选一个分类其实并不是一件容易的事,它具有唯一性,但一篇文章可以有很多个标签。这就是分类和标签的主要区别。分类构建的是一个线性单一的网络,而标签构建的是一个网状互联的网络。 标签系统是内含分类系统的。借助标签系统,我们可以很好的描述应用的运行时,同时兼容 CMDB 单一拓扑源。如下图:
无论运维系统如何呈现应用的拓扑,标签系统都能够满足。使用一组标签定义应用运行时,主要的成本在于,开发高效地标签过滤系统,并维护好标签。这与 Kubernetes 中的 Label 类似,可以参考。
3. 系统与系统之间的对接
运维系统不是单一的,它们是相互协作,共同作用的。