从支持码头工人能够运行关键应用程序像Oracle和SAP,一系列服务和sdk,让你从备份,通过搜索,API管理,移动通知和分析,甚至运行你自己的流媒体服务,Azure越来越像超过平均公共云。
它不仅将平台和基础设施的功能作为服务云架构混合在一起,而且从某种意义上说,它本身就是一个平台。软件供应商曾经只为Windows Server构建的工具和服务如今出现在Azure上。
Azure的副总裁Jason Zander向我们解释说,这和构建自己的私有云的能力一样重要,这也是微软谈论“云操作系统”的原因。这就是云操作系统这个绰号的初衷。其中一些是我们最初使用的概念,比如操作系统有一个存储子系统,它有一个用于执行应用程序的计算端,而云也有所有这些相同的部分。”
但在云中运行应用程序的要求,在他们工作的最好的如果他们作为服务或构建的,渐渐地,microservices——而不是一个巨大的服务运行完全(失败)你有较小的连接在一起的服务api的集合,所以你可以改变、更新或重新启动单独的碎片——意味着你需要使用的工具这个“云操作系统”很像微软本身发展的工具来构建和运行Azure。Azure上推出的新服务越来越多地向客户提供相同的工具。
Zander解释说:“一些技术部分的一致性是正确的。”“负载平衡,我在一致性、可用性和所有需要的正常部分之间进行权衡。如果你能编写一些软件,在高可用性下保持高一致性,并获得良好的性能,那是相当惊人的。我们在Azure核心中所拥有的一些东西确实可以做到这一点。
“Azure的下一个版本的控制平面是建立在我们已经构建了很长时间的一些技术上的。它是Azure数据库的基础,我们的数据库即服务;这是驱动它并保持其高可用性的潜在支持系统。”
“人们试图解决的复杂程度越来越高,”Zander说。企业一开始可能会把虚拟机放到云里,但他们意识到自己需要更多。“这很好,但对于扩展软件来说并不合适。现在,您必须开始在可用性的基础上进行扩展。您需要底层基础设施为您提供这些,然后在其上使用组件进行编排,特别是用于扩展的微服务。试图弄清楚如何保持一个高可用性的环境和区域可靠性——在这一点上,你开始进入分布式算法。”
他解释说,这远远超过了数据库的高可用性。“数据库通常会有某种类型的故障转移复制,就像witness的想法一样。但当我们运行(Azure的)控制平面时,我们将运行7到9个关键软件实例。”这些实例都运行在Azure内部的不同硬件上。
他继续说道:“这样即使我有硬件故障或电源故障,我也可以让它继续运行。然后你开始思考如何在如此复杂的环境中复制状态,如何维护quorum?下一个问题是“你如何处理升级?”’如果我想让软件的新版本通过,它实际上是如何工作的?”
这些都是微软已经为Azure解决的问题,现在可以提供给客户。“我们特别做了Azure Batch,因为我们发现人们试图进入并编写这类引擎,而事实是他们很难做对,特别是当你考虑到重启和检查合并的容错能力时。
“从概念上看,这似乎很简单——细节决定成败。我们用一些我们用过的东西——我们用它来为Azure媒体服务进行网格编码,我们在保险和精算行业也有客户使用它——并把它们变成了一种服务。”