serverless 初探

简介

概念

  • serverless 是对弱/无服务(削弱开发者对服务部署和维护的感知)应用架构的抽象和总结,是基于云平台的一种高自动化的开发方式,包含Faas和Baas

解决什么(钱)问题

  • 成本

    • 运营成本

      • 不关心部署
      • 自动扩容
    • 服务资源成本

      • 按调用次数收费
  • 效率

    • 提高应用部署效率
    • 提高业务开发的效率

适合什么场景

  • 轻量

    • IOT,多媒体处理,机器人,个人博客
  • 低实时要求

    • 发邮件,消息推送,验证码
  • 流量集中

    • 定时任务,自动化hook,爬虫
  • 快速迭代

    • 创业,业务idea 试错

云平台

  • AWS
  • Google
  • Azure
  • Aliyun
  • Tencent

计费

  • 预付

    • 单价低,按峰值
  • 后付

    • 单价高,按实际

开源框架

  • fn

    • 来自 Oracle 的开源 Serverless 框架 https://fnproject.io/
  • openfaas

    • 以容器技术为核心的开源 Serverless 框架。 https://github.com/openfaas/faas
  • fission

    • Platform9 推出的开源 Serverless 框架 https://github.com/fission/fission
  • Kubeless

    • 基于 Kubernetes 架构实现的开源 Serverless 框架 https://github.com/kubeless/kubeless
  • OpenWhisk

    • Apache 社区的开源 Serverless 框架 https://github.com/apache/incubator-openwhisk

谁在用

  • 上线了
  • thoughtwork
  • 字节跳动
  • 腾讯
  • 阿里
  • aws 80%的容器用户

实战

平台

  • Aliyun Serverless Faas

node框架

  • midway faas

    • https://www.yuque.com/midwayjs/faas

模拟机器人处理函数

  • 创建

    • f create
  • 配置

    • f.yml
      service: midway-faas-vue-demo
      
      provider:
        name: aliyun  # tencent
        runtime: nodejs10
      
      functions:
        render:
          handler: api.render
          events:
            - http:
                path: /*
        index:
          handler: api.index
          events:
            - http:
                path: /api/index
        detail:
          handler: api.detail
          events:
            - http:
                path: /api/detail
        list:
          handler: api.list
          events:
            - http:
                path: /api/list
        answer:
          handler: api.answer
          events:
            - http:
                path: /api/answer
      
      ## aggregation deplpy
      aggregation:
        agg-demo-all:
          deployOrigin: false
          functionsPattern:
            - '*'
      
      package:
        include:
          - build
        artifact: code.zip
    
  • 函数

    • https://www.yuque.com/midwayjs/faas/glossary
  • 部署

    • f deploy
  • 访问
    serverless 初探_第1张图片

  • 函数指标 serverless 初探_第2张图片

  • 项目

    • https://github.com/AviorAlong/midway-faas-test

阿里云 faas 总结

  • 快速部署
  • 收费规则太多
  • 自动扩容无法验证
  • 自定义域名不方便

总结

优势

  • 运营成本低
  • 开发效率高
  • 自动扩容

劣势

  • 安全性

    • 恶意调用
    • 数据安全
  • 新的学习成本

    • 新框架
    • 新环境
  • 调用时长限制

    • 函数运行时长10分钟
  • 冷启动延迟

    • 冷启动时间长
  • 平台依赖严重

    • 依赖平台的稳定性,迁移成本高

未来?

  • baas

    • 后端服务上云
  • faas

    • 轻量服务拆分
  • 榨干程序员

    • 美好的愿望

      • 解放程序员,提高效率,专注于业务开发
    • 残忍的挖坑

      • 底层,源码,算法,架构

附学习文档

  • 社区

    • serverless 中文社区
  • 平台

    • 阿里云函数计算 函数计算
  • 媒体报告

    • Serverless 现状研究报告

你可能感兴趣的:(自动化,nodejs,运维组件)