无服务器计算:基础篇
2017-06-28MaryBranscombe
Mary+Branscombe
最新的云流行词听起来如此的矛盾;它实际上是一种新的编程模型,它可以把复杂的东西抽象出来,并且经济性非常好——在云中,甚至在您自己的服务器上。以下是聪明的CIO需要了解的。 就像一个老笑话,云只是别人的计算机。确实如此;它只是一台运行的更好的计算机,能够经常打上补丁,安全防护做的比您自己的好,而且您不必为此付费,您还可以租用另一台计算机,所提供的服务能让您进一步提高工作水平,而不必自己启动服务器或者安装软件。 您可能认为云的规模很大,能够节约成本,而更重要的是它引入了抽象这一概念:提供存储服务和数据服务而不是硬盘,应用程序服务而不是虚拟机,软件控制网络而不是您不得不连接的物理网卡和电缆。随着云从IaaS发展到SaaS,直至PaaS,增加了监控、数据分析和机器学习以及开发框架和应用服务,其抽象等级在不断提高。 无服务器抽象出基础设施 Azure首席技术官Mark Russinovich指出,IaaS抽象出了物理数据中心,但它仍然需要基础设施。“您还必须选择操作系统,部署操作系统,调整虚拟服务器的规模,在虚拟服务器上配置网络,扩展虚拟服务器,想好怎样在服务器上部署软件,更新这些软件,监控软件…。” 即使采用PaaS,“很多服务都要求您使用一些调整单元(甚至可以是服务器)来请求配置级别,而且您仍然要确定所需的数量,以及怎样最有效地使用它们,您不得不对规模有所担心。还有一些与我真正想要的,但却没有直接关系的任务,例如,我的应用服务请求。” 无服务器进一步进行了抽象。是的,您的代码仍然在服务器上运行——它们就是不用您去关心的服务器。 Russinovich将无服务器视为“下一代计算,其中一切都可以被驱动,而这是开发解决方案的企业的最大价值所在,他们不用关心为其提供服务的平台的所有细节。” 无服务器是基于事件的程序,采用了微计费的方式 如果你不喜欢这个名字,可以把它当作基于事件的程序,或者函数即服务。AWS Lambda被命名为lambda函数(能够使用和创建其他函数的匿名函数),微软同样的产品是Azure函数,而谷歌则是Cloud函数。 Russinovich说:“无服务器字面上的意思是,我不用去管服务器”,但他补充说,其定义还必须包括编程模型和微计费。 我抽象出了服务器;我不是说我想要多少服务器或者计算单元,我只是使用资源,我为使用多少资源而付费。我不用先付费,我使用资源的时候才为其付费。这种计费模型之所以能起作用是由于编程模型的原因。无服务器是基于事件、基于触发的计算,它要求非常快速的响应触发器或者事件,否则我可能不得不把资源留在那里,使其长时间运行。 由于无服务器平台自动管理配置,进行调整,如果您想要优化您正在使用的资源,则可以通过提高代码效率来实现。这是一个与IaaS甚至大多数PaaS完全不同的经济模式。 触发把无服务计算变成了云胶合 无服务器代码不会一直运行;只有当与您设置的规则相匹配的事件被触发时才会运行。您设置的触发器可以是调用无服务器函数的其他代码,例如Web应用程序,也可能是相连接的服务发生的事情——Russinovich说:“这包括,把文件放到存储帐户中,在CRM系统中打开的票据,系统中出现的消息等。” 函数的输出也可以被发送到另一服务,这样您可以使用它来触发对所采集到的图像和视频进行图像识别,并将结果发送到数据库,或者使用“推特情绪分析”向客服发送警报,或者启动一个聊天机器人。当有人说他们想要安排预约时,我才启动工作流程。Azure函数可以和很多东西集成在一起,例如云服务、数据库和存储服务、消息、事件集线器,以及支持与内部SQL服务器相集成的网关连接器等。 使用无服务器函数来转换数据,连接不同的服务非常适合移动应用;Azure Logic Apps(用于开发人员)和Flows以及Power Apps(用于高级用户)都使用Azure函数,您可以通过Amazon面向iOS和Android的Mobile SDK來调用Lambda函数。这也是把来自不同云的服务整合在一起的一种方法,使用无服务器函数把不同的系统连接在一起,无论是把文件上传到Dropbox和Dynamics 365,还是使用AWS Lambda通过云端点API把文件从亚马逊S3移动到谷歌App Engine。 对开发人员来说,最大的好处是速度和简单,他们提高了开发速度,更好地适应开发的转变,不断地集成和部署。 Russinovich指出:“采用无服务器计算,编程时,所有开发人员担心就是应用程序逻辑。他们可以专注于业务逻辑和编写一段代码,不用关心其他与虚拟机操作或者PaaS环境相关的支持代码。您所得到的是产品及时面市;你可以编写一段代码,将其部署,在几秒钟或者几分钟内就可以让它运行。” 无服务器计算将超越云计算 像Lambda和AWS函数这样的无服务器产品并不是基于事件的编程唯一的用武之地。Russinovich说:“基于事件的编程模型非常强大,这种模型将超越服务器抽象和微计费这类应用环境。”他建议说,随着模型的成熟,您将能够使用在PaaS或者甚至在IaaS产品上,甚至在本地编写的相同的无服务函数代码;对于微软,这将通过Azure堆栈来实现,或者您可以让函数在Windows容器中运行来实现。 他解释说:“(在Azure函数中),你失去了一些控制。在某些场景下,这种微计费、使用才付费的模式可能会让我成本更高。如果让我的代码运行的设置成本很高,有很多代码我无法预先在函数上进行设置,那么我的启动时间会很长。因此,我可能会采用PaaS并预先设置好,现在我的基于事件的触发器代码可以很快地做出响应。” 目前为止,无服务器计算在云中是最有效的,因为底层有虚拟机以及其他必须要配置的基础设施,而像Azure和AWS这样的超大规模云提供商提供了很好的自动化功能,以至于他们开展无服务器工作几乎不需要成本——可以把无服务器计算放到其他云服务没有使用的虚拟机资源中。如果您尝试自己运行无服务器框架,那么您会发现很难获得相同的优势(您不太可能有这么大的规模,并且还需要有人运行基础设施),但是这种模式以后是有可能的。 无服务器计算是一种相当新的想法,但已经在可口可乐这样的大企业中应用,该公司正在使用AWS Lambda与开源无服务器体系架构来降低IT成本。无服务器的抽象特性是Atlassian将Jira和Confluence等服务从自己的数据中心迁移到AWS上的部分原因。Atlassian首席技术官Sri Viswanath向我们解释说:“他们的承诺是我们可以利用这些来加速我们的开发,我们计划使用更多的这类服务。如果您有什么是异步的,必须运行一项工作,那么Lambda是非常适合的。” 他指出,无服务器计算的功能还在不断发展。“Lambda的功能还不是很完善;现在对于运行几毫秒的小服务来说是很好的,但是微服务需要长时间运行,所以在Lambda中,您必须为其启动虚拟机。如果您需要一个接一个的处理异步事件,那么这是非常合适的。”正在解决这些局限问题——Azure函数允许专用的应用程序去管理长时间运行的函数,而Viswanath认为,只有更简单的模型才会更有吸引力。 “今后,我认为不用担心服务器这样的理念是非常重要的。[采用无服务器计算],您不必担心服务器的部署;您编写自己的代码,保存它,然后就完成了。” Mary Branscombe是一位自由撰稿人,他二十多年来一直致力于技术写作,其写作主题涵盖了从编程语言、Windows和Office的早期版本,到最早的网络以及消费类小工具和家庭娱乐的各个方面。 原文网址: http://www.cio.com/article/3198756/cloud-computing/serverless-computing-the-basics.htmlendprint