无服务计算就不需要服务器吗?
你是否已经弄清楚所有关于管理和运营容器环境的东西了呢?你知道如何大规模地在你的数据中心内部署它们吗?你知道如何将你所有现有的应用程序迁移到容器化的版本吗?你知道如何让你的程序员使用敏捷DevOps,以及让你的IT管理员成为云计算的管理者吗?什么,都还没有?
我不太愿意告诉你的事实是,现在IT的世界已经跳过了容器这个话题。现在你需要关注的是下一个大趋势:无服务计算。
我不知道大家是否会觉得将最新的这种应用程序架构趋势称之为无服务计算是一个好的说法。毕竟如果代码不运行在计算机上,那么它还是不会起任何作用的。在所谓的无服务架构中,还是以某种形式存在着的。我猜测这种称呼是在暗示,当你提交了你的应用程序代码并需要执行的时候,你并不需要关心任何服务器相关的事情,它会让你感觉不到服务器的根本。
在云计算基础架构即服务(IaaS)中,你不需要管理你的物理基础架构;而在云计算的无服务计算中,你甚至不需要管理任何虚拟机、操作系统或者容器。
无服务可以提供更多服务?
那么到底什么是无服务计算呢?它是一种服务,程序员只需要编写相应的代码并且直接将代码当作一个独立的,功能化的微服务来部署即可。你可以很容易地搭建这些微服务来实施那些无服务的框架,并且通过策略来使其对支持的事件或者API调用进行响应。
无服务架构被设计来扩展固有的无状态微服务——不像现在的容器技术一样,可以同时支持状态化计算和无状态化计算。你可能需要使用无服务功能来处理需要高度弹性、事件驱动型操作的应用程序,或者来创建能将裸数据处理成成品数据的随机函数流。这种事件数据流很好地和物理网需要的处理过程契合在一起。同时它还对在实时的数据流之上运行的应用程序很有帮助。
一个很知名的无服务云计算例子是Amazon Web Service的Lambda服务。这个名字取自于函数程序设计使用的匿名函数lambda。在某些程序语言例如JavaScript或者Ruby中,一个函数可以在预先定义的变量范围内以及代码函数结束的时候执行。还有一些程序语言有实际的lambda operator或者编译器在运行时来动态创建函数对象(比如在其他代码执行的时候)。
那么有了无服务计算之后,真实的基础架构是如何存在其中的呢?基础架构还是存在的,只不过是在很多层的虚拟化之下。现在来说说软件定义计算吧,随着无服务计算的演变和进化,在应用程序代码和硬件之间可能会存在数百万行针对系统和平台定义的代码。这是一件好事情,证明摩尔定律还没有失效。
让我们来看一下建立自己的私有云,无服务环境我们需要哪些复杂的虚拟化组件吧:
1. 在最底层,当然我们是需要物理服务器的。但是在这里我们可能要改变一下对传统物理服务器的概念,而是想象成一个动态供给不同组件(处理核、硬盘、内存、接口)的资源池。
2. 然后我们会需要在这些物理服务器之上做一层虚拟化。一个hypervisor集群可以控制这些物理服务器并且从而提供一些永久的虚拟机。我们可能还会添加一些云提供服务和自动化的工具,就像OpenStack中的一些服务一样。
3. 在虚拟化,云的环境中我们要部署容器集群来提供容器平台服务,类似的软件有Docker,Kubernetes或者OpenShift。
4. 然后我们需要安装容器化无服务的计算平台来提供应用程序的lambda服务,类似于Platform9的Fission.io。
5. 最后,我们要创建和部署微服务应用程序,以让一些功能性的代码能运行在所有这些抽象层上。举个例子,一个微服务的功能可以用JavaScript编写并且定义为一个lambda服务。然后将它匹配到某些触发器或者API节点上。这样子当某些事件触发了这个lambda服务的时候,它就会在自己的容器内执行相应的代码。这个容器会运行在容器集群中,容器集群又会分布在多个运行在hypervisor集群的虚拟机中,而这些hypervisor又运行在不同的物理服务器上。
应用程序开发者可能只会看到并且只会和lambda服务接口打交道,因此他们可能会觉得那些看不见的资源都是无服务的。这种架构的确让基础架构在各个方面变得更像“云”。现在它可以动态地提供高度可伸缩的,有效的,按需供给的,弹性的,鲁棒的资源,并且很好地利用了密集型的商业资源。
IT现在都用它来干什么?
无服务对于IT来说又意味着什么呢?我们刚刚残忍地知道了,无服务计算会增加多一个需要管理的架构层。我们都还没有对生产环境中容器的出现和管理完全消化呢。你能想象将来你要管理成千上万虚拟机的情形吗?那么现在你想一下明天你需要管理10万个短暂的容器,以及可能是每天数百万的微服务操作吧。看到这么繁重的任务,IT可能会放弃并且让用户去使用公有云。不过对我来说,这虽然是一个很大的转变,但是同时也是一个很大的机会。IT部门会变成内部的服务提供商,而且无服务也是值得为之努力的新技术。IT可以利用这一项新的服务,将平时日常的基础架构运营的重心放到了为商业运作开发能帮助他们的新功能。
IT可能变得更像ITDevs,引领人们接纳事件驱动型的功能函数(现在IT运营的基础),云管理(IT财务管理),挖掘机器数据(作为IT数据管理的延伸)以及更多其他方面。
换句话说,朝着阻力最大的路劲学习可以在未来提升我们真实的商业运作——同时加上使用大数据、物联网、全球化、移动等其他大趋势,会让商业运作越来越像IT的运作。