为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第13天 无服务应用架构设计与实战

标签:
云计算

课程名称:系统入门云计算服务,项目上云综合实践
课程章节: 第6章 无服务应用架构设计与实战
课程讲师: 孔令贤

课程内容

什么是 Serverless

Serverless 从字面上看是没有服务器,但这只是针对 Serverless 服务的使用者而言,比如软件的开发者。对于提供 Serverless 服务的云厂商而言,底层的实现当然需要依赖于基础设施。但从开发团队的角度看,使用 Serverless 不需要再自己维护服务器或者云主机,也不需要去监控各种性能指标和资源利用率,而是把时间和经历用到应用程序本身的状态和逻辑。

  • Serverless 应用的部署变得十分容易。应用开发者可以直接上传业务代码,例如 Python 程序只需要上传其逻辑与依赖包,C/C++、GO等语言只需要上传其二进制文件,Java 只需要上传 Jar 包等即可,同时不需要使用 Docker 等进行配置管理。

  • Serverless 应用的维护也不需要再去关心传统的服务器指标,比如磁盘使用量、CPU、内存使用率等,因为使用 Serverless 之后你根本看不到这些资源。Serverless 的监控中心在于应用程序本身的度量比如应用目前承载的请求数量,应用对每个请求花费的处理时间等等。

Serverless 是云原生发展的高级阶段,可以使得开发者更聚焦在业务逻辑,而减少对云计算基础设施的关注。Serverless 的一个典型实现是函数即服务 Funcation as a Service(FaaS),虽然 FaaS 只是 Serverless 技术的实现者之一,但目前大部分人都把 FaaS 跟 Serverless 等同。

61cd78f509b4552c23801148

Serverless 的使用场景

  • 实时数据处理

    实时数据处理一般 是基于数据流或信息流在后端做同步或异步处理操作,比如在IOT场景下的处理实时流数据,由 IoT 设备产生的海量的实时信息流数据,通过 Serverless 服务分类处理并写入后端处理;另外在实时媒体咨询内容处理场景里,用户上传的音视频一般都会先保存在对象存储,通过上传事件触发多个函数,分别完成高清转码、音频转码等功能。

  • Web 应用的后端 API

    这个场景一般都会跟云平台的 API 网关服务配合使用。一个 web 请求,无论来自手机、app 或者网页,都会先到达 API 网关,然后转发给云函数,触发函数的执行。因为运行在云端,云函数可以在内部很方便的访问其他的云资源,比如云存储、云数据库、云缓存服务等。同时,不同的 API 功能的实现可以使用不同的编程语言,不同云函数之间相对独立,提升了服务开发的效率。

  • 事件驱动

    我们在这个章节也会讲到事件驱动。目前几乎所有提供 Serverless 服务的框架或服务都支持各种类型的外部或内部事件。比如在 AWS Lambda 的官网就介绍了一个最典型的事件驱动调用云函数处理图片的案例。

    61cd790a09ba447a19080560

Serverless 面临的挑战

  • 不适合长时间运行应用

    Serverless 一开始最受人们诟病的就是“冷启动”问题。因为 Serverless 服务在后端实现的时候一般都会跟容器技术结合,一个函数在执行的时候都会对应一个容器,而容器的运行是需要占用云平台的基础设施资源的。对于云厂商来讲,当然是希望自己在基础设施层的资源使用率最大化。于是,当函数不运行时这些容器就会进入 “休眠状态”甚至被删除,有新的请求时,再临时创建一个新的容器,应用将会需要一个启动时间,即冷启动时间。如果你的应用需要一直长期不间断的运行、处理大量的请求,那么可能就不适合采用 Serverless 架构。其他方式使用 Serverless 时也需要进行不断优化,在成本和效率之间找平衡。

  • 云平台锁定

    当你采用某云服务厂商的 Serverless 服务时,基本上就意味着你的应用和该云平台绑定了,如果将来要切换到其他的云平台就要付出很大的迁移成本,甚至重构。

    很多云平台为了给开发人员提供最大的便利性,会在自己的 Serverless 服务附加很多高级特性,而这些高级特性在其他云平台是没有的。所以,你的函数使用的高级特性越多,将来迁移到其他云平台时就越困难。

    Serverless 就像胶水,要充分发挥它的作用,都希望用更少的胶水粘更多的东西。类比到现实生活,想象一下,如果你想换另一个牌子的胶水,那么你以前粘好的所有东西就要先被拆开。如果你之前粘的东西越多,再拼接起来的复杂度就越高

  • 缺乏调试和开发工具

    我们以前在本地开发时,可以很方便的依托于本地环境甚至直接在远程运行环境上调试,因为我们可以访问到代码所运行的环境。但在 Serverless 平台上,运行环境对你是屏蔽的,你对云函数的掌控完全取决于云平台给你提供的能力。

    其实目前各个 Serverless 服务都在致力于解决这个问题,比如微软在收购了 VS Code 后对自家的云函数服务做了很多优化和集成,同时市面上也有一些厂商中立的解决方案。大家在做 Serverless 平台选型的时候需要提前做好调研。

课程内容

今天学习了什么是 Serverless ,Serverless 的使用场景、Serverless 面临的挑战。
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
6
获赞与收藏
11

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消