Serverless 时代的应用开发

Posted youzhouliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Serverless 时代的应用开发相关的知识,希望对你有一定的参考价值。

如同智能机一夜之间颠覆了诺基亚,Serverless 的出现也带来了一种全新的、颠覆式的云开发架构模式。在 Serverless 出现前,开发者们根本无法想象几分钟就能快速部署一个 Web 应用上线。

2012 年,Iron 公司首次提出 Serverless 的概念。2014 年亚马逊云科技发布 Amazon Lambda 第一次让 Serverless 从概念走向落地,也标志着 Serverless 时代的开启。Amazon Lambda 作为无服务器计算服务,主要有以下四个特点:

  • 无需部署管理基础设施:serverless 计算并不代表真的没有服务器,而是不需要管理部署服务器。

  • 自动扩展:不用考虑扩容、容量规划的问题,底层的服务会自动实现按需扩容。

  • 按需付费:按照时间和使用量收费,避免为闲置计算资源浪费。

  • 高度可靠与安全:基于高可用架构开发,可用性高。

Amazon Lambda 的出现为应用开发和部署提供了极简的模型。

Serverless Web 应用使用场景

Serverless 架构常见的应用场景有数据处理、IT 运维自动化等,不少用户还会将 Serverless 应用到前端的 Web 应用上,包括 Flask、Django、Express.js、Rails 等应用。Serverless 可以渲染相应的 Web 页面到客户端,同时也支持提供 json 的 REST API,进行前后端的分离,静态的 React、Angular、Vue 前端通过 HTTP 请求,  来调用后端的 API,获取数据,从而展示给客户。此外,手机后端应用也经常会使用 Serverless 开发小程序的后端。

Serverless Web 应用有哪些特点呢?

第一,最常见的 Web 应用开发方式,服务器里面运行的是 Web 应用进程,此时,Web 应用会监听到一个端口。并且,在 Amazon Lambda 里面每个请求都是由一个单独的计算实例来处理的,不管 CPU 还是内存,都专门为这一个请求服务。这种方式的优势在于,可以将每个请求全部隔离开,不会出现某一个请求崩溃,影响其他用户的并发需求。

第二,Web 应用在 Amazon Lambda 里面运行,需要是无状态的应用。因为 Amazon Lambda 请求会随机分发到多个计算实例上,每个计算实例在本地缓存数据,下一个请求进入,可能不会分配到同一个实例上。所以,如果需要共享状态,可以存储在 Redis 或者数据库中。

第三,在 Amazon Lambda 的计算环境上,每次调用的请求处理完毕后,计算环境会被冻结到下一次请求来之前。在这段时间里是没有 CPU 资源的,后台任务不能运行,所以不能在 Amazon Lambda 里面运行后台的进程。

最常见的基于前后端分离的 Web 应用架构,通常会把前端的 SPEA 应用放在 Amazon S3 上做 HTTP、Django 等,前端用 CDN 加速。用户下载了前端后,前端会通过 API Gateway,来调用后端动态的数据。API Gateway 提供相应的 HTTP 的入口,触发 Lambda 函数,从而运行 Web 应用。Web 应用可以访问数据库或者任何后端。

以上是关于Serverless 时代的应用开发的主要内容,如果未能解决你的问题,请参考以下文章

All in Serverless,云计算进入无服务器时代?

Serverless 时代下大规模微服务应用运维的最佳实践

Serverless 时代下大规模微服务应用运维的最佳实践

拥抱开放,Serverless 时代的下一征程

FaaS函数计算Serverless边缘计算,2018年云将走向何方?

从中心走向边缘,Serverless加CRDT是云计算的未来?