简介: 技术演进的本质是更好服务业务,传统开发方式使企业花费更多的精力打磨底层技术细节,而 Serverless 架构就是让开发者专注业务实现从而创造更大的业务价值。

作者 | 丹坤  
整理 | 徐诗瑶
出品 | CSDN 云原生

互联网软件架构演进

我们先简单回顾下互联网软件架构的演进之路。

单机部署

在单机部署中,将所有的业务和数据库都部署在一台主机中。

此架构的优点是:开发、部署以及运维都非常简单。缺点是:一旦遇到流量过大或者机器故障,整个系统瘫痪,甚至丢失业务数据,造成巨大业务损失。

集群化部署

针对上述架构问题,常用的解决方案是采取水平扩容的方式进行集群化部署。引入 SLB 的流量网关路由,进行负载均衡。集群化部署本质上是单体架构,开发人员在项目开发的时候需要额外注意,比如要使用 cookie 进行鉴权,session 就不能存储在本地,需要引入 Redis 进行单独存储。集群化部署可以通过快速水平扩容解决流量突增或机器故障的问题。

微服务拆分

随着业务的发展以及团队规模的扩张,单体架构这样紧耦合的方式会带来越来越多的问题,架构的灵活性和可扩展性成为阻碍业务发展的重大挑战。微服务架构应运而生。

对比单体架构,微服务架构远比其复杂,也衍生了很多新技术,比如:API 网关、服务注册、服务发现、RPC 通信。

Serverless 架构

从单体架构到微服务架构,从单机部署到集群化部署,互联网软件架构越来越复杂,公司需要投入大量精力和成本进行底层技术的升级和维护。下图是 Serverless 架构,和单体架构不同的是将对应的组件换成 Serverless 云产品。


技术演进的本质是更好服务业务,传统开发方式使企业花费更多的精力打磨底层技术细节,而 Serverless 架构就是让开发者专注业务实现从而创造更大的业务价值。

Serverless 架构的优势很明显:

●不关注底层基础设施,专注业务价值创造

●自动弹性,从容面对突增流量

●按资源使用计费,避免资源闲置浪费Serverless 架构探讨先来看一下 FaaS 的执行过程。蓝色部分是用户手动管理,只需要交付代码,其他的启动、运行、运维等都是在 FaaS 平台进行。

但是此架构会产生一些问题:

●代码碎片化,无法统一管理和部署

●本地环境和线上环境不一致,无法处理依赖兼容性问题

●进行本地 Debug 和线上调试困难

●FaaS 厂商对代码包有限制,无法部署大代码包

●没有统一的标准,导致厂商锁定问题Serverless Devs针对上述问题,Serverless Devs 可以帮助开发者更好地开发管理 Serverless 应用

它具备以下几个特点:

●无厂商锁定,Serverless Devs 帮助开发者将应用部署在各个厂商上面

●开源开放,代码逻辑无任何黑洞

●功能可插拨,Serverless Devs 通过组件的形式提供,开发者完全可以根据需求,快速开发适合自己的工具套件

●项目全生命周期管理能力,Serverless Devs 是用户进行项目初始化创建、开发、调试、部署等全生命周期管理的工具,简化 Serverless 应用开发如果说 Serverless 架构可以帮助开发者开发应用,那么 Serverles Devs 就是帮助 Serverless 开发者更好地开发 Serverless 应用!

Serverless 架构实践

Serverless Devs 官网实践通过上面的介绍可以看出 Serverless Devs 开发者工具并没有提供业务,业务的实现由组件提供,而组件本身分散在不同的 GitHub 仓库中。

Serverless Devs 官网有下面几个诉求:

●不同仓库下 GitHub 源中的文档汇集在一个界面进行展示

●组件开发者专注组件文档编写,文档自动实时同步到官网●组件一旦有变动,官网能够自动部署和构建整体方案如下:

开发者在 GitHub 更新文档,触发 webhook 钩子配置的 Http Serverless 函数。这里需要注意的是:由于组件的文档数目不定以及 GitHub 网络不稳定等问题,如果所有的工作都在 Http 函数中处理,非常容易导致超时,所以将所有的处理逻辑放在异步调用中,执行完后将处理的结果投递到钉钉或者邮件等渠道。

阿里云函数计算控制台实践

阿里云函数计算 FC 控制台是用户使用函数计算产品的第一站,控制台的用户体验至关重要。

在架构上面临几个问题:

●后端采用中心化部署模式,用户在海外访问延时非常高

●需要用户手动建设监控、日志、灰度等能力,导致运维成本偏高

●研发效率较低,开发过程中前后端需要协调沟通,协作成本较大整体解决方案如下:

左侧是阿里云通用的网关,负责统一鉴权和安全等逻辑,抽离出 BFF(Backend for Frontend)层,这部分的特点如下:

●整体 BFF 部署在阿里云函数计算 FC 上,开发者无需手动运维
●BFF 层由前端工程师负责,前端工程师更好地深入业务,提供优秀的用户体验
●后端工程师专注于底层稳定性和原子能力的提供,通过 SDK 的方式进行交付给 BFF

通过 Serverless 实现的 BFF 不仅给业务带来了极大的灵活性,对于前端工程师这个群体也有质的改变:从之前的技术视角转变到更加关注业务价值和用户体验提升。

CD 构建实践

常规的自建 CD 构建集群方案通过 Jenkins 或 Tekton 框架实现业务逻辑的编排,资源层面使用 K8s 部署,实现弹性伸缩。如果需要实现简单的云端构建 CD 方案,采用上文的架构略显复杂。

CI/CD 的业务场景有以下几个特性:

●通过事件触发执行

●流量无法提前预估

●需要长时间在后台运行,对延时不敏感

●由于网络时延等问题,需要设计失败重试机制这些特性完全是为 Serverless 量身打造的。实现方案还使用了异步函数,将构建的所有流程导到异步函数中处理,整个编排逻辑通过 Serverless Devs 进行,完美实现了一个性能稳定的 CD 构建集群。阿里云函数计算应用中心这款产品的底层的 CD 能力完全基于上述的原理进行实践,大家可以自行体验。

异步函数

实践中有非常多使用到异步函数的场景,这里简单介绍下异步函数。

总结来看,异步函数有四个特点:

1、可长时间运行,两个小时到一天不等
2、可以设置自动终止,自由调节时间,节约资源
3、可把触发结果分发给各个事件兑现中心
4、有三次机会可在失败的情况下自动重试

本文为阿里云原创内容,未经允许不得转载。

Serverless 架构落地实践及案例解析的更多相关文章

  1. 人力节省 50%,研发效能提升 40%,阿里 Serverless 架构落地实践

    作者 | 万佳 嘉宾 | 杨皓然(不瞋) 导读:云的下一波浪潮是什么?杨皓然称"是 Serverless".作为一名阿里老兵,他早在 2010 年即加入阿里云,曾深度参与阿里云飞天 ...

  2. [转载]DevOps在传统企业的落地实践及案例分享

    内容来源:2017年6月10日,优维科技高级解决方案架构师黄星玲在“DevOps&SRE 超越传统运维之道”进行<DevOps在传统企业的落地实践及案例分享>演讲分享.IT 大咖说 ...

  3. SpringCloud落地实践

    这几年微服务架构越来越火.伴随着微服务概念的提示,越来越多的组织为了方便开发,结合实际提供很多微服务机构, 之前工作中一直使用dubbo作为微服务框架, dubbo只是专注于服务之间的通讯,所以更灵活 ...

  4. 前端如何真正晋级成全栈:腾讯 Serverless 前端落地与实践

    Serverless 是当下炙手可热的技术,被认为是云计算发展的未来方向,拥有免运维.降低开发成本.按需自动扩展等诸多优点.尤其是在前端研发领域,使用 Node 开发云函数,可以让前端工程师更加专注于 ...

  5. 直播报名|资深云原生架构师分享服务网格在腾讯 IT 业务的落地实践

    云原生在近几年的发展越来越火热,作为云上最佳实践而生的设计理念,也有了越来越多的实践案例,而一个个云原生案例的背后,是无声的巨大变革. 腾讯云主办首个云原生百科知识直播节目--<云原生正发声&g ...

  6. 高德最佳实践:Serverless 规模化落地有哪些价值?

    作者 | 何以然(以燃) 导读:曾经看上去很美.一直被观望的 Serverless,现已逐渐进入落地的阶段.今年的"十一出行节",高德在核心业务规模化落地 Serverless,由 ...

  7. Serverless 架构演进与实践

    Serverless 架构演进与实践 1. 介绍 Serverless 并不仅仅是一个概念,很多地方都已经有了它的影子和思想,本文将给大家介绍最近比较火的 Serverless. 首先放出官方对 Se ...

  8. COS 数据湖最佳实践:基于 Serverless 架构的入湖方案

    01 前言 数据湖(Data Lake)概念自2011年被推出后,其概念定位.架构设计和相关技术都得到了飞速发展和众多实践,数据湖也从单一数据存储池概念演进为包括 ETL 分析.数据转换及数据处理的下 ...

  9. Serverless 架构下的服务优雅下线实践

    作者 | 行松 阿里巴巴云原生团队 应用发布.服务升级一直是一个让开发和运维同学既兴奋又担心的事情. 兴奋的是有新功能上线,自己的产品可以对用户提供更多的能力和价值:担心的是上线的过程会不会出现意外情 ...

  10. Serverless架构详解:开发者如何专注于业务代码本身?

    本文来自腾讯云技术沙龙,本次沙龙主题为Serverless架构开发与SCF部署实践 演讲嘉宾:黄文俊,曾负责企业级存储.企业级容器平台等产品的架构与开发,目前主要负责SCF腾讯无服务器云函数产品相关. ...

随机推荐

  1. stars-one的原创工具——文档生成器

    Github 可以快速生成静态页面文档的工具,适用于文档翻译或者是个人项目,个人开发者可以快速将生成的静态页面部署在gitee或者github上 优点 规范 使用流行的markdown格式编写文档 美 ...

  2. 全国标杆!3DCAT实时云渲染助力深圳移动5G+智慧校园建设

    2023年2月27日,中国移动在陕西西安召开全国教育行业全年工作部署暨电子学生证专项调度会,来自全国各地的移动分公司.专家.合作伙伴等参加了会议.瑞云科技旗下3DCAT实时渲染云作为中国移动的重要合作 ...

  3. drf(Book序列化练习、user表练习)

    一. APIView版本 1. models.py from django.db import models # Create your models here. class CommonField( ...

  4. 【福利】JetBrains 全家桶永久免费使用

    Jetbrains系列的IDE公认是最好的集成开发工具,但是收费且挺贵.我们以PhpStorm为例,新用户第一年需要199$,注意是$,还不是人民币,这个价格一上来肯定筛选掉一大批用户.确实好用,所以 ...

  5. 常用命令--htpasswd--(网站加密)

    常用命令htpasswd(网站加密) 常用选项 htpasswd 是一个用于创建和管理HTTP基本认证密码文件的命令行工具,通常与Apache Web服务器一起使用.以下是 htpasswd 常用选项 ...

  6. #KMP,矩阵乘法#洛谷 3193 [HNOI2008]GT考试

    题目 给定\(n,m,K\)和一个长度为\(m\)的数\(x\), 问有多少个\(n\)位数满足任意一段不与\(x\)完全相同,可含前导0 \(n\leq 10^9,m\leq 20\) 分析 设\( ...

  7. #计数,记忆化搜索#C 连边方案

    分析 设\(dp[i][j][k][l]\)表示处理到\([i-l+1,i]\)的连边,二进制状态(奇点还是偶点)为\(k\)的方案数, 最后一维是为了避免算重,那么如果第\(i-l+1\)位是偶点可 ...

  8. OTP/HOTP/TOTP的资料

    参考资料 [加解密]动态令牌-(OTP,HOTP,TOTP)-基本原理 每天一个小知识:HOTP HOTP和TOTP算法图解 RFC HMAC: Keyed-Hashing for Message A ...

  9. std::thread 二:互斥量(带超时的互斥量 timed_mutex())

    timed_mutex . try_lock_for . try_lock_until #include <iostream> #include <thread> #inclu ...

  10. 动态库 DLL 封装三:对dll二次封装,并将回调函数放出去,供别人调用

    背景: 我需要对一个dll进行二次封装,其中有一个接口,里面的参数需要传回调函数. 需求: 这个回调函数,我需要开放出去,让别人调用我的dll时,自己写这个回调函数 示例: // 回调原型 VOID ...