天猫精灵智能应用云开发揭秘

在上一篇 《如何玩转天猫精灵智能应用云开发》 一文中,我们主要给大家介绍了如何使用天猫精灵云开发模式快速开发一个智能应用。本文将继续给您介绍云开发背后相关的技术概念、背景以及如何在智能应用开放平台落地的。

背景

当前外部开发者针对智能应用的开发与开放平台之间的连接较为松散,主要的方式还是webhook。同时对于中小开发者而言,启动成本过高,背后的技术栈和方案也比较随意,缺少一个一致的高水位保障,从而导致我们的运营同学在推广应用的时候不敢推,担心应用承受不住大量涌入的活动流量,影响活动效果。我们的开发者也需要临时扩容这些服务来应用对流量的高光时刻。因此我们推出了云端轻量Serverless化云开发平台, 帮助开发者聚焦于业务本身, 降低研发成本和准入门槛。

1. 什么是云开发?

云开发定义如下

云开发是一种软件编程方式, 主要包含了2个层面的云,首先开发方式是 云方式 ,  主要提供一种在线开发和协作的环境,确保在线连续设计、开发、集成、测试、交付等开发动作,并让客户、产品、管理乃至更多的人无中断体验产品的全生命过程,从而得到最充分、及时的交流和反馈,自驱动极限迭代开发过程。其次开发出来的软件是 运行在云上 的,具有弹性伸缩、分布式、幂等、高度可用性等云计算特点。—百度百科

云开发的背后离不开serverless,目前我们说的serverless常常指的是“无服务器架构”,它是一种软件系统架构思想和方法。无服务器架构并不代表你不需要服务器了,而是说对应用开发者而言,不再需要管理大部分跟服务器相关的事务,比如服务器选购、应用运行环境配置、负载均衡、日志搜集、系统监控等,这些事情统统交给serverless平台即可。应用开发者唯一需要做的就是编写应用代码,实现业务逻辑。目前一个Serverless架构的应用主要有两种形态,即FaaS和BaaS。

FaaS(Function-as-a-Service)

函数即服务,应用以函数的形式存在,主要运行在第三方云平台上。

FaaS是比微服务粒度更细的一种架构,开发者按照函数的粒度去拆分应用服务,然后按照云厂商的规则编写对应的函数代码并上传到云平台。函数计算会帮助开发者准备好计算资源,以弹性、可靠的方式运行代码,并提供日志查询、性能监控、报警等功能。借助于函数计算,我们可以快速构建任何类型的应用和服务,无需管理和运维。而且,我们只需要为代码实际运行所消耗的资源付费,代码未运行则不产生费用。

以下是阿里云函数计算工作的流程:

BaaS(Backend-as-a-Service) 定义

后端即服务,它主要是把数据库、对象存储、消息队列、日志服务等常用的服务组件进行封装,以API、SDK的形式对外提供服务。

然而独立的FaaS很多场景无法解决开发者的问题,因为函数的执行本身是无状态的,大多数的业务场景都会需要用到数据存储的能力,来为不同的用户提供不同的服务。因此为了解决这些问题,云厂商都会把自身的基础组件的能力封装成对应的BaaS服务,通过API、SDK等形式提供给开发者进行使用。即使是这样,对于开发者来说,还是有很多工作需要开发者完成。因此我们结合了天猫精灵智能应用的开发场景,与阿里云云开发团队合作共建了天猫精灵云开发平台。在平台中,我们提供了NodeJS、Java两种智能应用的解决方案,并集成了语音技能SDK,BaaS SDK,让开发者聚焦于业务开发本身,真正的做到一站式的智能应用开发。

2. 传统开发模式与云开发模式

2.1 传统开发模式

传统开发模式的开发与调用流程:

传统开发模式需要开发者不仅仅开发业务代码,还需要管理服务器等资源,并且提倡通过DevOPS的方式来提升软件开发效率,缩短软件的交付周期。因此传统开发模式带来的缺陷显而易见:

  1. 开发门槛高,想要开发一个智能应用需要准备好基础设施与开发环境。

  1. 研发成本高,基础设施的搭建、人员的投入都是成本。

  2. 运维成本高,无法精确评估的流量导致只能充分预备。

2.2 云开发模式

云开发模式的开发与调用的流程:

区别与传统的开发模式,开发者不再需要准备基础设施与开发环境,云开发模式提供了一站式的智能应用开发、测试、部署、上架的解决方案,并且开发者将直接聚焦于业务本身,从繁琐的运维关注中脱身而出。云开发模式带来的好处:

  1. 开发门槛低,无需关注基础设施和开发环境。

  1. 脱离繁琐运维工作,聚焦核心业务开发。

  2. 节约资源投入成本,按量收费。

3. 云开发的整体架构与实现

3.1 云开发平台整体架构

简单介绍各个平台之间的职责划分:

  • 智能应用开放平台

    智能应用开放平台主要提供了智能应用的全生命周期的管理能力,从开发者的入驻认证、语音模型创建、在线测试、应用提交审核都是在平台中完成的。因此所有想要开发智能应用的同学一定要熟悉语音交互模型的各种概念,然后在平台上完成这些交互模型的配置

  • 云开发平台

    云开发平台是天猫精灵专门针对Serverless架构提供的一种云开发工具平台。平台提供了包括日志监控、FaaS管理、CloudeIDE等功能,满足开发者日常开发的一些需求。除此之外,我们还提供了智能应用解决方案,其主要提供了Java、NodeJS的运行环境、脚手架代码,并且集成了语音技能SDK和BaaS SDK。真正的帮助开发者提升智能应用开发的体验。

  • 云原生底座

    云原生底座的底座主要依托于阿里集团和阿里云的Serverless资源池,通过开放API服务能力层供上层进行调度管理。

3.2 核心技术点

  • 技能与FaaS函数如何通信?

    相信开发者比较好奇的是为什么我们没有做任何绑定配置就可以和faas函数直接进行通信,其实背后的流程如下:

    当开发者开通云开发的时候,我们会给开通的技能创建一个对应二级域名,并把该技能与域名的关系存储到DB, 接着我们会把技能的信息透传给云平台换取一个AppCode,当我们进入云平台时,会把AppCode传给云平台进行认证,认证通过后,云平台会根据AppCode自动创建技能对应的函数。当开发者进行函数部署时,云平台把函数注册到阿里云API网关上,阿里云API网关会为每一个函数产生一个请求地址,部署成功后,云平台会把函数的信息透传给智能应用开放平台,开放平台会对回传对函数信息进行认证,如果认证通过后会把技能对应的二级域名CNAME到API网关的地址上。至此,我们只需要访问技能的二级域名即可和函数计算进行通信。

  • 智能应用场景下的解决方案如何初始化?

    一个解决方案=OAM描述+代码模板, 这里我们首先会完成对应语言的代码脚手架开发并上传到codehub,并且预定义好整个解决方案的OAM描述文件,当开发者选择对应的解决方案后,云平台会解析OAM文件初始化对应的解决方案。

  • OAM描述文件示例

    apiVersion: core.oam.dev/v1alpha1
    kind: Component
    metadata:
      name: tianmaojinglin-SDK
      annotations:
        version: v1.0.0
        description: >
          天猫精灵SDK相关信息.
    spec:
      workloadType: developer-cloud.aliyun.com/v1alpha1.SDK
      workloadSettings:
        storageAddress: https://xxx.aliyunoss.com/sdk.tar.gz
        language: JavaScript

4. 结语

当我们回顾云计算的发展历程,会看到基础架构经历了从物理机到虚拟机,从虚拟机再到容器的演进过程。在这大势之下,应用架构也在同步演进,从单体过渡到多层,再到当下的微服务。在变化的背后,有一股持续的动力,它来自于三个不变的追求:提高资源利用率,优化开发运维体验,以及更好地支持业务发展。

云开发模式为开发者提供了极大的便利,让开发者真正聚焦于业务开发本身,不在需要关注服务器运维等复杂繁琐的操作。智能应用开放平台也将继续优化云开发平台的基础能力建设,进一步降低开发者的使用门槛,让开发者可以更加快速的完成一个智能应用的开发部署。

其它精选文章:

扫码或长按关注微信公众号: 天猫精灵技术。

讲述天猫精灵背后的技术

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章