本文是我阅读《产品经理必懂的技术那点事儿》的第四篇读书笔记。前三篇笔记见如下链接:
本书作者【唐韧】,由【中国工信出版集团】【电子工业出版社】联合出版。
接下来是正文部分,本篇介绍了服务端技术及数据相关的知识。
6.产品经理学服务端技术
从技术角度,一个产品是由客户端和服务端构成的,本章我们就介绍服务端的一些基础技术知识。对应客户端,服务端通常也叫服务器端,产品经理在设计产品时,虽然设计的更多是客户端产品,但两个客户端之间的信息互动和数据传输却是通过服务端完成的。服务端起到了中间核心处理者的作用,它负责处理复杂的业务逻辑并对数据进行存储管理。
客户端与服务端借助网络进行数据传输,数据传输基于基本数据传输协议,定义数据传输的规则通常叫接口,客户端与服务端需要进行很多功能和数据的交互,也就会有很多个数据接口,每一个接口都处理一个功能逻辑。例如,使用微信发送一条消息给对方时,这条消息首先从客户端A发出,通过数据接口访问服务端,服务器处理后将这条消息推送给客户端B,B接收到消息后展示在界面上。
服务端起到了对所有客户端进行协调处理的角色,每时每刻都有很客户端访问服务端,如果产品用户量大而且活跃度高,服务端就会承受巨大的访问压力,像微信这样有着庞大用户体量和活跃度的产品,服务器的压力是非常大的,这就要对服务器进行扩容和各种优化,以此来支撑这么庞大的用户量和访问量。
基于这些内容,产品经理在设计产品时,可以对界面背后的一整套实现机制有个更全面的了解,尤其是在客户端与服务端进行数据交互的设计上,从数据结构设计层面去了解产品的实现机制,在与工程师沟通的过程中能从数据的角度讨论问题。另外,对于服务端整体架构有基本了解,知道服务器是什么,知道上线是怎么个流程,了解每一次产品发布的具体步骤,都能提高产品经理对技术产品的全局掌握能力。当某一个环节出问题时,产品经理也能成为问题的协调者和解决者,最终成为产品和团从的推动者。
常用服务端技术介绍:和客户端技术一样,服务端技术也分为多种类型,例如常用的服务端开发语言有PHP和Java等。另外,常用到Java语言的开发平台Java EE( Java Enterprise Edition)。PHP是一种脚本语言,可以用做网页开发。PHP有很多现成的框架可以使用,通过框架可以非常简单地实现很多功能。Java EE顾名思义,使用的开发语言是Java,JavaEE本身是一个开发框架平台,在这个框架上,可以实现企业级复杂系统的开发,也可以基于这个框架实现很多类型的服务端业务。
另外,现在使用比较多的Node. js也是一种服务端开发技术,使用JavaScript语言进行开发, Node. js能实现从网页前端到后端服务的全流程覆盖,是一种灵活性和扩展性都比较好的服务端技术。除了以上几种服务端技术外,还有以Python语言为主的服务端技术和以C#语言为主的ASP.NET等多种服务端技术,不管使用哪种服务端技术,通过这些技术实现在服务端完成的产品业务逻辑,接收来自客户端的请求,根据请求类型进行对应的逻辑处理,处理完成后将处理结果返回给客户端。一个完整的客户端与服务端交互流程就是客户端发起请求、服务端处理请求、服务端将处理结果返回客户端。
6.2 服务端的基本架构
服务端通常被叫作云端,也就是我们所说的云服务器,云服务器是指物理机房是托管在第三方,而不用自建机房。在有云服务之前,所有的互联网服务都需要自己建立机房,服务器和所有的网络设备都放在机房里。每个机房都由应用服务器、数据库服务器、交换机、网络端口和外网光缆构成。根据不同的机房规模,不同的服务器机房配置和架构略有差异,但其基本结构类似,常用的服务端基本架构如图下图所示。
当然,这是一个简化版的服务器架构图,实际生产中的架构图会根据具体的业务形态和技术架构有不同的架构方式。首先是从互联网接入,互联网的另一头实际上就是客户端,客户端通过互联网请求访问服务器,请求进来后首先经过负载均衡服务器,负载均衡服务器是用来处理大规模请求的服务器,通常对于一些访问量比较高的系统来说,负载均衡就显得尤为重要,负载均衡服务器的作用是将同时进来的大量访问请求根据应用服务器的忙碌程度进行动态调度,可以把负载均衡服务器理解成服务端的调度中心,它负责流量的动态分配,根据对应的应用服务器的负载情况,动态分配请求到不同的应用服务器(通常叫API服务器)。
如图上图所示,应用服务器下方对应的是数据库服务器,数据库服务器负责运行后端数据库,例如用户通过客户端访问某一个商品信息时,应用服务器会根据用户请求从数据库中查询商品信息并返回给客户端。数据库服务器负责运行系统数据库。一般情况下,会有多台数据库服务器同时运行,因为数据都是核心资产,为了保证系统数据的安全性,在多台数据库服务器上会存储同一份数据。
运维工程师负责对服务器的整体维护和优化,包括产品上线及配置各种服务器,对数据的备份及服务器的操作。运维是一个非常重要的保障职能,产品能无间断地24小时运转,应对突发情况或者动态调整服务器的配置,都依赖于运维工程师。
6.3 数据接口及结构
数据接口是指客户端与服务端进行数据传输和交互的数据协议,数据接口是一种数据交换的标准。例如,用户通过客户端的登录功能向服务端发起登录请求时,客户端将用户名和密码通过数据接口经网络传递给服务端,服务端判断处理完成后再将处理结果通过数据接口返回给客户端,客户端根据服务端返回的结果进行登录反馈处理。数据接口扮演的是信息传递者的角色,根据不同的产品功能,对应的数据接口也会有所不同。
数据接口的构成通常是“key- value”的形式,也就是键值对,键(key)代表某个数据字段所表达的意思,值( value)是这个数据字段的内容,例如,我们可以定义一个最简单的数据接口结构“{ username : ryan, password:123}”,在这个数据接口结构里,我们定义了两个字段,分别是代表用户名的“ username”和代表登录密码的对应这两个字段的值分别是“ryan”和“123”。
如上面的例子,我们在完成登录操作时,客户端就会通过这个数据接口将客户端输入的数据携带并通过网络服务端,服务端接收到后进行判断处理,处理完成后,服务端也会通过数据接一个内容给客户端,例如“{code:200, message:登录成功}”,客户端通过这个据口返回的内容进行判断,服务端返回登录成功,说明输入的用户名和密码正确,这时就允许用户进行登录操作,如果遇到用户不存在或者密码错误的情况,也会在数据接口里面返回,客户端会根据返回的内容进行相应的处理。
在实际应用中有两种常用的数据接口的结构,分别是JSON和XML,接下来我们就分别介绍这两种类型的数据接口结构。
6.3.1 JSON
JSON( Javascript Object Notation)是一种轻量级的数据交换格式,也是一种用来表示数据接口结构的形式。JSON结构灵活性高,可以进行丰富的数据结构表达,JSON结构易于理解和阅读,也便于计算机进行解析和表达,一个简单的JSON结构如下。
在上面这个简单的JSON结构里,我们通过键值对的方式表达了用户名和密码这两个数据项。JSON结构通常由一个大括号包裹,一个大括号包括的JSON结构叫作一个JSON对象,在一个JSON对象里面,通过“:”左右的内容构成一个键值对,左边的是键,右边的是值,键和值都由引号括起来,每个键值对之间用逗号进行分割。我们在讲数据结构时介绍了数组结构,同样在JSON里也可以表示数组结构,我们来看下面的例子。
在上面这个例子中,表达了张三具备三个球类运动的技能,所以在技能一项里,我们可以通过数组的形式表达,在“skill”后面我们通过中括号来表示数组,数组面的值通过逗号分开,数组的元素本身也可以是一个键值对或者是一个JSON对象。
6.3.2 XML
XML( Extensible Markup Language)的全称是可扩展标记语言,与JSON一样一种数据交换格式,它也可以用来进行简单的结构化文本数据的存储。XML的结构可以进行自定义,XML的基本元素是由一个一个的标签构成,每一个标签都由标签头和标签尾构成,内容放在标签头尾之间,例如“ ryan”就是一个完整的标签体,尖括号内是标签的名字,标签尾用“/”加在标签名之前表示。另外,与JSON类似,XML的标签元素也可以进行相互嵌套,标签内的值也可以是标签体。
这里放上一个XML结构的植物目录。http://www.runoob.com/try/xml/plant_catalog.xml
XML的结构体积比JSON大,而且阅读结构不如JSON清晰。所以,在大多数的生产开发中,使用JSON作为数据接口进行数据传输和交换的要多些。XML的优点在于应用领域非常广泛,例如,在Android开发中,界面布局文件就是通过XML结构实现的,很多服务器配置文件也都是通过XML结构实现的,在有些系统实现中,也通过XML表示数据接口进行数据传输,但现在的主流是使用JSON结构。
6.4 服务端与客户端的交互模型
在前面的章节中,我们介绍了服务端的整体架构和客户端与服务端交互的数据接口,在客户端与服务端交互的过程中,数据和信息通过网络进行传递,而传递的载体就是数据接口,数据接口的体现形式有JSON和XML,接下来我们通过下图所示来了解服务端与客户端的交互模型。
这个模型叫作请求响应( Request-Response)模型,这是互联网技术产品实现信息交互的一种数据交换模型,通过这个模型主要完成信息的发送、处理和响应。这个模型主要由三部分构成,分别是客户端、服务端和中间的互联网。
在这个模型中还包括了数据的流动。数据通过数据接口进行传输,首先由客户端发起功能请求,例如进行登录操作时,客户端通过数据接口传递用户名和密码数据,数据通过网络传递给服务器,服务器获取到请求后进行数据的解析和处理,然后将处理结果以请求响应的方式返回给客户端。服务端也会通过数据接口返回给客户端一个数据格式,最后一步就是客户端获取到服务端的请求响应,同样进行数据解析和处理后,再将结果通知给用户。
不管是网站还是APP,基本上涉及客户端与服务端的交互都是基于这种请求响应( Request-Response)模型,简单说就是一问一答,客户端问服务端,服务端接收后进行处理,并将处理结果回答给客户端。
6.5 服务器部署及运维
当我们开发完一个产品后需要将产品发布上线,上线后就可以提供给用户使用。这个“上线”其实就是把我们开发完成的系统部署到公网服务器上,公网就是公开网络,我们平时能使用到的产品服务都部署在公网上。
传统互联网时代,如果要自己开发一个产品,服务器的部署通常都需要自建机房,将服务器放在自己的机房里,机房的设施通常包括服务器、网络、交换机等,对于要求比较高的机房还需要配备备用电源和冷却系统,因为如果服务器压力过大会出现温度上升而导致服务器宕机或损坏。这种自建机房的方式往往成本较高,而且需要自行购买和配置机房硬件,后期的维护成本也比较大。不过现在有了新的选择,就是云服务。
我们可以租用云服务提供商的机房,然后将我们的服务端部署在云端,这样我们只需要按使用情况支付给云服务商一定的费用就可以正常使用了服务器部署完毕后,接下来就是长期的维护和调优过程,这个过程叫作运维,服务器运维工程师就是专门负责这一过程的。
服务器运维包括了发布新的服务,对服务器进行更新、维护,同时对于服务器进行整体监控,如果出现紧急情况需要及时处理。例如,突然遇到用户访问高峰期时,服务器处理能力不足,就需要运维人员及时扩大服务器带宽或者增加服务器数量来支撑高访问量。服务器的运行要求通常是24小时无间断的全天候运转,如果涉及服务器因为物理损坏需要更换时,通常都需要有备份或者临时服务器进行应急处理。如果因为系统维护或升级导致临时宕机,也需要有整套完善的恢复机制。所以,服务器运维是一个非常谨慎和重要的环节。
6.6 云服务器
云服务器是一个中央机房,由云服务商提供服务,使用方按照使用情况付费,下图所示为传统服务器与云服务的对比。
左边是传统的服务部署方式,自建机房的成本还是相当高的,一方面是硬件设备和外部条件的成本,另一方面是人力成本和持续维护的成本。高昂的成本对于一些小公司就显得非常高,对于大公司来说也是开销非常大的一块,为了解决这些问题,目前像亚马逊和阿里巴巴这样的公司,把自己多余的处理和服务能力开放出来,以租用和按使用情况付费的方式提供给其他公司或者组织使用。
使用云服务器的好处:首先,是省去了建立机房及购买服务器的成本,通过租用和按流量付费的标准来使用云服务提供商提供的服务器。其次,云服务提供商会有专人对服务器进行持续维护,而且如果服务器不够用只要进行在线配置,就可以很快完成对服务器的升级,非常方便快捷。使用云服务器还有一个非常大的好处就是非常强大的容灾能力,例如亚马逊的AWS就是非常强大的云服务提供商,它有一整套完善的服务确保服务使用者的运行安全和数据安全,而且对数据保护及服务器容灾也会有非常完善的保障机制。
云服务对于使用者来说更加轻量化而且简单易用,但本质上,云服务器其实也有自己的机房和硬件设备等整套完善措施,可以理解成一个集中的机房中心,将传统的每个产品厂商都有的机房集中到一个地方,进行统一维护和管理。使用者按照使用情况支付费用,这种方式也是移动互联网时代的特点,按需付费,一切以轻量化为目标。
7.产品经理学数据
7.1 什么是数据
互联网每天都会产生大量的数据,互联网里的数据是指我们在使用互联网产品时发生的行为所沉淀下来的结果。
例如,我们在电商网站上浏览商品进行购物时会产生商品浏览记录的数据,当我们完成商品购买时会产生购买记录数据。我们在使用微信进行沟通和发布朋友圈时也会产生大量的数据,这些数据都会被记录下来并且存储在数据库中。这些数据可以被用来进行分析,例如根据用户浏览商品的记录数据动态地给用户推荐相关的产品,还可以使用大量的数据分析和预测用户行为,这个过程我们称之为大数据。大数据的基础是数据本身,也就是说,必须先积累足够大的数据样本,然后基于这些样本进行具体的分析,从而产生有价值的数据分析结果。近年发展迅猛的出行类产品滴滴出行,从出租车发展到专车和快车,在解决人们高效出行的同时,也在调控着整个城市的交通网络。
滴滴出行对数据的运用:每一位乘客打车的订单数据都反映了乘客的出行轨迹,通过某一地区的订单密度数据可以反映这个地方的用车需求。滴滴可以利用这些数据进行平台上司机运力的调控。为此,滴滴向司机端推出了运力热点图的产品功能,通过颜色区分不同区域的用车需求量大小,需求量大的地方,运力热点图上显示的颜色就越深,司机通过运力热点图选择前往用车需求量大的地方就可以更快地接到用车订单,从而增加自己的收入。
数据是互联网时代最重要的资产,尤其是对于互联网公司。根据不同的数据类型,可以进行大样本的数据分析,数据分析结果可以转化为商业决策的依据,从而反向产生更大的商业价值。可以说,在互联网时代,数据是唯一也是最重要的资产。
7.2 数据分类及数据分析
我们每天使用互联网产品会产生大量的数据,这些数据记录了我们在互联网上通过产品发生的一切行为,这些大样本的数据本身也会反映出一些规律,通过对这些海量数据的分析,我们可以得出很多结论,通过这些结论可以指导商业策略和产品设计的调整。
大致来说,在互联网上产生的数据主要分结构化数据和非结构化数据两类。简单地说,结构化数据就是按照固定的格式和结构存储的数据,好比我们按照格子一个个存放数据;非结构化数据是对一些零散型数据的集中管理,好比我们在一个格子里放上很多零散的东西。这两种数据分类基本囊括了互联网上产生的所有数据,针对这两类数据的分析也都可以挖掘出对应的价值。例如,通过分析结构化数据我们们可以预测数据走势,提前预判风险,通过分析非结构化数据可以进行一些行为分析和相关推荐。接下来,我们就分别了解结构化数据和非结构化数据,以及数据分析的具体内容。
7.2.1结构化数据
结构化数据是按照一定的数据规则存储的数据。例如,电商产品里的结构化商品数据,这些商品数据按照严格的商品分类和商品属性进行分类存储,手机归属在电子产品分类下,每个手机又具备颜色和内存规格等基本参数。按照这种结构存储的数据可以被有效地进行分类管理,基于这种结构化的存储形式,我可以按照某一维度对数据进行分析和处理。
结构化数据存储就好比一个标准的大型图书馆,这个图书馆里的图书就是数据,每一本书是按照固定编号和分类进行存放和管理的。我们要调取哪一本书,只需要按照固定编号进行查询检索,而且我们可以对图书馆的书籍进行不同维度的数据检索分析,例如按照出版年份、出版社、书目类型等。结构化数据能大大提高数据存储的规范性和可分析能力,我们平时所说的大数据其实有很大一部分都是结构化数据,互联网中存储了大量的结构化数据,将现实世界的知识、内容、业务都沉淀在了数据库中。
如果后期需要对产品中的数据进行整体分析,那么在设计阶段就需要根据业务特点对数据结构的定义进行明确分类。举个例子,在医疗产品里面,很多检查报告都是以拍照传图的方式进行数据存储的,这些检查报告里有大量的关键数据可以作为后期患者病历大数据分析的原始素材,但是如果这些数据是以图片的方式存储的,那么就很难对里面的关键数据进行提取和分析,所以比较好的做法是抽取这些关键数据以结构化的方式进行设计,让用户进行关键数据的填写并以图片为附件。这样做虽然在操作上多了一步,但是数据的价值在后期会被发挥出来,这也是结构化数据带来的好处。
7.2.2非结构化数据
非结构化数据大多数都是一些零散的、没有一定规律的数据。例如用户在电商网站上浏览商品的浏览记录数据,或者一些系统的操作日志等,这些不是按照一定的规则进行结构化存储额数据都叫做非结构化数据。例如图片、视频、音频等数据都属于非结构化数据。与结构化数据相比,非结构化数据的采集和分析也要更复杂一些,非结构化数据的数据量同时也要大很多。
例如,结构化的商品数据一般都是按照商品的种类和型号分类的,但是用户对商品的浏览数据却因为浏览顺序的多样化会变得非常庞大,这些数据都是以非结构化的方式进行存储的。
非结构化存储与结构化存储的区别在于对数据结构的设计。结构化存储类似于图书馆对数目的标准化分类管理,非结构化存储就好比一个杂货仓库,里面的货物随机摆放没有一定的规则。但是如果利用好这些“杂货”,也可以从里面挖掘出“金子”。例如某个用户的浏览记录通常都是覆盖在经济管理类图书和鞋类商品上,基于这个行为结论,我们可以向这个用户推送经济管理类的书籍和鞋类的商品,以此提高用户对产品内容的关注度和成交率。
7.3 数据指标
数据指标是指产品在各方面所记录和统计出来的数据结果,是对过去进行回顾和对未来进行预测的参考标准。一个公司的业绩或者产品的健康程度也可以通过数据指标反映。常见的数据指标例如活跃用户数、周活跃用户数或者月活跃用户数可以反映出在一个时间周期内用户对产品的使用情况。
转化率指标是反映一个产品功能的实际效果的数据指标,例如设计并开发了一个产品功能,通过一些指标的监测,可以反映出这项功能在提高产品用户活跃度或者促进业务发展时是否真正起到了作用。
7.3.1 UV/PV
UV(Unique Visitor)是网站独立访客和独立用户的意思,指访问某个网站的独立IP的数量,通常计算的周期是当天的0点到24点。
PV(Page View)通常是指网站的页面访问量,和UV不同的是,PV统计的是用户打开网站的次数。
一般情况下,一位用户用同一台设备重复访问同一网站首页10次,那么网站的UV+1,PV+10。
7.3.2 DAU/MAU
DAU(Daily Active User)是指日活跃用户,记录一天内独立用户登录或使用产品的次数。
MAU(Monthly Active User)则是指月活跃用户,记录在一个自然月内用户的活跃度情况。
不同类型的产品对于活跃用户的定义应做区分,不能仅仅以使用时间长短、使用率高低来定义活跃用户。定义活跃用户,需要看定义活跃用户的目的是什么?如果是电商,那么用户将商品加入购物车与收藏等行为会被视为活跃度的体现。如果一个用户一个月内多次打开滴滴打车却从未打过车,那么我个人并不认为他能被纳入滴滴的月活里。
7.3.3 GMV
GMV(Gross Merchandise Volume)全称为商品交易总额,是一种反应平台交易总量的数据指标。GMV不是指成交总额,而是指发生的商品交易总额,例如用户在淘宝上下订单了但是还没有支付,那么这个商品的交易额度也会被计算进入GMV,即使这个用户最终并未完成支付。
7.3.4 转化率/留存率
转化率是统计一个大范围的运营活动或者产品动作转化出有效用户的比例。例如我们在线上做一场运营活动,让用户报名参与,有1000个用户打开并查看了该运营活动,最终有100个用户成功报名并参与了活动,那么此次运营活动的转化率就是10%。
留存率是指用户进入产品后,在一定的周期过后留存在产品中的用户数量。例如以某一天开始计算,当天加入产品的新用户是100人,一天后这一批人里有50个人继续使用产品,那么这一天产品的留存率就是50%,依次类推。下图为某产品13天内的用户留存率变化情况。
7.4 数据仓库
数据仓库(Data Warehouse)可简写为DW,是一种对历史数据进行存储和分析的数据系统,通常是为企业根据过往数据进行分析而制定相关决策而存在的。数据仓库里的数据都有一个特点就是有一定的延迟性,数据仓库里的数据通常是对历史数据进行的存储和分析,而实时数据都存储在下图左侧的生产数据库中。
数据仓库不同于数据库,数据库是对实时数据进行存储和事务性处理的系统,对应的操作包括了新增数据或是对数据进行修改和查询,但是在数据仓库中通常只对数据进行查询操作。
简单地说,数据库是为捕获数据而设计的,数据仓库是为了分析数据而设计的。在数据库里,我们存储的都是与业务相关的数据,在数据仓库里也会存储与业务相关的很多冗余数据,并且我们认为这种冗余是非常有必要的。
在实际生产中,数据仓库是基于数据决策的根基,当需要根据某一目的进行数据指标分析查询时,就可以在数据仓库中进行相关数据的组合查询和分析,产出的就是基于某一目的的数据报表。
对产品经理来说,也会需要对产品的各种数据指标进行查询和跟踪决策,在了解数据仓库后,我们就知道这些数据都应该从数据仓库中获取,在和工程师沟通时也可以更精准地描述自己的需求。按照不同维度进行数据查询和分析时,就是通过数据仓库来完成的。数据仓库就是数据的集中处理和分析仓库,为业务和产品决策提供数据支撑。
7.5 数据可视化
数据可视化是指通过不同的视觉呈现方式,将数字数据通过生动形象的方式呈现出来,使数据查看者能以一种更直观方便的方式查看数据。数据可视化是对数据分析结果的展示,通过数据可视化能给决策者提供更直观生动的数据决策支持。呈现的方式可以根据需要进行非常多样化的选择,例如曲线图、饼图、柱状图等,除静态的展示方式外,还可以对数据进行动态化展示,下图为百度人口迁徙图。
该图将城市之间的数据流向以动态的方式展示,表明了人口迁徙的方向和热度,可以一目了然地看到数据的流向,比传统的观察静态数据或者变化的数字体验要更为直观。
7.6 数据驱动下的产品与业务
数据是最能反映产品和业务结果的指标,产品上线后往往能收集到很多的数据,通过这些数据进行进一步分析和验证,可以得出一些验证结论,基于这些结论反向指导产品的优化和业务的调整,可以不断地优化产品和业务,利用数据驱动产品和业务也是目前很多公司常用的方式。
数据能客观的反映事实,如果我们有两套产品方案A和B,可以通过A/B测试进行差异化发布,让一部分用户使用方案A,另一部分使用方案B,然后根据两种方案实际的转化率或者活跃度高低来确定使用哪种方案更好。
在大数据时代,数据是真正有价值的资产,掌握了数据就掌握了未来,数据所能产生的价值远远超出我们的逾期,对现在的很多产品和公司来说,掌握数据入口并拥有采集数据的能力就拥有话语权,真正利用数据驱动产品和业务也能在未来产生极大的商业价值。
-未完待续-