Gartner 报告表明:到 2020 年,全球将有 20% 的企业部署Serverless架构。同时,很多大型厂商,例如亚马逊、微软和谷歌等都看好Serverless领域,并投入了大量的资金。那么,2019年Serverless的应用情况到底如何呢?
近日,O’Reilly针对Serverless的应用情况进行了首次调查。本次调查共采访了来自不同国家、地区的1500多名开发者,这其中有使用Serverless不到一年的新手开发者,也有三年以上的资深开发者,所以调查得出的结论可以在一定程度上呈现Serverless目前的应用情况。
从上图来看,探索和使用Serverless的人并不局限于某个单一的岗位或角色。这表明软件团队在逐渐转向承担更多的基础架构的责任,并且选择使用Serverless来支持。
本次调查超过五分之一的受访者是来自软件行业的,其次来自金融和银行业的。软件行业的开发者关注和应用Serverless似乎是理所当然的事情,而金融和银行行业关注Serverless,主要是因为其垂直领域出现了越来越多的金融科技初创企业,它们承担了传统基础架构的责任,并且以更开放的心态,接纳和拥抱Serverless。
应用Serverless的企业规模如何呢?根据调查结果显示,只有三分之一的受访者在规模小于100人的公司工作,其中企业规模大于10000人的受访者占据了差不多五分之一的份额。这也在一定程度上表明,目前关注Serverless的不仅是没有技术债务或管理费用的初创公司,大型企业也很重视Severless。
目前Serverless的实际使用情况如何呢?本来以为Serverless作为一项比较新的技术,落地情况可能不太乐观,但有趣的是,40%的受访者表示他们已经采用了Serverless,这个结果完全出乎意料。
如果在细分的话,超过50%的受访者已经采用Serverless 1-3年的时间,还有15%的受访者采用Serverless超过了3年的时间。要知道,截止到今年11月,Amazon推出的AWS Lambda功能只有5年的历史,应用经验超过3年的Serverless开发者实际上就是非常早的采用者了。
另外,我们发现在过去一年中采用Serverless的受访者有30%,这说明有相当一部分的开发者(20%的受访者采用Serverless的时间在2-3年)在比较早的时期就已经在尝试和采用Serverless了。有人认为:“Serverless的兴起与 Next Architecture 的趋势是相吻合的。”所以,在未来的12-18个月内,Next Architecture的几大重要组成部分,如分布式、容器、云、Serverless等都将实现可观的增长。
目前Serverless的落地情况如何?超过三分之二的受访者表示他们的组织大部分的Serverless落地都是成功的,他们表示:“Serverless已经超越‘炒热度’的阶段,已经成为了一种实际可行的基础架构选择。”
Serverless的落地成功率如何?根据调查结果显示,如果是拥有Serverless三年以上经验的开发者,大约有79%是成功的,如果是一年到三年工作经验的开发者,大约有75%是成功的,而如果是经验不足一年的新手开发者,只有50%左右是成功的。这也在一定程度上说明应用Serverless所遇到的工具、数据和操作难题需要经验来解决。
为什么要采用Serverless呢?首先,“减少运营成本”是大家采用Serverless的第一大原因,应用Serverless之后,就无需为潜在的流量高峰购买大部分时间处于空闲状态的服务器机架;第二,“自动按需扩展”,采用Serverless之后,可以随时扩展到当前的使用量,消除了意外或者季节性流量高峰的困扰;第三是“无服务器维护”,由于企业中大部分开发人员都是软件工程师,并不是系统管理员,所以对于软件的修复、保护和管理并不擅长,而使用Serverless之后,这些工作都可以交给供应商,他们只需专注于软件开发。
现在应用Serverless存在哪些挑战呢?
首先,教育和培训现有员工。由于Serverless还是一个比较新的技术,很难找到标准、正式的培训,所以企业必须形成特定的文档培训员工,同时需要根据实践案例不断更新文档。另外,由于Serverless还处于高速发展阶段,各大供应商也在不断推出新功能,这也给企业培训员工增加了不少难度。
第二,“供应商锁定”。这是一个大家都会担心的问题,某个供应商平台编写的代码是不是能够迁移到其它平台。由于Serverless还是一个新兴市场,所以关于供应商之间的可移植性问题还处于观察阶段。
第三,集成/测试困难。对于Serverless架构而言,测试是复杂且劳动密集型的工作,需要处理更多的场景,同时因为需要依赖项的不同,集成也是一个需要解决的问题。
在Serverless领域有哪些比较好的平台和工具可选呢?根据O’Reilly的云原生调查报告显示,Amazon推出的Serverless产品因为先发优势,占据了市场的主导地位,而微软和谷歌也相继推出了自己的Serverless产品,并且借势各自的云平台获得了一定的市场份额。
在使用工具的调查中,“自定义工具”占据了首位。这说明目前缺乏一个标准化的工具来解决和管理部署到Serverless架构所遇到的问题,因此,客户要么是使用内部工具迁移,要么是花费时间精力来构建定制化产品。
前面讲了很多应用Serverless的原因和方法,接下来,我们分析一下为什么还有企业没有采用Serverless?
60%的受访者表示是安全问题。因为很多行业对于IT环境的安全性要求很高,而采用任何新技术都可能会带来安全风险。另外,Serverless为数据管理引入了另一种范式,使得敏感数据更加动态,企业无法更好的管理和控制这些数据,存在以下潜在的问题,例如访问权限、访问安全性、元数据或软件是否已打补丁等等。
另外,还需要面临GDPR等安全法规的挑战,在第三方服务器的云中,是否能够拥有与自己基础架构中相同级别的安全性呢?
不过,令人欣慰的是,虽然Serverless是个新技术,但是技术人员对此很感兴趣,大约一半的受访者都希望自家企业能够在未来三年内,尝试和落地Serverless。
岁末年初,对于技术的未来展望似乎是个惯例。因此,我们也采访了阿里云原生应用平台高级技术专家许晓斌,他和我们分享了对于Serverless 2020年发展的预测:
真正的按请求次数计费和从零到一的响应时间是一个天然的矛盾,以 FaaS 为代表的 Serverless 技术一开始都是从对响应时间不敏感的,事件驱动的偏离线业务入手。但是今天我们已经看到,包括 AWS Lambda Provisioned Capacity 和 Azure Functions Premium plan 在内的产品特性,都在让用户稍微付出一点额外的成本以换取更低的响应时间。这对于在线业务来说,无疑是更适合的。
业务代码托管给 Serverless 平台之后,即能享受到自动弹性,按请求计费能能力。但是如果基础设施和相关服务不具备实时的扩缩容能力,那么对于业务整体来说,就不是弹性的。我们已经看到 AWS 围绕 Lambda 对 VPC 网络、数据库连接池等资源做了大量实时弹性优化,相信其他的厂商也会跟进,进而行业整体会加速基础设施和各类云服务的 Serverless 化。
尽管各个云厂商都在大力推广自己的 Serverless 产品,但是开发者普遍还是会担心被厂商绑定,因此具备一定规模的组织会基于开源方案,如 Knative,搭建自己的 Serverless 平台。而一旦某个开源方案成为主流,云厂商就会主动去兼容开源标准并增大社区投入。
Serverless 平台要求应用的镜像足够小以能够快速分发,同时要求应用的启动时间极短。虽然在这些方面,Java 和 NodeJS 和 Python 等语言有差距,但是 Java 社区在不断努力。我们看到 Java 通过 Java 9 Modules 以及 GraalVM Native Image 等技术在不断努力“减肥”,主流框架 Spring 也开始拥抱 GraalVM,而新的框架如 Quarkus 和 Micronaut 也在做新的突破。期待 Java 在 Serverless 领域给人焕然一新的感觉。
Docker 的创始人之一 Solomon Hykes 曾说,“如果2008年有 WASM 和 WASI,我们当时就没有必要创造 Docker 了”,这句话在一定程度上说明了 WASM 的重要性。虽然当下 WASM 更多作为一种运行在浏览器端的技术被人了解,但是它具备非常优秀的安全隔离能力,极快的启动速度,以及对于超过20种语言的支持,那么为什么不能让它运行在服务端呢?这些技术特性都非常契合 FaaS 的要求。
领取专属 10元无门槛券
私享最新 技术干货