Serverless中文译为“无服务”是一种新兴起的架构模式。它是一种基于互联网的技术架构理念。Serverless不是真的不需要服务器了,而是不用过多的关注服务器。它是指明显或充分地依赖第三方应用或服务来管理服务器端逻辑和状态,可以让你在服务部署级别而不是服务器部署级别来管理你的应用部署,甚至可以让你管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速地开发软件。
Serverless架构的两种类型
第一种:“Backend as a Service”即BaaS,是一种新型的云服务,指在为移动和Web应用提供后端云服务,实现对逻辑和状态进行管理,包括云端数据/文件存储、消息推送(例如极光推送、个推)、应用数据分析等等。可以说BaaS是诞生于移动互联网,为了加速移动应用开发和降低成本而形成的开发架构。
第二种:“Functions as a Service”即FaaS,指这样的应用,一部分服务逻辑由应用实现,但是跟传统架构不同在于,他们运行于无状态的容器中,可以由事件触发,短暂的,完全被第三方管理,功能上FaaS就是不需要关心后台服务器或者应用服务,只需关心自己的代码即可。其中AWS Lambda是目前最佳的FaaS实现之一。
Lambda是一种计算服务,它在AWS基础设施上执行用JavaScript(node.js)、Python或Java编写的代码。源代码部署到孤立的容器上,该容器有单独分配的内存、磁盘空间和处理器。代码、配置和依赖项这一组合通常被称为Lambda函数。
Serverless架构的特点
1、节约成本
我们一般购买的云服务器的配置是固定的,比如2G内存,双核CPU,这样做的弊端是如果系统在特定的某一天需要支持很高的并发量,比如:双十一那天,但是服务器的内存并不够,难道要为了那一天又特定去多买一些内存么?在Serverless架构下,用户能够通过网络、硬盘、CPU等计算资源,在不需要额外服务器基础设施的情况下,可以做到随时扩缩容,对数据库的存储也没有限制。它是按照调用次数进行计费的,如果平时没有访问量就不计费,所以不会有浪费的情况,有效的节约成本。
2、简化运维
传统服务器需要维护程序和硬件设施;而Serverless架构中,开发人员面对的将是第三方开发或自定义的API 和URL,底层硬件对于开发人员是透明化的,技术团队无需再关注运维工作,能够更加专注于应用系统开发。同时,应用程序的组成逻辑会使用大量的第三方功能服务。目前,例如登陆鉴权的服务,云数据库服务等第三方服务在安全性、可用性、性能方面都进行了大量优化,开发团队直接集成第三方的服务,就能够有效的降低开发成本,同时使得应用的运维过程变得更加清晰,有效的提升了应用的可维护性。
KubeCon大会上的Serverless架构
在本次KubeCon大会上将会有来自阿里、华为、谷歌等顶级公司的十几位开发者为大家从不同角度解读Serverless,从而帮助大家更全面地学习并掌握这个架构。当然,在互相交流的过程中,对于做演讲的分享者来说也是一次很好的提升机会。本次大会上关于Serverless架构的技术分享有如下六个主题:
1、预算中的无服务器性能——Erwin van Eyk,Platform9
2、无服务器工作流:广泛应用无服务器的关键——Cathy Zhang,华为
3、JD Kubernetes 平台电子商务应用的无服务器计算——Yuan Chen,Xin Tong,京东
4、Botless:无服务器 Chatbot 框架——Scott Nichols,Google
5、无服务器 Kubernetes:云原生方式的容器——Wei Zhang,阿里巴巴
6、智能工作用用程序:自动布线、K8s 扩展和无服务器功能——Enlin Xu,Turbonomic
此文中重点介绍第一个主题——预算中的无服务器性能:
“按需提供的无服务器承诺,以固定成本实现最佳性能。然而,我们看到,当前无服务器平台并不总能在实践中坚持这一承诺。无服务器应用程序可能会受到冷启动、平台开销和不可靠性能的影响。
在本次演讲中,我们将研究当前应用在 FaaS 平台和研究的优化措施,这些优化措施有助于最优化成本和性能之间的取舍:功能重用、自动扩展、资源共享、功能局部化、预测性调度和自动缩放。在此过程中,我们专注于用户如何优化 Fission FaaS 平台,以实现有关潜伏期、生产量、资源利用率和成本的特定目标。在哪些方面存在使 FaaS 更快的机会和挑战?”
总之,Serverless无服务器架构是开发人员和企业组织需要考虑、研究和采用的最新理念,它是依赖第三方应用或服务来管理服务器端逻辑和状态的技术架构,但是其实它并不能替代服务器。Serverless是最新流行微服务的一种表现形式,是新一代云服务和开发架构的实践,是云计算发展重点方向之一。