这个标题是不是很宽泛?
在云诞生之初,很多人认为它就是宿主应用程序的途径:它曾是IaaS(Infrastructure as a Service)的世界。我先称IaaS为xcopy模型,因为它总是意味着你要获得一台VM(虚拟机)然后将它拷贝到云(当然需要一些网络设置)。这是一个很简单的模型,但是,很显然,对于想要节省成本的企业而言却是相当重要的。大量的应用程序工作负载迁移到IaaS,IT部门可以减少或裁掉自己的数据中心,从而节省为其所购置的地产、建材、电力、空调等设施的依赖。这是一个伟大的发明,它现在仍然是机内云计算的主要模式。
但在许多方面,IaaS模型只是使用云计算的第一步。让我给你一个具有说明性的例子。我会使用一个物联网(IoT)场景,希望相比其他类型的云应用而言更有说服力。在此场景中,客户已经部署了一个停用,包括在云中运行的虚拟机,一些设备和一些日志记录的服务,然后进行分析,并将分析的结果在自定义的仪表盘页面上显示。差不多是这样(请原谅我糟糕的绘画技巧):
这一切都很好,应用如设想的一样工作。
但是我问了一些问题:
- 当应用正式上线的时候,是不是可能会有成千上万的设备需要被监控?
- 如何检测使用中的模式?如何检测失败的模式?
- 如何预测组件故障或预测性维护?
- 如何查看潜在的安全漏洞,或者仿造的请求?
- 如何编写所有的程序实现快速可靠?
随着许多新的服务,今天的微软Azure可以让你实现这些以及更多的功能。只需要很少量的代码,如下面的图:
所以设备发送事件(在REST或AMQP中)流向Azure Event Hubs,每日处理上亿级别的事件。Azure Event Hubs提供了一个可扩展的方式来做大量的事件输入和处理,你只需要支付使用的功能和带宽。在我们的例子中,事件是由Azure Stream Analytics分析,可以做只能滤波和相关性分析。这些数据可以被放置在一个或另一个大数据技术如Azure HDInsight形式的Azure存储(Hadoop)中。这些数据可以用来分析,或使用Azure Machine Learning创建实验、训练模型和快速的创建应用来做预测。PowerBI提供视觉友好的仪表盘,可直接连接到刘的分析或多个数据源,包括Azure SQL。Azure Service Bus提供了简单的方法用来发送队列或发布/订阅消息并将指令返回到设备。如果你喜欢,小的对象-表演者-使用今天的Project Orleans技术,成为明天基于Microsoft Service Fabric的微服务基础应用,可以为所有设备实现服务器端逻辑。还有许多其他组件,可用于构建更丰富的应用程序。当然,随着Azure Portal和Azure Application Insights你的DevOps可以监视和管理你的应用。
这里的关键信息:所有这一切都只需要非常少的代码。然后,你的应用,就像在Microsoft Azure上的其它应用一样-可以被很快地连接在一起。Azure上提供的服务都利用各种类型的用例和配置进行了全面的测试,应用就可以减少书写自定义代码。(喜欢开源的版本-想用Apache Storm代替Stream Analytics也没有问题!)。
对我来说这类架构代表了云计算的真实价值,就是要快速构建以最少的代码构建高价值的组件。(在自行编码的情况下,根本是不可能实现的。)很多的IT专家谈到云都都单纯认为是宿主而已,但事实上可用服务提供的大规模可扩展性,功能丰富的应用可以很轻松地访问企业IT。
想创建一个具有突破性的应用?我很想听听你的想法!