广告系统,是与产品并驾齐驱的,也是产品商业化的必要条件,每个人都有在使用产品过程中或多或少见到过广告,那么这些广告是如何产生,如何展现到用户面前的呢?下面咱们就来说说广告系统的设计。
一个常规的广告系统,从框架来说应该包含以下几个基本模块:
a、客户端(你看到广告的位置)
b、广告服务器(含第三方,和客户端交互广告数据)
c、广告编辑后台(配置广告素材的地方)
d、日志服务器(存放广告日志信息的地方,包含查询后台)
1、客户端
客户端主要是用户看到广告的位置,也是唯一一个与用户有交互的模块,主要包含以下几个元素。
1.1 位置:开机页、首页顶部、侧边栏、详情页底部等
1.2 类型:弹窗、推送、信息流、轮播图、banner等
1.3 交互:自动消失、手动关闭、点击跳转等
1.4 素材:文本、静态图片、动画、音频、视频等
1.5 时机:在什么时候出现,由什么行为触发等
1.6 频次:长期展示、不定期出现等
2、广告服务器
这个模块主要是由技术主导,性能为最重要指标。主要是逻辑判断处理,以及跟客户端进行数据交互。
2.1 广告服务器:主要由http请求、接口、redis、数据库等组成,一般由客户端向服务器发起请求(也有保持长连接,服务端进行Push的形式进行),服务端根据请求中的参数(比如uid、IMEI、地域等),通过接口返回对应的广告数据。
2.2 第三方广告服务(API/SDK):按字面意思,就是直接上第三方获取广告数据,分为API(第三方提供定义好的接口规则,直接传递参数进行获取数据即可,由客户端或者服务端对接)、SDK(第三方提供一套完整解决方案,需要嵌入客户端,由客户端直接对接)两种方式,前者优点是相对可控,且无需发版,进度快;后者更依赖于第三方服务,需要客户端发版覆盖,进度稍慢,但开发量较小。
3、广告编辑后台
该模块主要是用于运营编辑去配置所需要的广告素材,以及投放条件,并将数据录入到数据库。(这里主要说和业务有关的东西,比如一般后台的用户管理、菜单管理之类的不做说明)
3.1 广告位:对应客户端展示的广告位
3.2 广告素材:文本、静态图片、动画、音频、视频等
3.3 落地页:用户点击广告后跳转的类型,比如H5还是原生的某个页面
3.4 投放条件:人口属性(性别、年龄等)、设备属性(地域、机型等)、应用属性(某个版本、某个渠道等)、标签属性(游戏用户、金融用户等)、用户属性(沉默、高频用户等),其中设备、应用属性都是直采且采样率极高,其他部分属性均需要进一步处理才能获得,属于用户画像方向的工作,这里暂不做详述
3.5 投放方式:CPT(按天起止)、CPM(按曝光起止)、CPC(按点击起止)等,本身这个指的是结算方式,但是用于广告投放配置也可
3.6 生效时间:广告配置的生效时间点,一般会在凌晨进行更新(压力小),但是对于比如电商秒杀活动之类的需要做到更即时。
3.7 统计ID:一般来说每条广告都会有唯一的统计ID,作为日志统计的标识,便于数据监控及优化
4、日志服务器(包含查询后台)
该模块主要存放客户端或服务端的日志,一般存放原始日志或者进行部分预处理,但是原日志数据量过大,需要定时备份、删除老旧的日志文件。
4.1 日志服务:存放、预处理日志
4.2 查询方式:一般按照需要的查询条件(时间段、统计ID、应用参数等)进行数据输出
4.3 可视化界面:针对需要长期监控的数据,需要查询后台支持图表的形式输出
4.4 日报周报:按照预先定义好的数据查询条件,进行按天、按周输出(一般以邮件形式进行)
以上是广告系统设计的概述,简单介绍了一下广告系统搭建的框架以及基本元素例子。其实在实际工作中,每个模块都是需要人力去钻研去优化的,有时间的话,会不定期更新每个模块的详细运作方式以及实战优化策略。