无服务器架构(Serverless)入门详解!

大自然的搬运工
什么是Serverless

Serverless(无服务器架构)是指服务端逻辑由开发者实现,应用运行在无状态的计算容器中,由事件触发,完全被第三方管理,其业务层面的状态则存储在数据库或其他介质中。

Serverless可以使开发者更聚焦在业务逻辑,而减少对基础设施的关注。

Serverless与其他技术比较*

Serverless的分类

Serverless通常包含了两个领域 BaaS(Backend as a Service)和 FaaS(Function as a Service)

  • BaaS是一种广泛依赖于第三方应用和服务的无服务器计算方法。BaaS供应商可以提供加密、用户认证、云数据库的使用。这些服务可以通过调用云供应商提供的API进行访问;相比自己重新开发,这些功能可以更方便地整合到各个类型的系统中。

  • FaaS 是一种事件驱动的由消息触发的服务,FaaS 供应商一般会集成各种同步和异步的事件(如AWS的SNS),通过订阅这些事件,可以触发指定的函数运行,例如当前使用很广泛的 AWS 的 Lambda函数。

Serverless的应用场景

Serverless 可以广泛应用到互联网和传统软件开发的各个领域,如网站(https://acloud.guru/完全由AWS Serverless支持),手机应用等。但是其也有局限性,Serverless 比较适合以下场景:

  • 各组件相互独立部署和扩展

  • 服务使用量不可预测(可以节省开支, Serverless 只在运行时收费)

  • 响应时间短暂、无状态的应用

  • 需求频繁变更,需要快速开发迭代的业务(无需关注资源,专注迭代核心业务)

以手机应用开发为例:

Serverless 架构中,我们不再在服务器端代码中存储任何状态,而是直接将它们存储在 NoSQL 中,实现应用程序无状态,有助于扩展。直接利用 BaaS 而减少后端的编码需求,这样的架构减少了开发的人力成本,降低了维护的风险,而且利用云的能力更便于扩展和快速迭代。

传统应用开发模式

Serverless 开发模式

Serverless架构的优缺点

Serverless架构的优点
  • 降低运营成本:

Serverless是非常简单的外包解决方案。它可以让您委托服务提供商管理服务器、数据库和应用程序甚至逻辑。由于这个服务使用者的数量会非常庞大,于是就会产生规模经济效应。在降低成本上包含了两个方面,即基础设施的成本和人员(运营/开发/维护)的成本。

  • 降低开发成本:

Serverless作为一种云服务,使得整个应用程序组件被商品化。

  • 扩展能力:

横向扩展是完全自动的、有弹性的、且由服务提供者所管理。从基本的基础设施方面受益最大的好处是,您只需支付您所需要的计算能力。

  • 更简单的管理:

Serverless架构明显比其他架构更简单。更少的组件,就意味着您的管理开销会更少。

  • 有效利用计算资源:

据《福布斯》的统计,在商业和企业数据中心的典型服务器仅提供5%~15%的平均最大处理能力的输出。这无疑是一种资源的巨大浪费。Serverless让服务提供商提供我们的计算能力最大限度满足实时需求,更有效地利用计算资源。

Serverless架构的缺点
  • 状态管理:

要想实现自由的缩放,无状态是必须的,而对于有状态的服务,使用serverless这就丧失了灵活性。

  • 延迟:

Serverless应用程序是高度分布式、低耦合的,这就意味着延迟将始终是一个问题,单纯使用serverless的应用程序是不太现实的。

  • 本地测试:

Serverless应用的本地测试困难是一个很棘手的问题。虽然可以在测试环境下使用各种数据库和消息队列来模拟生产环境,但是对于无服务应用的集成或者端到端测试很困难。

Serverless在Devops的应用

使用Lambda函数的CI/CD架构

  • Jenkins master部署到AWS EC2,通过AWS CloudWatch监控状态,发现异常并进行处理

  • Jenkins slave通过jenkins ec2 plugin*在AWS上动态添加/删除

  • Build完成后,产品存储到AWS S3,并发布消息

  • Lambda函数订阅Build发布消息,进行更新DymoDB,向slack发送消息等操作

未经允许不得转载:大自然的搬运工 » 无服务器架构(Serverless)入门详解!

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址