无服务器计算的真正含义究竟是什么?

mcr520 8年前
   <p>对于开发者而言,基础设施相关工作是个令人头痛但又摆脱不了的包袱。然而,无服务器计算机制能够减轻这一负担。</p>    <p><img src="https://simg.open-open.com/show/b063deb0438f5671f7b4d6b3ec5ebbe5.jpg"></p>    <p>首先必须承认,无服务器的说法并不确切——当然,服务器总要存在。所谓无服务器计算,只是立足于云基础设施之上建立新的抽象层,从而保证开发者无需再为服务器乃至云中的各类虚拟资源分神。</p>    <p>为了明确相关定义,微服务负载管理厂商Iron.io公司CEO Chad Arimura为我们做出了解释。Arimura表示,无服务器计算可被看作现代开发者不断发展的一种参照系:</p>    <p>时至今日,规模化环境下的原子单位已经由虚拟机转向容器。如果更进一步进行思考,甚至可以将单一功能或者说单一用途代码块作为最小单位。更直白地讲,相当于处理一张图片、转换一段数据以及编码一段视频。</p>    <p>对我来说,这就是微服务架构的主旨所在。相较于构建整体式应用,大家可以将单一应用拆分成多个拥有单一功能的服务。那么,微服务与功能之间的区别又在哪里?</p>    <p>每项服务都提供一个通用API,供人们对其进行访问。我们并不了解其内部到底如何运作。服务可能由功能作为支撑。因此,功能就成了更为基本的代码块,而服务则更像是开发者能够进行交互的接口。</p>    <p>随着开发者利用微服务组装应用并面向功能进行服务调用,他们亦可从库中选取功能以构建服务本身——而无需在创建应用时考虑服务器基础设施。</p>    <p>AWS Lambda无疑是目前最具知名度的无服务器计算实例。正如Amazon的一段教学视频中所言,“一旦将代码上传至Lambda,该服务会处理基础设施的全部容量、规模伸缩、补丁安装以及管理工作,从而为代码运行提供必要环境。”AWS Lambda与Iron.io都提供功能库,旨在进一步加快开发速度。</p>    <p>需要注意的是,这一切都立足于服务编排层级之上——这部分任务由Mesos、Kubernetes或者Docker Swarm负责提供。尽管Iron.io也提供自己的编排层,“但我们在开发者/API领域还属于晚辈”Arimura指出。</p>    <p>事实上,Iron.io的核心功能与AWS Lambda基本相当,只是其能够部署在全部主流公有及私有云平台之上。Arimura认为Iron.io的最大优势在于能够实现内部部署,毕竟目前大多数企业仍然倾向于利用混合云机制实现云计算。这意味着同样的无服务器计算环境能够在不同公有及私有云之间保持一致性与应用可移植性。</p>    <p>Arimura甚至提到了颇具争议的“无操作”机制,其最早由Netflix公司前任云架构师Adrain Cockcroft提出。当然,由于服务器始终存在,所以运行于其上的操作也不可能真正消失。只不过从开发者的角度来看,他们已经无需在创建软件时考虑操作需求。</p>    <p>无服务器计算的主旨在于提升开发者效率,其不仅降低了基础设施管理工作量,同时亦凭借服务与功能库压缩了开发者构建应用时需要编写的代码总量。</p>    <p>企业开发团队正在逐步接纳敏捷、持续集成/交付以及DevOps等新鲜理念。但凭借着无服务器计算带来的抽象层,现代开发方法将拥有更出色的实际效率以及更具吸引力的实施收益。</p>    <p><a href="/misc/goto?guid=4959675361614272323">阅读原文</a></p>    <p> </p>