什么是serverless computing
 
  
  - serverless computing = FaaS (Function as a Service) + BaaS (Backend as a Service)
  
  - serverless是云原生应用的业务需求,是云计算形态的进一步发展,是云计算的下一代计算范式,Everything is Serverless
  
 
 
  无服务器和传统云计算之间的三个基本区别是:
 
  
  - 解耦计算和存储;它们分别缩放并独立定价, 通常存储由独立服务提供,计算是无状态的
  
  - 执行一段代码而不是分配执行代码的资源的抽象。用户提供一段代码,云端自动配置资源来执行代码(NoOPS,传统云计算是devops)
  
  - 支付代码执行费用(Pay as you Run, 传统云计算是Pay as You Use),而不是支付为执行代码分配的资源。比如按执行时间计费,而不是按分配的虚机大小数量计费
  
 
 
  Serverless 典型产品
 
  
   
    
    | 厂商 |  
    产品 |  
   
 
   
   
    
    | AWS |  
    Lambda |  
   
 
    
    | Azure |  
    Azure Function |  
   
 
    
    | tencent |  
    Serverless Cloud Function |  
   
 
    
    | Google |  
    Cloud Functions |  
   
 
    
    | Huawei |  
    Function Graph |  
   
 
   
 
 
  函数服务主要开源项目
 
  
   
    
    | 项目 |  
    简介 |  
   
 
   
   
    
    | Serverless |  
    Simple way to build serverless applications |  
   
 
    
    | OpenFaaS |  
    Serverless Functions Made Simple |  
   
 
    
    | Kubeless |  
    Kubernetes Native Serverless Framework |  
   
 
    
    | OpenWhisk |  
    Serverless Functions Platform for Building Cloud Applications |  
   
 
    
    | Knative |  
    Kubernetes-based, scale-to-zero, request-driven compute |  
   
 
    
    | Fission |  
    Fast and Simple Serverless Functions for Kubernetes |  
   
 
    
    | Fn |  
    Event-driven Functions-as-a-Service (FaaS) compute platform |  
   
 
    
    | Nuclio |  
    Serverless for Real-Time Events and Data Processing |  
   
 
   
 
 
  开源项目对比
 
  ServerLess 框架比较
 
  
   
    
    | 对比项/框架 |  
    OpenFaas |  
    OpenWhisk |  
    kubeless |  
    Fission |  
    Iron function |  
    Fn |  
   
 
   
   
    
    | 人气(Github星) |  
    19k |  
    5.2k |  
    6.4K |  
    5.9k |  
    2.9k |  
    4.9k |  
   
 
    
    | 稳定性(贡献者> 10次提交) |  
    10 |  
    33 |  
    7 |  
    6 |  
    9 |  
    19 |  
   
 
    
    | 稳定性(企业支持) |  
    VMware |  
    IBM(Apache Foundation) |  
    Bitnami |  
    Platform9 |  
    https://iron.io |  
    Oracle |  
   
 
    
    | 稳定性(项目时间) |  
    2016年12月 |  
    2016年2月 |  
    2016年11月 |  
    2016年8月 |  
    2016年2月 |  
    2016年五月 |  
   
 
    
    | 稳定性(开发语言) |  
    Go |  
    Scala |  
    Go |  
    Go |  
    Go |  
    Go |  
   
 
    
    | 工具(打包机制) |  
    Docker容器 |  
    Docker容器 |  
    Docker容器 |  
    Docker容器 |  
    Docker |  
    Docker |  
   
 
    
    | 工具(k8s上的部署功能) |  
    Manifest with custom yaml |  
    Manifest with custom yaml |  
    Manifest |  
    Manifest with custom yaml |  
    Proprietary |  
    Proprietary |  
   
 
    
    | 工具(通过无服务器部署吗?) |  
    是(WIP) |  
    是 |  
    是 |  
    否 |  
    否 |  
    是 |  
   
 
    
    | 技术(基础技术) |  
    AllertManager/Prometheus,Nats |  
    CouchDB,Kafka,Nginx,Redis,Zookeeper |  
    无(可选的Nats或Kafka) |  
    fluentd(可选的Nats) |  
    Postgres, Redis |  
    DB(sqlite3,PostgreSQL,MySQL),MQ(Bolt,Redis),Prometheus |  
   
 
    
    | 易用性(开箱即用?) |  
    是 |  
    是 |  
     |  
    否(无服务器插件失败) |  
    是(麻烦) |  
     |  
   
 
    
    | 文档 |  
    Good |  
    Good |  
    一般 |  
    较差(组织不好,导航不正常且缺少文档) |  
    一般 |  
    Good |  
   
 
   
 
 
  使用场景
 
  
   
    
    | 百分比 |  
    场景 |  
   
 
   
   
    
    | 32% |  
    Web and API serving |  
   
 
    
    | 21% |  
    Data Processing, e.g., batch ETL (database Extract, Transform, and Load) |  
   
 
    
    | 17% |  
    Integrating 3rd Party Services |  
   
 
    
    | 16% |  
    Internal tooling |  
   
 
    
    | 8% |  
    Chat bots e.g., Alexa Skills (SDK for Alexa AI Assistant) |  
   
 
    
    | 6% |  
    Internet of Things |  
   
 
   
 
 
  架构
 
 以AWS为例
 
 
  两条支持异构硬件的路径
 
  
  - Serverless 包含多种实例类型,不同的硬件使用不同的价格
  
  - 提供商自动选择基于语言的加速器和DSA(Domain Specific Architecture),比如GPU硬件用于CUDA代码,TPU硬件用于TensorFlow代码(对于python或者js等高级语言,软硬件co-design提供language specific 处理器; 对于编译型语言,编译器应该建议使用何种硬件架构)
  
 
 
  当前技术局限
 
  
   
    
    | 场景 |  
    局限 |  
   
 
   
   
    
    | 实时视频压缩 |  
    函数间数据传递太慢 |  
   
 
    
    | MapReduce |  
    对象存储的时延和IOPS |  
   
 
    
    | 数据库(Serverless SQLite) |  
    缺少共享内存 |  
   
 
   
 
 
  挑战
 
  
  - 计算抽象(屏蔽计算资源,解决数据依赖)
  
  - 系统使能(函数状态的高速存储,函数间高速信令,函数极速启动)
  
  - 安全性 (应用级隔离,分布式安全)
  
  - 适应性 (异构硬件使能,微服务演进)
  
  - 成本不可以预测: 需要提供成本预测能力
  
  - 容易产生Vendor lock-in: 需要提供API标准规范,类似POSIX为操作系统做的事情,Google的Knative project在向这个方向努力
  
 
 
  预测
 
 Serverless将成为云时代默认的计算范式,基于Serverless的应用将激增, on-promises应用由于监管约束和数据治理规则将长期存在,但是随着时间的推移会逐渐减少
 
  
 
         
        
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                
cloudbbs@huaweicloud.com
                 
            
        
        
        
        
        
        
评论(0)