摘要: Serverless 指用户无需管理服务器状况下构建和运行应用程序的一种方式。可见 Serverless 并非真的不须要服务器,毕竟程序代码不能靠意念来执行,仍然是须要硬件服务器实体来做为运行代码的基础的。安全
Bazaar:阿里云Serverless计算服务探秘服务器
做者:Bazaar项目组网络
1. 什么是 Serverless架构
“Serverless computing refers to the concept of building and running applications that do not require server management.”并发
-- 来自 CNCF 对 Serverless 的定义app
Serverless 指用户无需管理服务器状况下构建和运行应用程序的一种方式。可见 Serverless 并非真的不须要服务器,毕竟程序代码不能靠意念来执行,仍然是须要硬件服务器实体来做为运行代码的基础的。这里的 Serverless 是站在应用开发人员的视角提出的,指服务器的运行、维护对于应用程序的开发人员不可见。将底层基础架构的维护、更新和扩展等任务交给平台提供商来完成。从而将业务开发人员解放出来,让他们更好的关注自身业务。这即是 Serverless 计算背后的核心思想。可见这一思想可以产生的一大基石即是云计算服务。只有凭借云计算构建的强大基础运维平台,才可以适应无服务器计算对于计算、存储和网络资源的需求。框架
图1展现了 Serverless 计算的发展历程。早在2006年就已经出现了第一个带有 Serverless 性质的计算服务平台 Zimki,该平台会按照代码实际执行时间向用户收取相应的费用。随后的2008年谷歌推出Google App Engine产品,其背后的理念也是 Serverless 计算。但这一时期,Serverless 计算的概念并无被明确提出。Serverless 概念第一次出现的时间是在2012年,iron.io,一家基于容器提供分布式按需执行服务的提供商提出了这一律念。2014年AWS Lambda这一里程碑式的产品出现。经过将无服务器计算的概念嵌入到整个云计算服务的总体框架中,无服务器计算正式走进了云计算的舞台中央。2016年无服务器计算则迎来了快速发展的阶段,IBM、谷歌、微软相继推出了IBM OpenWhisk on Bluemix、Google Cloud Functions和Azure Functions等相关产品。而到了2018年,随着容器技术的发展,各种 Serverless container 平台更是如雨后春笋般出如今人们的视线中。less
图1 Serverless 发展历程运维
对于 Serverless 带来的好处能够归结于如下几点:分布式
· *下降成本
· *灵活扩容
· *按需付费
下降成本:使用 Serverless 服务后,用户再也不须要关心采购、运行、维护底层机器资源的相关工做,也再也不须要对相关工做投入人力资源。特别是机器运维的成本将大幅降低。
灵活扩容:用户本身购买服务器对外提供服务时,当业务压力忽然增长时,很难快速添置大量服务器来知足突增的业务压力的须要。而采用无服务器计算后平台提供商会有大量机器资源供用户动态扩容使用。
按需付费:用户本身购买服务器时,即使业务负载很是低,用户依然要负担相关资源的使用成本。极端状况当用户业务负载压力为零时,用户也要白白花费相应的成原本维持自身服务的运转。在使用无服务器计算后,当用户业务压力下降时,用户须要的资源会被自动减少,于是花费的成本也天然会下降。
总之 Serverless 让开发人员更加聚焦于本身业务的同时,更能够有效帮助企业下降业务运行过程当中没必要要的开销和成本。
Serverless 中很是重要的一个环节是底层相关计算资源的管理再也不须要用户来关心,那么这些资源的管理由谁来完成呢?下面咱们就来介绍本系列文章的主角——Bazaar。
2. Bazaar:阿里云 Serverless 计算服务
Bazaar ([bə'zɑːr])是阿里云弹性计算团队为孵化更多的 Serverless 服务推出的基础服务。该服务旨在为终端用户和云上的各种 Serverless 产品提供底层的资源管理、交付服务。不管是终端用户仍是阿里云的各种 Serverless 产品亦或是外部的Serverless服务开发商都可以借助Bazaar方便的得到须要的云计算资源。凭借弹性计算团队和容器服务团队在云计算服务领域积累的丰富经验,咱们将Bazaar打形成为一款面向不一样客户和业务的资源交付服务以便支撑各种无服务器计算业务对底层云计算资源管理、交付的不一样诉求 。
Bazaar具有 Serverless 带来的诸多优势。如用户聚焦自身业务,简化底层资源管理,灵活的扩容方式等等。相较于弹性计算ECS,Bazaar在资源占用开销、实例启动时间等方面也着重进行了优化,并从系统总体架构上针对 Serverless 进行了深度的定制优化。
Serverless 经过平台服务商管理底层运行时环境,为用户摆脱底层基础架构运维工做提供了可能。而平台服务商为了向用户提供这样一个统一的计算平台,势必须要一个统一的底层软件运行环境。在这其中的沙箱技术就是最为核心的技术组件,其要为用户程序的运行提供一个安全且与外界隔离的环境。该环境还必须考虑到 Serverless 自身的特色,在应用部署密度,程序启动时间等方面作出相应的优化,来知足无服务器计算高并发,用户负载不稳定的须要。
因为Bazaar要兼容Docker/Kubernetes生态,并提供安全、多租户等公有云须要的特性,对于当前Serverless产品来说,最为适合的容器技术架构依然是经过硬件虚拟化来做为Bazaar安全容器的底层技术。考虑到Serverless用户的特定场景和需求,咱们在传统虚拟机上又进行了进一步的改进和优化。好比禁用了登陆服务器,添加/删除用户功能,同时精简了没必要要的系统服务。
图2中展现了咱们在Bazaar针对 Serverless 场景在底层系统上进行的各种优化。
图2 Bazaar底层系统优化
经过上面的各类优化,Bazaar实例的启动时间相较于此前ECS实例有了显著的提高,如图3所示。
图3 优化先后启动时间对比
3. 展望
能够看到随着容器技术的快速发展和 Serverless 计算产品的普及,以虚拟机为表明的第一代云计算服务(IaaS)正在逐渐让位给以 Serverless 为表明的新一代云计算服务。而这一趋势对底层系统软件的开发也提出了更高的要求。新一代底层系统软件不只要知足安全、隔离、多租户的需求,更要针对 Serverless 的特色进行总体端到端优化。相信随着 Serverless 的不断发展,会诞生更加优秀的系统来支持 Serverless,为用户提供更好的下一代云计算服务。