白话普及serverless架构

Posted 每日运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了白话普及serverless架构相关的知识,希望对你有一定的参考价值。

          最近serverless概念炒的特别的火,更有甚说今年是serverless元年,说是“无服务器服务”,以后开发如何如何省工,如何如何牛逼等。我个人觉得其实serverless的出现很早就有了,而且是伴随着云一起的,更多的是换了一个高大上的名字,换种玩法,炒炒概念,给公有云打打广告。既然这个概念有的聊了,小弟不才愿意抛砖引玉下。

什么是serverless architecture(没有服务器的架构)?
在目前主流云计算IaaS(Infrastructure-as-a-Service,基础设施即服务)和PaaS(Platform-as-a-Service,平台即服务)中,开发人员进行业务开发时,仍然需要关心很多和服务器相关的服务端开发工作,比如缓存、消息服务、Web应用服务器、数据库,以及对服务器进行性能优化,还需要考虑存储和计算资源,考虑负载均衡和横向扩展能力,考虑服务器容灾稳定性等非专业逻辑的开发。这些服务器的运维和开发知识、经验极大地限制了开发者进行业务开发的效率。设想一下,如果开发者只需要关注业务逻辑开发而无须关注如何在服务器中运行部署服务,无须关注性能优化服务,是否可以极大地提升开发效率和产品质量?这种去服务器而直接使用服务的架构,我们称之为Serverless架构。

Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署。更加强调底层VM和OS的透明化;fPaaS,全称Function Platform as a Service( 功能即服务架构)。其优势如下:
1.完全使底层透明化,应用程序只与语言运行环境交互,无需关注硬件及操作系统。
2.采用事件驱动,服务代码开发、部署在API请求下支持
3.运营稳定,后端伸缩计算服务提供支撑。隔离性,健壮性相对较好。
4.无须关心devops

最常见得玩法介绍:
介绍一个基于Docker的Serverless平台的一个高层次的参考架构,要点如下:   
Docker容器作为事件处理的计算环境运行
将函数化事件处理逻辑打包成为Docker镜像,利用镜像仓库进行管理和分发
事件调度器配合Docker集群来调度事件处理执行


利用Docker容器的方法实现Serverless平台,有如下优势:
利用Docker提供的轻量级OS虚拟化能力,能够敏捷地创建事件执行运行环境,并提供基本的资源、安全隔离能力
使用Docker镜像和镜像仓库,简单标准地对事件处理逻辑进行打包和在分布式环境下进行软件分发;通过Docker镜像的版本管理和追踪能力,可以管控应用发布,保证应用在大规模分布式环境中部署的一致性。
在Docker容器内部,开发人员可以自由选择使用不同的语言和框架进行事件处理,容器之间不会相互干扰。
Docker容器提供了标准化的外界环境交互的能力,应用逻辑可以通过环境变量、文件卷或者网络来访问上下文状态信息。
对不同实现的Docker容器进行统一的标准化运维处理,大大减少运维的复杂性,可以更好地实现自动化运维
基于Docker编排技术(比如阿里云容器服务等)提供的集群管理和编排能力,可以大大简化事件调度器的实现
受益于成熟的Docker的DevOps流程,可以大大提升开发交付效率

Serverless应用场景程序:
在高负载场景使用REST API从Web应用程序收集指标
从传入的包含订单和状态信息的电子邮件中提取和存储数据
创建提供标准后端CRUD操作的REST API
在大数据场景的ETL过程中收集和转换数据
分析来自实时数据流的日志消息
构建一个在后台可以与多个API交互的聊天机器人chatbot


以上是关于白话普及serverless架构的主要内容,如果未能解决你的问题,请参考以下文章

Serverless 入门学习

如何无缝迁移 SpringCloud/Dubbo 应用到 Serverless 架构

Serverless(无服务器架构)初识篇

Serverless Devs 重大更新,基于 Serverless 架构的 CI/CD 框架:Serverless-cd

Serverless Devs 重大更新,基于 Serverless 架构的 CI/CD 框架:Serverless-cd

译文 | Serverless架构的简短介绍,我们将在哪需要它?