阿里巴巴云原生小助手
2019-11-15
990浏览量
作者 | 徐进茂(罗离) JAVA 开发工程师
导读:近年来,Serverless 一词越来越热,它已经逐渐成为了一种新型的软件设计架构。和 DevOps 概念提倡的是通过一系列工具和自动化的技术来降低运维的难度,促进研发运维一体化不同, Serverless 更像是一种 NoOps,即通过“不用做”的方式来解决“如何更高效做”的问题。
DevOps 是一组用于促进开发和运维人员之间协作的过程、方法和系统的统称。
DevOps 提倡通过一系列的技术和工具降低开发和运维人员之间的隔阂,实现从开发到最终部署的全流程自动化,从而达到开发运维一体化。通过将 DevOps 的理念引入到整个系统的开发过程中,能够显著提升软件的开发效率,缩短软件交付的周期,更加适应当今快速发展的互联网时代。
说到 DevOps ,就必然会提到持续集成。持续集成指的是在软件开发过程中,软件开发人员持续不断地将开发出来的代码和其他的开发人员的代码进行合并,每次合并后自动地进行编译、构建,并运行自动化测试进行验证,而不是等到最后各自开发完成后才合并在一起。
持续集成能从根本上提高一个团队的软件开发效率。在软件开发过程中引入持续集成,可以帮助团队及时的发现系统中的问题,并快速做出修复,不仅可以缩短软件开发的时间,而且可以交付更具质量的系统。
一个 DevOps 开发环境需要满足以下 8 点需求。
为了满足以上 8 点要求,设计出的 DevOps 开发环境如下图所示。
整个环境主要由 6 部分组成:
整个环境的运行流程主要分为以下 6 步:
通过上述几步,我们就可以简单实现一个 DevOps 开发环境,实现代码从提交到最终部署的全流程自动化。
但是自从 2014 年 AWS 发布 ASW Lambda 以来, Serverless 的概念开始逐渐火热起来。各大云厂商开始纷纷开始推出各自的 Serverless 产品,如 Google 的 Cloud Functions ,阿里云的函数计算、Serverless应用引擎(SAE)等等。究竟什么是Serverless 无服务计算呢?
什么是 Serverless?
根据 CNCF (云原生计算基金会)发布的 Serverless 白皮书里的定义:
Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment.
首先需要强调一点的是无服务器计算并不意味着我们不再需要使用服务器来运行代码,代码仍需要运行在服务器上对外提供服务。
在无服务计算时代,研发人员无需对服务器进行监控、配置、更新、扩容等运维操作。只需要将代码上传到云厂商提供的无服务器计算平台上即可,云厂商会保证代码能正常运行,当流量突增时,自动对服务器进行扩容,流量减少时,对服务器进行缩容。
这些运维操作对研发人员来说都是黑盒的,会将开发人员从繁琐的运维工作中解放出来,只需要按运行时长对资源进行付费即可。
和 DevOps 概念提倡的是通过一系列工具和自动化的技术来降低运维的难度,促进研发运维一体化不同, Serverless 更像是一种 NoOps,即通过“不用做”的方式来解决“如何更高效做”的问题。
Serverless 应用引擎是面向应用的 Serverless PaaS 平台,它向上抽象了应用的概念,支持 Spring Cloud、Apache Dubbo、HSF 等流行的开发框架,并通过 WAR 包、JAR 包和镜像等多种方式部署应用。它的使用可以通过下面这张图来了解。
伯克利对 Serverless 未来的预测
尽管 Serverless 仍存在诸多的挑战,但是我们相信随着市场规模的不断扩大,这些挑战会逐渐被解决。UC 伯克利对 Serverless 未来十年的发展趋势做了以下几点预测。
当前数据中心的资源利用率仍处于一个较低水平,特别是对于在线业务而言,日均资源使用率仅在 10% 左右,主要是由于当今资源都是属于独享型的,不管你用不用,这些资源都需要保留。
一旦大规模使用 Serverless 之后,资源的使用由平台统一调度,按需使用,整体的资源利用率会大幅提升,整个云计算资源的使用成本无疑也会大幅降低。
随着 Serverless 的不断发展,未来编程方式将会有很大的不同。无论是从成本的角度还是使用的角度,我们有理由相信下一个时代是 Serverless 的时代,并应该朝着这个方向不断探索。
作者简介:徐进茂(罗离) Java 开发工程师。现就职于阿里云智能基础设施事业部,主要负责阿里巴巴数据中心运营平台的研发工作。
“ 阿里巴巴云原生微信公众号(ID:Alicloudnative)关注微服务、Serverless、容器、Service Mesh等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术公众号。”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。