搭建一个广告系统,有几点需要在心里明确清楚。这几点包括业务、策略、定制化与基础设施。业务需求会决定广告系统的一切;在需求明确的基础上,策略是广告系统自身的核心;对于广告而言,不可避免地会遇到定制化需求,产品经理要在需求和系统两个层面处理这种定制化;最后,同样重要的是广告系统的基础设施。
业务决定一切
广告系统的定位和目的,决定了这个系统无论在功能上如何布局、交互上如何处理、策略上如何考虑,业务都是必须遵循的最为核心的一点。
原因有两点。其一,当广告业务需求出现时,意味着系统中没有的功能可能要进行开发,系统中已有的功能可能要进行剔除或者修改,从而来满足业务方的需求,这与其他所有的互联网产品并无二致。其二,由于广告系统本身倾向的 toB 性质,这种对业务方的依赖、承诺和服务,相较于 C 端产品来说,更加明确和强烈。
策略是核心
广告系统面向的用户并不单一,至少会包括两类人。对内,是我们的用户可能是运营等其他岗位的系统操作者,也可能直接是广告主。对外,在受众层面上,大面积的广告受众也是我们的用户。广告系统的核心体验,至少需要在操作流程和投放策略上对这两类用户负责。
操作流程
在操作流程上,作为一种后台类产品,对于系统使用者而言,广告系统操作的明确性、良好的预期和流程的稳健程度,比起界面呈现效果,是更加核心的用户体验。除了易读的系统使用说明,广告系统最应该具备的,应该是易上手、无歧义的操作风格。因为广告系统的开发团队往往不会是广告主,但广告主才是系统真正的操作人员。
这就要求产品经理在系统的设计上,从一开始就应该做好明确的用户调研。在开发广告系统的过程中,这一点自己做的并不够好,导致几个模块上线后,运营方反复询问应该如何使用,甚至会出现误操作的情况。这是广告系统产品经理应该注意和避免的,切忌想当然地进行功能设计,对方的使用习惯,才是更需要考虑的标准。
投放策略
广告系统中的操作,会组合成广告的投放策略,决定了广告在受众端的展示效果。这里所指的投放策略,是指一个广告会展示给哪些年龄、性别、地区、兴趣、设备上的用户。
很显然,策略越复杂,涵盖的可能性越多,在开发和测试上的复杂度就越高。在制定策略和评审开发难度的初期,可能面对来自各方的诘问:“为什么要这么复杂?”、“我认为不会有这方面的需求”……这些时候,作为系统的策划者,要合理听取和评估这些质问和意见。
如果是硬性的业务需求,那么不能因为技术难度而让步,反之,还要更进一步地协助开发处理策略逻辑复杂度的问题。一个实用的方法是,对策略进行归一化处理。把能够合并的情况合并在一起,结合思维导图做架构设计,通过不同优先级的有层次的组合,把所有需要的情况囊括进去。这不仅可以降低复杂度,提高系统逻辑的清晰程度,方便测试,也利于之后的系统功能扩展,好处良多。
但对于一些极其特殊的需求(如不可复用的活动性需求),产品经理不能一味向业务方让步,能够进入系统层面的,通常来讲,都要求功能能够复用,这样才能避免多次反复低效开发。因此,当遇到这种特殊情况,就可以对具体情况做分析,做特殊处理,满足这种 “只用一次” 的情况,例如临时下发一条特殊处理的数据等。
不可避免的定制化与抗击定制化
广告的定制化,即是由复杂的投放策略所支撑起来的,满足活动定制化需求
广告不可避免地需要处理非常多定制化的情况。这些要求可能来自用户,从产品的角度考虑不能让用户承受过多的骚扰;可能来自运营,运营希望在一次投放中尽可能地骚扰用户并提高转化;可能来自老板,某个广告被老板看到觉得效果不好,那么也是需要立即改变的。
这几个情况的存在,意味着广告的展示方式,是多方需求的结合与博弈。这种高度复杂,高度变化、定制化的需求,对系统提出了挑战。对一个已经成型的广告而言,突然加入的特性,且被告知不可复用,往往导致系统面临二难的困境:要在原模块上修改,由于其不可复用,意味着低回报的开发成本,甚至可能对系统的稳定性形成威胁,或影响现有的广告效果;如果另外开发一个模块,同样由于其过分的定制,可能上线之后用过一次,就永不再使用。
作为系统,对业务尽量不要做出干扰,而应该尽可能地兼顾各方需求。
因此,需要用系统的稳定性和可扩展性来抗击定制化的需求。系统在必要的时候,应该重构。在一开始的规划中,就尽可能周延地想好已有的情况,及往后维护可能出现的情况。合理设置字段和数据结构,就有可能在面临定制化需求的情况下,仅仅用扩展一个字段的方式,就满足需求。
基础设施
广告系统的基础设置,至少需要包括权限控制、消息推送、数据统计。
权限控制
权限控制是每个后台系统必备的模块。对于广告而言,操作主要包括广告的上架、下架、编辑、删除、取消、送审等。控制这些操作是广告系统权限控制的主要工作。对于常规操作,可以结合 RBAC 做用户动作控制,对于审核操作,需要定义好动作的发生流程与作用对象,如什么操作触发审核、由谁送审、给谁审核、如何通知审核人到位、在什么设备允许如何通过或拒绝、审核过后系统会发生什么样的变动、审核后如何反过来告知送审人等。
消息推送
消息推送起着上传下达周知四方的作用,系统发生的任何变动,尤其是类似广告管理这种业务系统,涉及多方,应该把情况周知到位。这些内容至少应该包含:操作、操作时间、操作内容、操作人。信源从系统中由操作人产生,信道依据各个组织的具体情况来进行处理,例如就回环到本系统的消息中心,或者通过办公类IM推送到人/群组,总之,需要保证最后信宿明确收到系统变动通知。及时周知有一万个好处,通知不到位有一万个坏处,余不一一。
数据统计
对于广告来说,数据是用来评估和改进广告效果的最重要最直接的依据。与广告相关的数据指标可以在这张图中大体了解:
这一批指标,已经直接深入到了运营层面,其中,比较基础的指标包括:
CPM(Cost Per Mille) :展现成本,或者叫千人展现成本
CPC(Cost Per Click) 点击成本,即每产生一次点击所花费的成本
CPA(Cost Per Action):每行动成本。即按行动收费
对广告系统而言,如果要支撑精细化运营,这些数据的采集、处理和呈现都是需要做到的。但这同时也意味着,广告系统必须要包含另外一个重要的数据统计模块,这会显著影响系统建设的工期和复杂度。一个简单的处理方法是,在初期的广告系统中,接入这三个基础指标的统计,满足基本需求。在往后的系统规划上,需求大数据项目的支持和协助。在一个部门较为完善的中大型公司,这是比较现实的处理方式。
后记
做产品这一年来,可以说第一个独立进行了比较深入思考的模块,是广告系统。在没有人带,缺乏指导的情况下,野生地做起一套满足业务需求的广告管理系统,现在再回去看,满满地都是缺点。但是这个过程中,也许得到了一些积累吧。