1.无服务器架构入门

目录

1.Serverless基础

2.Serverless的目标受众

3.Serverless对于开发人员和运维人员的要求

4.Serverless的优点

5.Serverless的缺点

1.Serverless基础

Serverless架构中文名称叫无服务器架构,是指在构建和运行应用时,不再需要将更多的精力放到服务器管理上。实际上,它描述了一种更细粒度的部署模型,Serverless是函数粒度的部署。即一个应用程序捆绑一个或多个函数,开发者只需要将这些函数开发完成,并上传到供应商提供的Serverless架构平台,然后执行即可,至于其中可能需要的服务器运维、扩缩容等操作,都由供应商考虑并提供技术支持。

Serverless并不意味着我们不再需要服务器来运行程序,也不意味着不再需要运维工程师。它指使用无服务器架构后,不再需要花费时间和资源来进行服务器配置、维护、更新、扩容和容量规划。所有的这些任务都交给Serverless平台来处理。因此,开发人员可以专注于编写应用程序的业务逻辑代码,运维工程师也能够将关注点放在关键业务上。

Serverless架构中包括两种角色:一个是Developer,即开发人员,一个是,即供应商。

其中开发人员在指定平台编写代码并部署执行,这里的指定平台就是Serverless平台;供应商为外部或内部客户部署Serverless平台。部署Serverless平台就是提供相关的BaaS与Faas能力。

Serverless实际上是Faas+Baas,所谓Faas,就是Function as a Service,通常提供事件驱动计算。开发人员使用由事件或HTTP请求触发的函数来运行和挂历应用程序代码。开发人员将代码以函数为单元部署到Faas平台,这些代码将根据需要执行,在执行过程中,开发者无须管理服务器或任何其他底层基础设施。

而所谓的BaaS则是Backend as a Service,它是基于API的第三方服务,可替代应用程序中的核心功能子集。因为这些API是作为可以自动扩展和透明操作的服务而被提供的,所以对于开发人员表现为Serverless。

当我们所开发的应用满足以下情况时,可以优先考虑才有Serverless架构:

  1. 异步、并发、易于并行化为独立的工作单元
  2. 不经常或有零星的需求,在扩展要求方面存在巨大的、不可预测的差异
  3. 无状态、短暂的、对瞬间冷启动时间没有过多需求
  4. 在业务需求变更方面具有高度动态性,需要加快开发的速度
  5. 执行逻辑以响应数据库更改
  6. 对物联网传感器输入消息进行分析
  7. 流处理(分析或修改动态数据)
  8. 管理单次提取、转换和加载的作业,这些作业需要在短时间内进行大量处理
  9. 通过聊天机器人界面提供认知计算
  10. 调度执行时间很短的任务,例如Cron或批处理调用等
  11. 服务于机器学习和AI模型
  12. 持续继承Pipeline,按需为构建作业提供资源,而不是保留构建从属主机池等待作业分派

Serverless使开发人员能够专注于由事件驱动的函数组成的应用程序,这些函数响应各种触发器并让平台负责其余的事情,例如从触发器到函数逻辑、从一个函数传递到另一个函数的信息、自动设置容器和运行时间、自动扩容、身份管理等。

2.Serverless的目标受众

  1. 希望在单个函数中更多地关注业务逻辑的开发人员,这些函数可根据需求自动扩展
  2. 希望更快地构建应用程序并且更少地关注运维的开发人员
  3. 创建事件驱动应用程序的开发人员和团队,例如响应数据库更改、物联网读数、人工输入等
  4. 在标准和最佳实践尚未完全建立的领域,能够轻松采用尖端技术的组织

3.Serverless对于开发人员和运维人员的要求

  1. 迭代函数,在本地Web开发环境中构建和测试
  2. 将单个函数上传到Serverless平台
  3. 声明事件触发器、函数及其运行时,以及事件到函数的关系
  4. 测试并观察生产中的应用
  5. 无须更新配置以确保高可用性和扩展以匹配需求

4.Serverless的优点

  1. 开发人员的关注点已经远离运维问题,如管理高可用函数的部署,开发人员可以更多地转向函数逻辑本身
  2. 开发人员可以根据需求或工作量自动扩展
  3. 利用新的"即用即付"成本模型,仅按照代码实际运行的时间收费
  4. 操作系统,运行时甚至容器生命周期都是完全抽象的(Serverless)
  5. 更适合涉及物联网、数据和消息的新兴事件驱动和不可预测的工作负载
  6. 通常是无状态、不可变和短暂的部署。每个函数都以指定的角色和明确定义有限的资源访问权限运行
  7. 中间件层将得到调整和优化,应用程序的性能随着时间的推移将提高
  8. 易于将第三方API集成为定制的Serverless API,既可以扩展使用,又可以灵活地从客户端或服务器调用

5.Serverless的缺点

  1. 一种新兴的计算模型,快速创新,缺乏全面的文档、示例及稳定的工具和最佳实践
  2. 由于运行时更具动态性,于IaaS和PaaS相比,调试可能更具挑战性
  3. 由于是按需架构,如果运行时在空闲时删除函数的所有实例,则某些Serverless应用运行时的"冷启动"可能有性能问题
  4. 在更复杂的情况下(例如触发其他函数的函数),对于相同数量的逻辑,可能存在更多的测试需求
  5. 缺乏标准化和生态系统成熟度
  6. 由于是平台的编程模型,事件和消息接口和BaaS产品有被平台锁定的可能性

Serverless从诞生之日起到目前为止,经历了从不为人知到广为人知的过程,有人对Serverless异常看好,也有人对其表示怀疑,但是无论如何,这个架构确实在不断地流行起来,究其根本,就是因为它的众多优点带来了极大的便利。

相关推荐
Serverless社区2 小时前
阿里云新发的AgentRun 有哪些“大招”,一文详解来了
运维·阿里云·云原生·serverless
切糕师学AI3 小时前
ARM 架构中的 PRIMASK、FAULTMAST、BASEPRI 寄存器
arm开发·架构·嵌入式·寄存器
听风吟丶3 小时前
微服务分布式事务实战:从数据一致性到故障恢复全方案
分布式·微服务·架构
子春一3 小时前
Flutter 2025 测试策略全景:从单元测试到混沌工程,构建坚不可摧的高质量应用
flutter·架构
timmy-uav4 小时前
BetaFlight代码解析(20)—屏幕显示(OSD)
架构·系统架构·无人机·飞控·betaflight
路边草随风4 小时前
构建能访问k8s集群的容器
云原生·容器·kubernetes
神算大模型APi--天枢6464 小时前
国产硬件架构算力平台:破解大模型本地化部署难题,标准化端口加速企业 AI 落地
大数据·前端·人工智能·架构·硬件架构
Empty_7774 小时前
K8S-Pod驱逐
云原生·容器·kubernetes
武子康4 小时前
Java-192 深入拆解 EVCache 内部原理:Memcached 架构、Slab 分配与 LRU 过期机制全解析
数据库·redis·缓存·架构·memcached·guava·evcache