您的位置:首页 > 其它

为什么无服务器化成为2018年创建API的首选方法?

2018-11-18 08:15 316 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/84207722

从最早的物理服务器开始,我们一直在不断对服务器进行抽象或者虚拟化处理。我们利用XEN、KVM等虚拟化技术,对硬件与运行在其上的操作系统加以隔离。此后,我们进一步使用云计算自动管理这些虚拟化资源。接下来,我们开始使用Docker等容器技术隔离应用与操作系统以及服务器硬件。现在,我们有了无服务器模式(Serverless),并最终实现了对操作系统乃至更底层技术细节的隔离。


有时候,我们可能会因为逻辑或实用性问题而无法在web app 中创建 API。在这种情况下,另外三种主要方法能够帮助我们完成API创建,具体包括使用虚拟机(如 AWS EC2 实例)创建服务,使用容器创建你的服务,或者将服务创建在一套无服务器环境中。


在今天的文章中,我们将聊聊为什么采用无服务器架构创建API才是最为高效的实现途径。





不要用容器创建API

容器是近年来最令人费解,但却也风头一时无两的新兴潮流。在某些情况下,容器技术确实能够帮助我们快速构建新环境,并确保该环境完美重现此前运行环境。然而,这样的“超能力”虽然衍生出一系列重要的新型处理流程,但考虑到开放API一般不需要大量副本,因此其优势体现得并不明确。


与虚拟机(VM)相比,容器启动更快,并且只需更少的资源就能运行多个容器——但这些特性与API服务的实际需求并不太契合。一般来讲,容器需要等待接收API请求之后才会启动,因此启动速度仍然不够快。虽然与传统虚拟机相比,容器的运行需求较低,但相信大家已经体会到一项基本的开发现实:企业高管们并不缺内存资源,他们缺少的是优秀的、能够实现功能的工程师。时至今日,内存或者CPU计算周期的成本已经非常低廉,而目前最为流行的技术方案主要侧重于节约人力资源,而非计算机资源。


而集中在容器层面,其最大的问题就在于缺乏可靠的管理工具,这将导致使用者不得不投入大量时间以换取一点可怜的资源节约效果。这个问题主要体现为两个具体方向:其一,我从来没有在使用Amazon EC2或者Azure VM时遇到过虚拟机管理接口方面的问题;其二,我从来没见过有谁能够以自学方式成为Docker容器领域的专家。

大多数Web开发人员在使用容器时都会遇到一些基础性难题,而解决方法往往只是“通过培训,您将能够轻松管理这个或者那个”。这已经成为我们使用容器时需要面对的根本性挑战:在容器出现的数年之后,Web开发人员仍然无法独力解决问题。一般来说,企业管理者在讨论资源紧张状况时,关注的主要是“人力不足”而非计算机资源不足。因此,需要工程师们投入更多时间的解决方案,似乎注定无法带来理想的回报与价值。





不要用虚拟机创建API





对于容器的弊端我之前已经说了很多,但反对虚拟机的观点则相对简单:安全性。实际上,虚拟机最不适合的就是创建开放API服务这类场景。大家可以想象一下:

  • 您的团队需要创建一个开放API,进而配合一项并行服务建立起潜在的合作伙伴关系;

  • 开发完成之后过去了数月甚至数年,但只有一部分社区成员对其抱有兴趣,而公司内的所有开发人员都已经转向其它工作方向;

  • 这时,我们的虚拟机操作系统曝出新的漏洞。但由于该开放API并不属于任何人的全职“工作内容”,因此要么根本没人对其进行更新,要么是由虚拟机管理程序强制执行更新——这意味着我们根本无法理解为什么该服务突然不能运行,或者应当如何进行回滚;

  • 我们可能会收到一封来自黑客的电子邮件,对方宣称其已经完全复制了我方的生产数据库——而实现途径,正是这一早已存在对应补丁,但却始终没有得到修复的API虚拟机。


为什么无服务器最终胜出

无服务器正表现出“超越”容器的积极趋势。许多新晋开发人员在Heroku 等高度抽象的环境内完成虚拟机管理方面的速成课程之后,随即投身于无服务器的怀抱当中。


无服务器提供了一套理想的环境。在这一环境中,更新补丁与安全漏洞 彻底“不再是您需要考虑的问题”。相反,大家可以采取一种“只要没出问题,就不必理会”的态度,从而长期享受这些服务带来的可靠表现。


最后,使用单一函数(在AWS中为Lambdas)来处理单一路由,意味着通过API泄漏数据的风险将会大大降低。无服务器可能无法提供极高的资源利用率、成本优势或易于复制性,但这些实际上并没那么重要,尤其是在构建开放API这一场景之下。我们Stackery也专门解决了大量此类问题,希望帮助开发人员更轻松地实现无服务器应用程序的快速启动及运行。


诚然,对于内部服务、关键性任务项目以及分布式系统,我们可以立足各类新兴技术进行优劣讨论。但单纯着眼于构建API这类需求,我们恐怕很难找到比无服务器架构更好的解决方案。
原文链接:https://thenewstack.io/why-serverless-is-the-only-way-to-build-apis-in-2018/


Kubernetes线下实战培训


Kubernetes应用实战培训将于2018年12月21日在北京开课,3天时间带你系统学习Kubernetes本次培训包括:容器特性、镜像、网络;Docker特性、架构、组件、概念、Runtime;Docker安全;Docker实践;Kubernetes架构、核心组件、基本功能;Kubernetes设计理念、架构设计、基本功能、常用对象、设计原则;Kubernetes的实践、运行时、网络、插件已经落地经验;微服务架构、DevOps等,点击下方图片查看详情。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: