zoukankan      html  css  js  c++  java
  • 学习笔记

    本文是2020-10-15学习serverless概念的笔记,笔记来源于 2020 01.04 蚂蚁金服体验科技大会,Evolution: Serverless For Frontend - 探索下一代 Node 研发模式。

    侵权请在评论区留言。

    图片是视频内PPT的图片。

    图片下方文字除了没有代码部分,几乎和图片文字一样。

    视频连接:https://www.bilibili.com/video/BV1oJ411n7pQ/?spm_id_from=333.788.videocard.8

    serverless

    1. 前后端日常

    前:产品说这个需求3天后就要上线!后端这里帮忙 加个接口 做下数据清洗吧?
    后:不是有几个现成的接口么,你在前端 自己组合清洗 下就好了吧?又不复杂!
    前:大佬,太多请求会 影响性能 啊!而且还有敏感字段,不安全啊!
    后:你来晚了, 发布窗口过了 ,我们后端不能为了小需求频繁发迭代。

    没有对错,不同视角看到的问题不一样。

    前端从UI模型,后端从领域模型(DB)。

    UI模型:用户体验趋向不稳定,跨终端跨平台,诉求服务的高度灵活与定制。

    领域模型:微服务化,趋向稳定,倾向下沉。

    聚合层一直都存在区别只是在于维护者是谁,以前是由后端帮我们维护的。

    2. 前后端分工模式 v3.0 (Now)

    聚合层(BFF) - Backend For Frontend 服务自治,谁使用谁开发。

    前端工程师:排版(html)、样式(css)、交互(js) | BFF 聚合曾。

    后端工程师:API、业务逻辑、数据。

    第二次【前后端分层】:服务自治,带来灵活与高效。

    2.1 Node.js 能胜任 BFF 么?

    函数应用:70%。
    全站应用:20%。
    异步任务:10%。

    Function 函数应用

    快速开发 领域模型 到 UI模型 的转换。

    Application 全栈应用

    全栈型应用,一杆到底。(如语雀、Basement)。

    Task 异步任务

    覆盖高 CPU/MEM、执行周期较长,如构建任务、爬虫。

    1. 语言层面,Node.js 是 完备 的,足够胜任 BFF 的主要场景。
    2. BFF 要求服务自治,但不限制技术选型。
      - 我们选择了生态最活跃,最能被前端接受的 Node.js
    3. 我们缺的是 【沉淀】。
      - 基础设施的建设和完备
      - 最佳实践的沉淀和积累
      - 人员能力平均水平的提升
    我们做了那些沉淀?

    框架:Egg & 插件生态,统一开发约束,降低团队的沟通成本。

    中间件服务:融入后端生态,分布式配置、缓存、限流、熔断。。。(写SDK)

    平台能力:AliNode 问题定位、 TNPM 包管理、 研发管控平台、 应用治理。。。

    BaaS服务:常用能力下沉, 如渲染服务、消息服务、文件服务、构建服务。

    我们遇到了什么问题?

    学习成本:额外的服务端,运维相关知识的学习成本。

    治理成本:依赖升级,锁版本,中间服务跨语言 SDK 的维护成本。

    招人难:大爆炸时代、前端涉及的领域太多,人员储备不够,培养成本高。

    资源利用率:BFF 通常的水位较低(<30%),微服务的高可用诉求,导致资源浪费。

    2. Serverless For Frontend

    SFF:为 高效 地开发人机交互界面提供 无感 的服务能力。

    核心要素:不增加额外成本的同时,提升前端效能和能力范围。

    应用分层的演进

    现实中的 BFF 实例
    一个大的 BFF 服务几个前端应用

    1. 新建一个应用的成本较高,难申请
    2. 代码组织方式相对简单
    3. 资源利用率容易提升

    导致:应用耦合,维护成本增加。对一个接口升级可能导致其他应用不可用。

    一个典型的应用场景

    展示用户信息

    • 请求后端服务接口
    • 数据聚合 + 清晰

    接口协议,支持不同终端

    • H5调用 HTTP 协议
    • 小程序调用无线网关协议(性能更好)

    登录鉴权,支持不同终端

    • H5 重定向到登录页面
    • 小程序弹出 Native 登录框

    云端一体化 + 轻研发

    1. 前后端同库 无感
    • 聚合层,本来就是与特定前端业务强关联的。
    • 想用则用,用完则抛,降低维护成本。


    2. 专注业务逻辑 提效

    • 职责分离。
    • 专注业务本身的逻辑。


    3. 一键接入服务 提效、无感

    • 无需安装依赖。
    • 无需人工走申请流程。
    • 秘钥不入源码,保证安全。
      平台会自动走流程,帮你申请密钥存起来,在你部署的时候自动注入(不入源码)。



    4. 前端SDK

    • 自动生成前端 Client SDK。
    • 统一前端请求库。
    • 屏蔽中断差异和协议细节。
    • 内置通用错误处理逻辑。

    接口模型标准化

    1. API 接口的标准化。
    2. 统一管控元数据的生产和消费。
    3. 涵盖上游、下游。

    1. 元数据 -> 前端 SDK
    • 自动生成前端 Client SDK
    • 屏蔽终端兼容性
    • 屏蔽协议细节


    2. 元数据 -> 后端 SDK

    • 自动生成后端SDK
    • 屏蔽协议细节
      • 不管是 后端 TR 服务、 DB 服务
      • 通通标准化为 BaaS 的调用方式
    • 服务编排能力
    1. 压测 + 容量评估
    • 自动生成压测脚本
    • 配合 Serverless 自动扩缩容
    • 即可预估峰值容量
    1. And More。。。
    • 自动生成接口文档
    • Mock 接口
    • 在线调试接口
    • 自动生成回归测试数据

    治理能力

    1. 应用规模越大, 治理能力 越重要(小工坊 -> 企业级)
    2. 没有银弹,在团队治理能力水平下的一种权衡
    3. 一天一夜都讲不完的话题,今天分享的是 【应急止血】

    治理能力 - 应急止血

    每月一吵得经典话题:锁版本 vs 不锁版本

    应用开发者:

    • 锁版本
    • 避免【明明上次部署没问题,新发空迭代就失败】
    • 我的应用我掌控,等我有空再升级

    框架维护者:

    • 不锁版本
    • 低成本解决 【安全风险 + 版本碎片化】 问题
    • 【有空】是一个美丽的谎言,是传花击鼓的定时炸弹

    没有银弹,在团队治理能力水平下的一种权衡。

    阿里当前的选择:Node.js 不锁版本

    • 应用规模太大 ,很多长尾历史遗留应用
    • 对 安全风险 的 时效性 要求很高
    • 不可能一个个通知去升级依赖和回滚测试

    那如何应急止血?

    SFF 给我们带来的新的思考:

    • 交付物: Framework -> Runtime
    • 只锁 Runtime 及其子依赖,三板斧升级
    • 迭代生命周期管控,统一构建
    • 应用自身依赖交回开发者自己决定

    Serverless 免运维 无感

    工程师对云服务的使用,就像当年解决页面兼容性,事事亲为,小心翼翼

    1. 支持 k8s、FC等 serverless 引擎
    2. 根据流量自动扩缩容,精细化部署、高密度部署
    3. Servicemesh 降低中间件服务的异构语言 SDK 维护成本
    4. 标准化 Serverless YML

    3. 未来已来

    /- 活多人少有挑战,撸起袖子拼命干

    我们的困境解决了么?

    提效、无感

    学习成本:通过轻研发、强管控的平台,使开发者只需写简单的函数。

    治理成本:职责分离,框架维护者 vs 应用开发者

    招人难: 提供无感的服务端能力,让前端回归初心,专注前端领域

    资源利用率:Serverless 自动扩缩容,按需

    2020 01.04 蚂蚁金服体验科技

  • 相关阅读:
    计算机网络学习笔记——计算机网络概述
    基础续一
    Python基础一
    linux lvm的操作手册_pvcreate_vgcreate_lvcreate_相关
    Oracle Linux 挂载存储
    MegaCLI SAS RAID Management Tool
    DELL RACADM 批量升级戴尔IDRAC固件
    LSI MegaCli 命令使用4
    LSI MegaCli 命令使用2
    LSI MegaCl i命令使用1
  • 原文地址:https://www.cnblogs.com/xiaoxu-xmy/p/13823540.html
Copyright © 2011-2022 走看看