社区/文章分享/云开发技术企业级的一些玩法和探索——以深圳机场旅客出行服务项目为例

云开发技术企业级的一些玩法和探索——以深圳机场旅客出行服务项目为例

11 月 29 日,腾讯云与微信小程序团队联合举办的第二届小程序·云开发技术峰会在北京举行,在会上有众多来自不同行业,不同实践者的案例分享,讲述了各自与云开发的故事……

每一个准确把握技术浪潮的人,都是时代的幸运儿。

本篇课程,给大家分享一个企业级的项目——深圳机场旅客出行项目,在小程序云开发技术上的一些玩法和运用。

整体介绍

深圳机场旅客出行服务项目是我们腾讯云中标深圳机场的一个项目,大概过亿,每年旅客人次数大概 5000 万。

这个分享的主要目的,就是希望给大家起到抛砖引玉的作用,开拓思维,帮助大家可以挖掘云开发技术的更多玩法。

首先先来看一下深圳机场项目的整体架构:

从这个架构上可以看出,整个机场项目是有三层架构的:第一层是 C 端,第二层是应用层,第三层是后台。而运营开发技术其实自始至终贯穿在整个项目的应用层。

其实这样的架构一切目的主要就是为了满足企业级开发的诉求,比如说收拢逻辑、快速运营(运营自闭环)、安全可靠、分工清晰。

为了让大家对架构有更好的理解,从下图中可以看出,整个架构是三层,而整个应用层是架构在云开发基础上的。

应用层主要是做运营、流量保护、脱敏以及业务组装等,后台主要是做协议转发和固化逻辑。

场景分享

从开发到上线、再到运营、问题排查、后续监控,其实都是完备的工具链的建设,而云开发技术在整个链条建设过程中充当的是什么样的角色?我主要选几个重要的场景给大家分享。

场景 1:性能建设

目前我做了两套的缓存机制,一套本地缓存,一套是云端缓存。本地缓存机制主要是通过请求云函数,返回时间戳,来判断它是否过期,云端缓存主要是通过 C 端传递过来的 Tag 标记,以云业务函数中的 Tag 标记来判断是否缓存。

其实整个流程就是,每次访问 C 端会去云函数拉一个时间戳和 Tag 值,每次请求都会带上 Tag 标记,Tag 标记就和云函数的标记进行对比。

目前整个云函数如果是一些通用的缓存,是用云函数自身的内存来存储,如果有一些特色的量比较大的就是用 redis 进行缓存。这个缓存好像很简单,但其实整个缓存的穿透以及缓存的雪崩都有一些额外的异常处理。

场景 2:日志建设

我们当前完全使用的是云开发提供的日志存储方式,以前的做法是需要我们自己建立一个完整的日志系统,但用云开发比较节省能力,可以看到,我们做日志存储的时候目前就是用云开发提供的高级日志接口打印日志,这个是日志接口的代码。

以下是我对业务层收拢日志打印的调用业务逻辑,就是把云函数的日志与小程序的日志和调用服务的日志全部收拢起来。

下图所示是云开发控制台上对日志进行查询,目前云开发日志支持多种查询方式:全文检索、键值检索、模糊关键字检索等等。其实整个日志背后还有一套更加完备的监控和体系。

场景 3:可靠性和稳定性建设

作为一个企业级项目,当然可靠性、稳定性建设是很广的讲法,目前我只是挑了一个点,因为项目比较大,有很多开发者来参与协作开发。

但整个协作开发中如何来保证发布流程不要把测网代码发到现网,为了避免这种情况我创建了三个环境:一个代表测试环境,一个代表预发环境,一个代表现网环境。

这三个环境小程序里面又是如何区分的呢?其实主要是在小程序里面有一个下斜杠 config,这个就是区分核心关键字,这样就避免了每次发盘的时候都要不断的去改善环境,以防把本来测试的代码加到现网去。

场景 4:多端建设

作为一个企业级项目,它面向的群体用户是非常多样的,所以多端支持也是必然的诉求,目前深圳机场 APP 使用的是 Flutter 技术,C 端和小程序端他们应用层,所以存在 Flutter 怎么连接应用层的函数的,目前应用层提供了 Flutter—SDK,在官网是可以查得到的。

目前深圳机场项目有 APP、小程序、H5。

没有银弹

世界上没有银弹,虽然云开发技术在我们搭建整个企业级链条上提供了非常强力的支持,但是有技术的地方就有坑,而我们要做的就是趋利避害。

云函数滥用

我们在项目开发过程中,随着需求的增长和不断的迭代,以及不是很了解项目背景的开发人员加入后产生的问题,就是云函数乱用的问题。因为我们现在创建云函数成本很低,导致云函数越来越多,也被重复开发,有点混乱。

而对于混乱的问题我做了一个云函数路由分发,下面又有一个动作,一个云函数代表一个业务的功能块,一个动作代表一个 C 端的请求,把公共能力也封装成公共云函数,就是复用一下那个能力,比如像后台的 GRPT 请求、HTTP 请求,用这个云函数做这个事情,云函数路由分发我还申请了一个专利。这样做的目的,为了解决云函数混用,让大家写面向 C 端 API 的时候有一个规范和标准。

日志不规范

在开发过程中还有一个问题,因为现在是用云开发来打印日志,使用的成本较低,导致大家随便就在云函数里打印个日志,导致日志非常混乱,排查问题的时候会发现根本不知道哪条日志是属于我的。

针对于这种情况我把所有 C 端以及服务端请求的用户行为全部统一成一个自建模型,全部日志遵循这个模型来建模,这样日志和上报都成为了标准的格式化数据,方便后续做一系列的分析以及告警和问题排查。这个模型里面万物皆事件。

业务框架 wCore

这些是基于业务痛点解决的一些问题,其实我写了一个业务框架叫做 wCore,大家可以扫这个地址,就可以看到 wCore 的使用方式,当然目前还属于“毛坯房”的阶段, 并不是很完善,后续我会开发出来,期待大家一起完善它。

目前这个业务框架使用在我们深圳机场项目、川航项目、深圳地铁的项目。

作者简介:龙建军,腾讯云高级应用开发工程师

本文编辑自云开发峰会现场讲稿,有些文字进行了书面化处理,并匹配结合现场 PPT

如果你对内容感兴趣,可以点击阅读原文获取回放有关材料

产品介绍

云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务,包含计算、存储、托管等 serverless 化能力,可用于云端一体化开发多种端应用(小程序,公众号,Web 应用,Flutter 客户端等),帮助开发者统一构建和管理后端服务和云资源,避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
开通云开发:https://console.cloud.tencent.com/tcb?tdl_anchor=techsite
产品文档:https://cloud.tencent.com/product/tcb?from=12763
技术文档:https://cloudbase.net?from=10004
技术交流加 Q 群:601134960
最新资讯关注微信公众号【腾讯云云开发】