导读:在移动互联网迅猛发展的今天,用户分层化、标签化趋势愈加明显。各行各业都需要去调研用户行为做数据分析,问卷调研变成了一个越来越普遍的媒介。本文将结合网易云商问卷调研,分享问卷技术架构的设计与实践。
文|朱陈杰
网易云商资深服务端开发工程师
前言
问卷系统作为媒介,往往在被调查者与研究人员之间提供了有利帮助。随着时间的推移,客户体验已成为企业竞争的焦点。无论是作答者还是问卷设计者都对问卷系统提出了越来越高的要求,总结如下:
从“千人一面”到“千人千面”,顾客追求个性化、定制化的体验
题型素材要求更加丰富,满足客户日新月异的调研需求
定制化功能需求越来越多,如何降低系统耦合并能保障快速交付是一个难题
更流畅的体验、高质量的回收,以上都对问卷系统的处理能力提出了更高的要求
... ...
这些在我看来,既是挑战,更是机会。
聊聊设计
通过三步简单概述问卷业务的流程:
第一步编程人员制作完问卷,进行目标人群投放
第二步 C 端用户访问问卷,进行答题
最后,企业在云商平台查看回收数据并进行分析。
如下图,是问卷整体的架构设计。
接下来,笔者将从编程侧、答题侧、质量控制等几个方面的设计总结,进行阐述。
编程篇
问卷的编程引擎设计是至关重要的一环。前期我们对业务的梳理,模型的抽象,设计了一套适合问卷的领域模型,使得我们找到了快速支撑新题型来满足业务的快速发展。一份完整的问卷就好比一个酷炫的网站页面,需要包括 Html 的基本元素比如颜色、标题、背景,问卷题目信息就好比网站内容,逻辑关系就像是页面上点击的一个个按钮,不同的按钮能跳转到不同的目的地。领域模型设计如下图。
通过上图领域能力模型的抽象,网易云商得出了一套可插拔的问卷架构设计。当我们需要支撑业务新题型开发的时候,可以将上述基础元素、题目和逻辑进行组合、编排,实现单元化管控。无需担心新题型对历史题目的兼容,更不需要对逻辑与逻辑之间硬编码,业务开发把重点放在新题型涉及的业务逻辑上即可,由此可以实现快速迭代上线。
除此以外,问卷单独抽离了 DSL(自定义编程)模块,其基本思想是“求专不求全”。支持更丰富的前置条件判断,比如四则运算、逻辑运算;支持外链带条件参数,做前置解析,快速融合到整个问卷系统。界面操作部分截图如下。
自定义编程模块的上线,不仅仅是解决问卷复杂度的问题,更是给客户提供了灵活的编程平台,能快速支撑不同客户差异化、定制化的需求。因此,编程侧的划分边界也愈加的清晰。
答题篇
在答题访问侧,我将通过前端页面访问、数据回收、如何存储的以及最终怎么呈现给客户的这几个方面来聊聊我们的设计和实现。
首先,系统通过将问卷编程侧数据打包加工处理,上传到 Nos 云存储(Netease Object Storage)。当用户点击链接,我们通过将前端资源和问卷结构数据动态渲染,实时展现给用户问卷进行答题。用户在问卷答题过程中,我们在回收服务中进行多重校验,比如设置一些常规的校验比如答题时长、访问的 IP 不能重复,然后进行答题过程中的实时检测判断用户在答题过程中是否是真人行为,最终把符合客户要求的数据落入到系统。如下图,是问卷从答题到数据落库展示的整体设计。
在应用层之外,答题服务端的数据层也是非常重要的部分,在存储介质方面,考虑到企业需要检索答题信息以及查看答题的分布,技术选型上我们首选 Druid。Druid 在 OLAP 查询方面以及数据写入、数据查询性能方面都有很好的表现,适合在各种逻辑关系题目组合下做聚合查询分析。
另外,问卷业务涉及大量答题明细数据的写入和读取。我们选用 ElasticSearch 作为存储和搜索引擎,通过对问卷加以时间为维度的索引分区,均衡了问卷数据存储,同时提升了搜索性能。
问卷采用 SaaS 产品中经典的池模式,在这种模式下,租户依靠共享、可扩展的基础设施来实现规模经济、可管理性、敏捷性等目标。但在这种模式下也会遇到一些问题,比如说:部分客户占据着大资源,从而对系统的其他用户造成不利影响。最终结果可能是一个用户降低了另一个用户的体验。那么网易云商的问卷是如何突破这层困难的,系统整体架构围绕池模式且能支持筒仓模式,能为企业独家定制,比如提供个性化的域名访问,单独的索引做数据存储,单独的消息服务等等,旨在解决企业的真实需求。
质量篇
云商问卷目前在市场中一直占比较高,因为云商问卷样本人群覆盖率高、回收快且回收质量优。
设想一下,如果你是企业经营者,答题者在极短的时间内就答完了所有题目,选完了所有的 ABCD,可想而知,它对企业来说就是一份无效样本,并没有什么实际价值。在问卷这个业务下,在我看来“降本增效”特别重要。如何提升回收的质量,不仅是对系统提出的要求,更是对企业和客户负责!
首先,回收侧业务是相对重逻辑的部分,问卷在回收侧设置会添加规则。比如对答题时长有要求,答题访问的 IP 有限制,答题次数有上限等。因此提炼出一套易用的规则引擎是必须的,支持企业个性化配置。开发者更多的重点放在对规则的定义和实现上即可。比如说,问卷可以设置配额规则和甄别规则,设置“陷阱题”,明确 Out 哪些不是我的目标群体。问卷投放过程中,在执行概况一栏可以查看当前问卷的回收进度和质量状况。企业在投放过程中可动态调整比例,确保样本快速地回收。
其次,云商问卷调研提供内容安全、反作弊等能力。接入专业的网易易盾内容检测服务,提供专业的行为验证码、内容识别、反作弊这些能力。通过设备、用户行为、用户账号这三个维度来辅助检测用户的异常,保证用户答题的真实性。比如,问卷识别使用代码程序回答问题,对非真人用户答题的行为进行监测。通过设备维度检测,如信息篡改、模拟器、Root/越狱、多开器、云真机等多方面进行实时监测;另外实时检测答题用户异常行为,如异常时间登录、地理位置异常、高频异常、批量注册、暴力破解、撞库等,可以识别一个用户同一个设备同时打开多份问卷,同时答题等异常行为;同时,在账号维度能识别出黑卡、改机工具、代理 IP 等,防止营销类场景下黑产领取红包。
平台检测的行为数据分析如图。
再者,网易云商问卷提供同质答案、乱答检测等能力。问卷借助云商 AI 算法能力,对文本类题型进行实时有效性检测,提升样本有效性。在用户答题过程中,对问卷题干进行提炼,并进行语义分析,通过算法识别,识别这些答案是否满足答题人想要的。如果存在过于简单、文不对题、乱答等情况,会反馈给答题者一些友好提示,目的是提醒答题者认真答题。
比如填空题,问卷题目是“最近经常在什么电商平台购物”,答案回答是:“哈哈哈”、“不买”、“还行吧”等等。这些答案,在后期人工介入,核对有效样本步骤时就会发现是无效回答,往往被标记为无效样本。那么,通过算法的实时监测,给予用户一定的认真答题提示。不仅能提升样本质量,降低无效样本的投放成本,还可以大大降低人工对样本核查的成本。
数据分析
问卷答题元数据是作为问卷系统分析的重要支撑,作为问卷数据分析的闭环,答题数据至关重要,问卷从用户维度、题目维度、组合分析等方面设置查询和导出功能。云商问卷在设计之初就考虑用户规模和体量,以均衡时间为准则,按照月维度为创建索引规则,通过分库分表的设计将底层元数据进行良好的存储管理。对存储的容量和查询能力提供了支撑,另外还能支撑大用户大体量问卷单索引,避免了 Saas 池模式下因嘈杂邻居而引起的相互干扰。
问卷数据架构设计如图。
问卷由于题目数量不固定,外加大量的答题数据,且经常使用聚合、分组、排序等分析查询功能,选用一款在线分析处理的 OLAP(Online Analytical Processing)数据存储工具十分有必要。问卷在技术选型上选用 Apache Druid 作为实时分析的数据存储系统,存储海量答题数据。答案数据存储按照答题人信息、回答的题目、答题的内容作为基础元数据落库,简单总结就是“谁在什么时候答了哪份问卷,答了什么题,选了哪些选项”都能一目了然。
Druid 包含基于时间维度数据的存储服务,并且任何一行数据都是历史真实发生的事件。不论是对完成问卷还是过程问卷都能提供查询,并且 Druid 是列式存储格式,由于每个企业的问卷题目数量是不固定的,列式存储支持十分友好,同时分析型数据库支持大规模的并行聚合查询。
总结
问卷整体业务及架构设计如上文内容所述,问卷虽然是连接企业和消费者的一个工具,但是 ToB 行业在 SaaS 架构演进过程中还有很多内容要去探索和实现。如在租户分层,场景分层上做更细的领域区分,分层模式可以直接影响 SaaS 解决方案的成本、运营、管理和可靠性。因此,在技术上也有很多要去尝试和探索,这也推动我们不断地进行优化迭代,为企业持续赋能,帮助客户内生成长。
作者简介
朱陈杰,网易云商资深服务端开发工程师。目前负责网易云商调研业务开发工作,致力于云商业务、内部中间件建设。
相关阅读推荐