精华内容
下载资源
问答
  • 数据中台,什么是数据中台?

    千次阅读 多人点赞 2019-12-05 11:53:07
    数据中台被誉为大数据的下一站,由阿里兴起,核心思想是数据共享,并在 2018 年因为“腾讯数据中台论”再度成为了人们谈论的焦点。在 3 月 15 日 ThoughtWorks 技术雷达峰会上,关于数据中台的话题也获得了众多参会...

    导读:

    数据中台被誉为大数据的下一站,由阿里兴起,核心思想是数据共享,并在 2018 年因为“腾讯数据中台论”再度成为了人们谈论的焦点。在 3 月 15 日 ThoughtWorks 技术雷达峰会上,关于数据中台的话题也获得了众多参会者的热烈关注。如今似乎人人都在提数据中台,但却不是所有人都清楚数据中台到底意味着什么。数据中台是只有大厂才需要考虑的高大上的概念吗?普通企业该不该做数据中台?数据中台的出现会给现有数据从业者们带来颠覆式的挑战吗?

    数据中台不是大数据平台!

    首先它不是一个平台,也不是一个系统,如果有厂商说他们有个数据中台卖给你,对不起,它是个骗子。

    要回答数据中台是什么,首先要探讨一下中台到底是什么。虽然没有明确的定义,但是作为理工直男,我们可以先把中台看作是一种中间层。既然是一种中间层,那么中台确实是一种十足技术用语,我们可以完全从技术角度来探讨了。

    我们可以应用 Gartner 的 Pace Layer 来理解为什么要有中间层,这样可以更好地理解中台的定位和价值。Pace Layer 里提到,可以按照事物变化的速度来分层,这样可以逐层分析并设计合理的边界与服务。

    在数据开发中,核心数据模型的变化是相对缓慢的,同时,对数据进行维护的工作量也非常大;但业务创新的速度、对数据提出的需求的变化,是非常快速的。

    数据中台的出现,就是为了弥补数据开发和应用开发之间,由于开发速度不匹配,出现的响应力跟不上的问题。

    数据中台解决的问题可以总结为如下三点:

    1. 效率问题:为什么应用开发增加一个报表,就要十几天时间?为什么不能实时获得用户推荐清单?当业务人员对数据产生一点疑问的时候,需要花费很长的时间,结果发现是数据源的数据变了,最终影响上线时间。

    2. 协作问题:当业务应用开发的时候,虽然和别的项目需求大致差不多,但因为是别的项目组维护的,所以数据还是要自己再开发一遍。

    3. 能力问题:数据的处理和维护是一个相对独立的技术,需要相当专业的人来完成,但是很多时候,我们有一大把的应用开发人员,而数据开发人员很少。

    这三类问题都会导致应用开发团队变慢。这就是中台的关键——让前台开发团队的开发速度不受后台数据开发的影响。

    史凯总结说,“数据中台是聚合和治理跨域数据,将数据抽象封装成服务,提供给前台以业务价值的逻辑概念”。

    如下图所示:

    DData API 是数据中台的核心,它是连接前台和后台的桥梁,通过 API 的方式提供数据服务,而不是直接把数据库给前台、让前台开发自行使用数据。至于产生 DataAPI 的过程,怎么样让 DataAPI 产生得更快,怎么样让 DATA API 更加清晰,怎么样让 DATA API 的数据质量更好,这些是要围绕数据中台去构建的能力。

    数据中台和数据仓库、数据平台的关键区别

    这是现在数据行业大家经常讨论的问题,到底数据仓库、数据平台和数据中台的区别是什么。

    概括地说,三者的关键区别有以下几方面:

    1. 数据中台是企业级的逻辑概念,体现企业 D2V(Data to Value)的能力,为业务提供服务的主要方式是数据 API;

    2. 数据仓库是一个相对具体的功能概念,是存储和管理一个或多个主题数据的集合,为业务提供服务的方式主要是分析报表;

    3. 数据平台是在大数据基础上出现的融合了结构化和非结构化数据的数据基础平台,为业务提供服务的方式主要是直接提供数据集;

    4. 数据中台距离业务更近,为业务提供速度更快的服务;

    5. 数据仓库是为了支持管理决策分析,而数据中台则是将数据服务化之后提供给业务系统,不仅限于分析型场景,也适用于交易型场景;

    6. 数据中台可以建立在数据仓库和数据平台之上,是加速企业从数据到业务价值的过程的中间层。

    数据仓库具有历史性,其中存储的数据大多是结构化数据,这些数据并非企业全量数据,而是根据需求针对性抽取的,因此数据仓库对于业务的价值是各种各样的报表,但这些报表又无法实时产生。数据仓库报表虽然能够提供部分业务价值,但不能直接影响业务。

    数据平台的出现是为了解决数据仓库不能处理非结构化数据和报表开发周期长的问题,所以先撇开业务需求、把企业所有的数据都抽取出来放到一起,成为一个大的数据集,其中有结构化数据、非结构化数据等。当业务方有需求的时候,再把他们需要的若干个小数据集单独提取出来,以数据集的形式提供给数据应用。

    而数据中台是在数据仓库和数据平台的基础上,将数据生产为为一个个数据 API 服务,以更高效的方式提供给业务。

    数据中台应该具备什么能力?

    大数据和人工智能大火之后这几年,很多人一直在提一个说法,那就是“数据是新的石油”。但史凯的观点却有些不同,在他看来,数据不等于数据资产,如果没有从业务的角度对数据进行规划,再多的数据也无法产生价值。

    史凯认为数据中台最核心的一个关键组件是数据资产目录。“我们认为,一个企业的数据要能够充分发挥价值,很重要的一个前提条件就是这个企业的数据结构和数据资产目录是对整个企业开放的。所有人都能够通过这个资产目录了解公司有哪些类别的数据、包含什么属性、源数据由谁管理,这样就可以快速搞清楚这些数据是不是自己需要的。但数据本身可以不开放,因为数据是有隐私信息和安全级别的。”

    大企业内部业务众多,不同业务可能存在很多重复数据。所谓的数据资产目录就是把数据的模型去重、归一、梳理,变成一个树状结构,这个树状结构不直接对应数据库中的字段。以航空货运为例,其数据资产可能包括货机、客运机的辅舱,一架货机就是一个数据资产目录的节点,而货机的各种属性(如货机型号、空间大小、年份等)就是这个节点下面的数据模型。数据资产目录做的事情就是从业务层面出发制定数据标准,将企业业务相关的数据资产模型抽取出来,这跟后面用什么数据库去存储、用什么结构去存储、存成结构化还是非结构化都没有关系。它相当于把企业的业务从数据层面做了一个梳理,用数据的语言把企业的业务模型还原出来。数据资产目录做好之后,后面才是用什么技术手段、从哪里提取数据来映射到这个数据资产目录。

    除了开放,数据资产目录还应该具有标签描述、可检索,这样才能最大程度地方便真正使用数据的人,以最快的速度找到他们需要的东西。

    在 ThoughtWorks 提出的精益数据创新体系中将企业所需要具备的数据能力概括为以下六种,具备了这六种能力,企业才具备成为数据驱动的智能企业的基础,而这些能力的承载平台,就是数据中台:

    1. 数据资产的规划和治理

    做中台之前,首先需要知道业务价值是什么,从业务角度去思考企业的数据资产是什么。数据资产不等同于数据,数据资产是唯一的,能为业务产生价值的数据。 对于同一堆数据,不同业务部门所关注的数据指标可能完全不同,怎么让各个跨域的业务变成统一的标准,就需要规划企业的数据全景图,将所有有可能用上的、所有对企业有可能有价值的数据都规划出来,最终梳理出企业的数据资产目录。在这个时候不需要考虑有没有系统、有没有数据,只需要关注哪些数据是对企业业务有价值的。这一层不建议做得太细,太细就难以形成标准,不能适用于多个场景了。数据治理是数据中台很重要的一个领域,ThoughtWorks 认为在现在业务边界消失、需求快速变化的情况下,企业需要具备精益数据治理的能力——Lean Data Governance。传统的中心化、事前控制式的数据治理方式,要改变为去中心化、事后服务式的治理方式。

    1. 数据资产的获取和存储

    数据中台要为企业提供强大的数据资产的获取和存储的能力。

     3. 数据的共享和协作

    企业的数据中台一定是跨域的,需要让所有的人都知道数据资产目录在哪里。不能因为数据安全,就不让大家知道企业有什么数据。没有共享和开放,数据没有办法流动起来,没有流动的话数据的价值产生的速度就会非常慢。所以在数据安全的基础上,企业的数据资产目录要对利益相关者、价值创造者开放,要让业务人员能够做到“Self-Service”。

      4. 业务价值的探索和分析

    数据中台不仅要建立到源数据的通路,还需要提供分析数据的工具和能力,帮助业务人员去探索和发现数据的业务价值。一个好的数据中台解决方案中需要针对不同业务岗位的用户提供个性化的数据探索和分析的工具,并且在此基础上一键生成数据 API,以多样化的方式提供给前台系统。

    1. 数据服务的构建和治理

    数据中台需要保证数据服务的性能和稳定性,以及数据质量和准确性,还需要具备强大的服务治理能力。数据中台是一个生态平台,在数据中台上面会不断生长各种数据服务,所以从一开始就构建好数据服务的治理结构是非常重要的,数据服务需要可以被记录、可被跟踪、可被审计、可被监控。

       6. 数据服务的度量和运营

    如果数据中台最终只是做到把数据给到业务人员,那它就只是一个搬运工的角色。数据中台还需要具备度量和运营数据服务的能力,能够对中台上提供的数据服务及相关行为持续跟踪和记录,包括哪些数据服务被哪个部门用了多少次等,通过这些去度量每一个数据服务的业务价值。

    史凯认为,数据中台是一个需要用互联网思维去经营的利润中心平台,数据中台的经营分析人员需要分析业务,了解为什么今天上午这个财务部门的人用了数据中台、调用了十次,下午他不用了,原因是什么,调用了这些数据服务的人通常还会调用哪些其他的数据服务。这些都需要相应地做记录、做日志、做分析,要把数据当做像电商平台一样去经营,然后实时地根据这些业务行为数据去提醒数据服务提供方,调整、改变、优化数据服务,这才是可经营的数据中台,也只有这样业务部门才能得到最快的支持和响应。

    为什么人人都需要数据中台?

    数据中台并非只有大公司才需要的高大上的玩意。

    ThoughtWorks 从 2017 年到现在,已经帮助多家大型国内外企业建设数据中台,其中有体量巨大的企业级数据中台,也有部门级的小数据中台。

    “未来所有的企业核心都会变成加工数据的企业,而数据中台是数据价值化的加工厂,所以所有的企业都需要数据中台的能力,数据中台一定是未来每个企业的标准配置。”

    在史凯看来,数据中台并不意味着“大而全”的数据平台。根据企业的规模和业务的不同,数据中台可大可小,规模、复杂度可能都不相同,但它对业务产生的价值是一样的。

    当企业评估自己是否应该建设数据中台时,应该从哪些方面来考虑?史凯认为,从战略角度来说,每个企业都需要建立自己的数据中台;从战术角度来说,当企业发现自己的数据开发利用的速度和应用开发的速度不匹配的时候,就需要考虑构建数据中台。

    原来很多企业在做应用系统的时候,什么都不考虑直接上单体架构,一上来就先做数据库,然后在上面建应用。ThoughtWorks 建议现在的企业,即使不做数据中台、不去立一个叫做“数据中台”的项目,但是在做应用的时候,最好把这个应用分成三层,业务层、数据中台层、源数据层,在一开始做应用的时候就把三个层次抽象出来。

    数据质量差所以做不了数据中台?No!

    历史遗留的数据质量问题经常让大家对数据的利用和价值产生质疑。2018 年,史凯在与不同企业沟通过程中经常听到的一句话就是,“我们现在还没有到利用数据这一步,因为(应用系统中的)数据质量太差”。

    每次听到这句话,史凯脑子里就好像听到了另外一句话,“还没到培养孩子的时候啊,孩子太小了”。

    不能因为数据质量差,就不去利用数据。恰恰是因为没有去做后面的事情,所以数据质量才差。而且也不能因为数据质量差就抛开业务场景、试图全面解决数据质量的问题,这样得不到业务部门的支持,也无法从数据工作中产生业务价值。所以 ThoughtWorks 建议的恰恰是利用做应用、做业务的需求,同步解决数据质量问题。

    史凯认为,数据质量问题,根本上是在构建应用之初缺乏整体数据规划和数据思维导致的问题。原来的流程类应用构建之初,只考虑了如何让流程跑起来,缺乏对这个应用在整个企业的数据全景图(Data Landscape)中的定位的分析,没有从源头上优化数据的存储、流转,从而更好地与其他的系统中的数据去对齐口径、统一语言,将流程问题抽象成领域模型问题,再将领域模型抽象成数据模型。

    建设数据中台的挑战及应对策略

    建设数据中台最大的挑战在于前期能否从业务层面梳理清楚有业务价值的场景,以及数据全景图,而不仅在于后期的技术建设。

    数据中台建设面临的挑战包括:

    • 梳理业务场景:搞清楚数据中台如何对业务产生价值。

    • 建设数据中台的优先级策略:需求可能大而全,但我们不能直接建大而全的数据中台,应该根据业务重要性来排需求的优先级。

    数据治理问题:和业务独立开的数据治理少有成功的,大的数据标准要有(数据资产目录),通过数据资产目录将共有的纬度、共性的业务模型提炼出来,在此基础之上数据治理需要跟业务场景紧密结合。

    数据中台的建设需要两个战略耐心

    数据中台是为了加快从数据到业务价值的产生速度,但是它的生产过程依然是需要时间、有很多复杂的工作要做的,所以对于数据中台的投资方和数据中台的建设方来讲,都需要对应的战略耐心。

    • 对于投资方来讲,要充分认识到数据中台类项目的价值和局限性。在现在的组织结构和技术成熟度下,数据中台依旧是一个技术平台,对于业务价值的产生是一个加速的过程。但是业务对于数据的需求不会因为有了数据中台就减少,数据中台也不是哆啦 A 梦,不能随心所欲地变出各种业务想要的服务。这依然是一个需要统筹规划、敏捷迭代、演进建设的系统性工程,所以需要要管理好期望,有一定的战略耐心。

    对于建设方来讲,要充分认识到数据中台建设的复杂度,不要操之过急,不要期待毕其功于一役。史凯的建议是要从小中台做起,围绕具体有价值的业务场景去建设,尽量不脱离场景去搞周期长、大而全的纯工具平台建设。

    数据中台也可以小而美

      建设数据中台的关键考量包括两方面。

    首先数据中台一定要与业务价值对齐。构建数据中台,最重要的不是技术,也不是数据质量好不好,而是数据思维和数据文化。数据思维就是要建立起从数据的视角去思考问题的方式;数据文化就是要把数据和业务当成一体去看,而不是只将数据当作一个支持工具。想清楚业务对于数据的诉求是构建数据中台的第一步,哪怕暂时不能想的太细,也要去想,想不清楚就先不要做。

    不要在业务场景还没有明确、优先级还不清晰、价值度量体系尚未建立起来的时候,就建立大而全的数据平台,并且把所有的数据都存起来。企业都是追求投入产出比的,大而全的数据平台往往会面临尴尬的局面,一堆功能看上去很有用,应该都能用上,但是缺乏应用场景,真的有了场景,发现也不能开箱即用,还需要众多的定制化。

    其次,数据中台应该从小数据、小场景做起。

    数据中台是面向场景而非面向技术的,这种与客户的业务、企业的结构和信息化发展阶段有着紧密的相关性的业务基础架构,是很难买一个大而全的产品来一劳永逸解决的。

    可以通过下面这个图来解释构建中台的原则:

    一开始的时候需要顶层设计,面向业务愿景制定中台的整体规划,全面的梳理数据创新全景蓝图,这就是上图左边的黑色框架部分,通过业务愿景驱动出所有的业务场景探索,从而推导出数据中台的全景架构、技术支撑。

    但是在实施的时候,要从具体的业务场景出发。从高价值数据集场景做起,然后顺着这个场景竖切,找到数据全景图中的一个或多个数据集合,从小数据场景落地,这样才能快速验证价值。大处思考,全局拉通,避免后续的数据孤岛,但是从小数据集切入,从可实现性高的场景启动。然后一个个的场景做起来,业务价值和中台能力也就同步建立起来了。

    总的来讲就是,“设计阶段横着走,落地阶段竖着切。”

    数据中台团队和技术选型

    数据中台团队通常需要包含以下角色:

    • 业务专家团队:了解业务、梳理业务场景,确定数据资产与业务场景的一一对应关系,确定业务场景的优先级,为数据中台的建设提供依据。

    • 数据工程团队:建设和维护数据中台,包括 ETL、数据采集,以及数据中台性能和稳定性保证,利用中台的工具采集、存储、加工、处理数据。

    • 数据分析团队:分析数据价值、探索场景,生产更多的数据服务。

    • 数据治理团队:梳理数据标准、构件数据安全和隐私规范,利用开源去中心化的数据治理工具(比如 atlas、wherehows)来围绕业务场景解决数据质量和安全问题。

    • 智能算法团队:为数据分析、业务探索提供智能和算法工具。

    而这样的一个团队的工作就构成了一个数据生产线,一个从数据到业务服务的数据服务工厂,这个工厂有生产车间(Data Pipeline)、研发中心(数据实验室)、管理办公室(数据治理),还有产品展示中心(数据服务商店)。

    数据工厂是一个逻辑概念,不是一个大而全的产品,ThoughtWorks 结合过去几年的实践给出了一个数据工厂组件选型的参考架构,这些推荐的架构和组件,很多都体现在过去 ThoughtWorks 推出的技术雷达中并进行了详细解释,如下:

    数据中台的出现对于现有数据团队的挑战

    前面已经提到,数据中台是企业的 Data API 工厂,用更高效、更协同的方式加快从数据到业务的价值,能够给业务提供更高的响应力。所以数据中台距离业务更近,这对于传统企业的数据业务来讲,是一个重大的变化,同时给原来的数据团队也会带来巨大的挑战。

     1. 对数据分析人员的业务要求提高了

    企业传统的数据工作和业务工作分工明确、界限清晰,业务人员负责业务需求,提出业务问题,并将业务问题拆解成一个个清晰的数据问题,然后数据工程师和数据分析师在这个清晰的问题下解题。

    但是,在数据中台出现后,数据中台是一个赋能平台,它会沉淀、提供很多数据分析工具和数据服务,能够让不具备专业数据能力的业务人员也可以进行一些简单的数据分析,产生业务的洞察。这就意味着在数据中台的支持下,相对简单清晰的业务问题会更多的由业务人员自己解决掉,那么传递到专业数据人员的问题,都会是更加复杂的问题。这对于数据人员的业务理解能力就加强了,他 / 她们必须具备快速理解业务的能力,才能够体现出专业性和优势。

     2. 对于数据人员的工程能力要求提高了

    原来的数据分析工作属于个体工作方式,每一个数据科学家、数据分析师就是一个独立的工作单元,业务部门给出业务问题,他们通过自己擅长熟悉的工具和方法给出结果。但是在数据中台出现后,他们一方面获得了更多数据分析的武器和工具,能够站在前人的基础上工作,提高了效率和准确度,另外一方面,他们也需要掌握更多的平台化的数据分析工具,比如 Jupyter Notebook,同时也被要求能够把自己分析的结果转化成数据服务,沉淀到中台。

     3. 数据团队需要具备更多的业务视角

    原来的数据分析团队是一个功能型团队,更多以数据智囊团的身份存在。大部分情况下,距离业务比较远,更不要提对业务的结果负责。而在数据中台出现后,数据中台距离业务会越来越近,甚至直接影响和参与业务的运行,数据团队将慢慢脱离数据智囊团的身份,逐渐从后台走向前台,直接负责一个个数据服务,而这些数据服务是会直接参与到业务当中、产生业务价值的。这样的定位变化,要求数据团队具备更多的业务视角,要更关注业务价值,直接对齐企业的业务目标去工作。

    所以,数据中台的出现,不仅是一个技术平台,它对于企业而言是一个系统化的工作,企业数据相关的流程、职责、分工都要有对应的调整,才能达成整体的目标。

    数据中台 VS 数据隐私

    对于数据中台来说,数据隐私和安全性也是非常重要的问题。可能很多人还记得前些日子马化腾针对“腾讯数据中台论”的回应。去年腾讯组织架构调整进程中实现了技术打通,而对数据打通保持谨慎态度。马化腾在 18 年 11 月的世界互联网大会上回应“数据中台论”:“腾讯不能套用很多其他公司的做法,把数据直接去任意打通。因为在我们的平台里面,大量全部都是人和人之间的通信、社交行为数据,如果说数据可以任意打通,给公司业务部门或者给外部的客户用,那是会带来灾难性的后果。这方面我们要更加谨慎,我们要从用户的角度来考虑,把个人信息和数据保护放在优先地位。”很多人将这解读为腾讯不做数据中台,史凯却不这么认为。

    在他看来,腾讯的回应并不是说他们不做数据中台,而是强调要在数据隐私上做更多的工作。其实所有的数据安全和隐私的保护都需要从场景出发。史凯认为,“不能从纯数据层面来看数据隐私,数据隐私是不能脱离场景的”。如果纯粹从数据层面,而不从业务场景层面去管理数据隐私,就会带来两方面的问题,要么数据被管理的非常死,阻碍了业务价值的产生;要么数据隐私管理就会有漏洞。

    史凯举了一个例子,比如我们讲的用户交易数据,如果不关联用户基本信息,交易数据本身对于用户来说是不具备隐私风险的,因为它不关联到任何一个用户个体。所以,是可以对脱敏后的用户交易数据进行分析和利用的。

    另一方面,如果脱离场景谈数据隐私,也可能会导致忽略了潜在的安全问题。有时候如果不把场景关联起来,可能两个数据看上去没有安全问题,但其实外人把这两个数据关联起来就产生价值了。这也是为什么在一开始的时候就要把所有的场景,尽可能地全部分析出来。

    另外,设置权限、数据分级审核、库级数据脱敏等都是可以提升数据安全的手段。现代数据中台必须具备数据调用行为的监控和记录机制,反过来也能增强对数据安全和隐私的保护。

    数据中台的下一步

    当前国内外已经有不少公司开始投资建设数据中台,大家比较熟悉的包括阿里、华为、联想、海航、上汽、壳牌等。

    在史凯看来,数据中台当前处于上升发展期。虽然未来数据中台未必还叫做数据中台,但它一定会成为企业必备的基础组件。

    世界正在从信息化向数字化发展。信息化是指大部分的工作都在物理世界里完成,然后用信电脑的数字化世界解决一小部分问题。数字化则是把人从物理世界搬到数字化世界。从这个角度来讲,数据中台将会变成物理世界的业务在数字化世界的一个还原。

    数据中台设计的初衷是将计算与存储分离,从狭义上来说,真正最核心的数据中台可以是没有存储的。但就当前的情况来看,广义的数据中台在未来一段时间内仍会涵盖数据仓库、数据湖等存储组件,“数据工厂”这个概念可能更适用于现在的阶段。但随着数据中台的发展,未来很有可能不再需要数据湖了。

    最后,史凯也提到了阿里中台战略中的另一个中台——“业务中台”。他表示“当前业务中台更偏实时交易,是从上往下沉淀业务;数据中台目前更偏分析、决策和洞察,为业务提供 T+N 和 T+0 的数据服务,但是再往前走,数据中台跟交易会慢慢结合得更为紧密。随着计算能力越来越强,以及微服务架构的进一步发展,未来业务中台和数据中台可能会融为一体。”

     

    采访嘉宾

    史凯,ThoughtWorks 数据和智能总监,精益数据创新体系的提出者,2019 年被评选为 DataIQ100 的数据赋能者,有近 20 年年的企业信息化、数字化转型架构和实施经验,为众多大型客户提供数字化转型战略略规划和咨询实施服务。

    技术雷达是 ThoughtWorks 推出的公益的、不限行业的技术选型趋势报告,至今已坚持十年,旨在以雷达的表现形式,通过清晰的解读,给技术人员提供高质量、落地性强的技术平台、工具框架方面的选型指导,助力企业数字化转型。

    展开全文
  • 中台透彻讲解

    万次阅读 多人点赞 2019-06-27 21:59:01
    流畅度、稳定性、扩展性、界面、交易流程等都是影响用户体验的重要因素。在当时的组织结构和研发情况下,会出现业务的颜色各异,交易流程却相同的问题,很影响用户的体验。 全局打通。 所有业务本质都是...

    01 缘起

    百度指数搜索“中台”,可以发现,中台一词前几年几乎都没有搜索,反倒是今年5月21号开始蹭蹭往上涨!

    仔细搜索了一下原来5月21号腾讯召开了全球数字生态大会,会议上腾讯高级副总裁汤道生提出“开放中台能力,助力产业升级”。汤道生介绍,腾讯技术委员会正在推动“开源协同”和“自研上云”,通过技术整合实现高效的能力交付。

    同时,基于在即时通讯、社交、游戏等优势领域中的技术积累,腾讯将进一步开放业界领先的包括用户中台、内容中台、应用中台等在内的数据中台,以及包括通信中台、AI中台、安全中台等在内的技术中台。企业与开发者可以灵活地把这些技术应用到业务场景中。中台一词开始步入大家的视角。

    其实腾讯并不是最早弄中台的,但今年中台是被腾讯带火的。国内最早弄中台的公司是阿里巴巴!说到阿里巴巴的中台就不得不说到芬兰的一家游戏公司Supercell!

    02 芬兰游戏公司Supercell

    2015年年中,马云带领阿里巴巴集团高管,拜访了位于芬兰赫尔辛基的移动游戏公司Supercell。Supercell当时号称是世界上最成功的移动游戏公司,Supercell由6名资深游戏开发者在2010年创立,旗下拥有《部落冲突》《皇室战争》《海岛奇兵》和《卡通农场》这四款超级现象级产品。

    Supercell是一家典型的以小团队模式进行游戏开发的公司,以2到5个员工、最多不超过7个员工组成独立的开发团队,称之为Cell(细胞) ,这也是公司名字Supercell (超级细胞)的由来。

    团队自己决定做什么样的产品,然后最快时间推出产品公测版,看看游戏是否受用户欢迎。如果用户不欢迎,迅速放弃这个产品,再进行新的尝试,期间几乎没有管理角色的介入。团队研发的产品失败后,不但不会受到惩罚,甚至还会举办庆祝仪式,以庆祝他们从失败中学到了东西。这种模式让Supercell公司成为了年税前利润15亿美金的游戏公司。

    2016年6月,腾讯以86亿美元收购了员工数不超过200人的Supercell公司84.3%的股权,每一名员工人均贡献的估值超过3.54亿人民币。

    Supercell的成功很大原因就在于其高效的“部落”组织策略。在supercell仅有的100多人中,被分成若干个小前台组织,每个小组虽然人不多,但都包含了做一款游戏需要的所有人才。

    本来就不大的公司被分成若干个小组,这样做的好处是可以快速决策,快速研发,快速把产品推向市场,而游戏引擎、服务器等后台基础则不需要操心。

    Supercell 的模式给参加此次拜访的阿里高管们很大的震撼,在大家反复的心得交流和讨论中,一个非常重要的问题引起了很多人的反思:信息时代的公司架构到底应该是怎样的?

    正是有了这次拜访才真正让阿里巴巴的领导层有了足够的决心要将组织架构进行调整,在此次拜访的半年后,阿里集团CEO逍遥子发出内部邮件,组织架构全面升级,建设整合阿里产品技术和数据能力的强大中台,组建“大中台,小前台”的组织和业务体制。

    03 阿里中台

    所谓的“中台”,并不是阿里巴巴首先提出的词语,从字面意思上理解,中台是基于前台和后台之间。阿里通过多年不懈的努力,在业务的不断催化滋养下,将自己的技术和业务能力沉淀出一套综合能力平台,具备了对于前台业务变化及创新的快速响应能力。阿里人将“中台战略”形象地比喻成陆海空三军立体化协同作战:

    他们将中台分为六类,分别对应不同兵种:

    • 业务中台,提供重用服务,例如用户中心、订单中心之类的开箱即用可重用能力,为战场提供了空军支援能力,随叫随到,威力强大;

    • 数据中台,提供数据分析能力,帮助从数据中学习改进,调整方向,为战场提供了海军支援能力;

    • 算法中台,提供算法能力,帮助提供更加个性化的服务,增强用户体验,为战场提供了陆军支援能力,随机应变,所向披靡;

    • 技术中台,提供自建系统部分的技术支撑能力,帮助解决基础设施,分布式数据库等底层技术问题,为前台特种兵提供了精良的武器装备;

    • 研发中台,提供自建系统部分的管理和技术实践支撑能力,帮助快速搭建项目、管理进度、测试、持续集成、持续交付,是前台特种兵的训练基地;

    • 组织中台,为项目提供投资管理、风险管理、资源调度等,是战场的指挥部,战争的大脑,指挥前线,调度后方。

    2018双11,阿里又一次实现了一次壮举,在2135亿的背后,在令人骄傲的战绩背后,缺少不了阿里中台铁军发挥的巨大力量。

    阿里中台建设也并非一帆风顺。曾经淘宝就曾大费精力搭建了一个CRM平台,但大部分商家不买账,因为仅靠一套系统,根本无法满足不同行业、不同规模的几百万商家多样化的需求。

    后来淘宝采用中台战略思想,将15万家ISV的服务能力组织起来,进行组件化,搞定几百万家商家不同需求。通过开放赋能不同商家、不同业务,帮助商家实现业务创新。就此阿里中台战略在企业服务生态建设方面拉开了序幕。

    说完这么多中台的事情,可能你还是不知道什么是中台!再举一下董阳对阿里巴巴数据中台的理解。

    04 白话数据中台

    中台就是公共服务平台,数据中台就是将数据加工以后封装成一个公共的数据产品或服务。

    家里厨房有油/盐/酱油/醋/料酒/生抽…很多种调料(数据),你(业务部门)特别喜欢吃糖醋排骨/糖醋鱼/糖醋里脊/糖醋猪蹄…(各种业务应用),你老妈(IT部门)觉得每天都按照比例调制糖醋汁很麻烦很浪费时间还每次都有偏差(每次数据有误差)。

    于是你老妈决定按照“1料酒;2酱油;3白糖;4醋;5水”的比例(数据算法)调制好一大桶糖醋汁(数据产品),以后每天倒一点糖醋汁就可以很快做出一盘糖醋XX(业务应用)。

    这个调制糖醋汁的过程就相当于构建了 一个数据中台,糖醋汁就是数据产品。数据产品往往不是直接提供给用户使用的,而是提供给业务应用使用的(类似于糖醋汁不是用来直接喝的,而是用来做糖醋XX的)。另外,为了调制更快更准确,可能还需要买一些密封大桶/漏斗/量杯(ETL/BI 等数据工具)。

    当然,如果你家十天半个月才做一次糖醋XX(低频),那就没有必要调制一大桶糖醋汁放那儿(不需要构建这个数据产品)。类似这个逻辑,如果你家每天都做八宝粥,则可以把八种粮食(数据)混合好放一个大桶里做成八宝粥混料(数据产品)。

    如果你老妈的糖醋XX做的特别好开了个餐馆,每天做给几百个人吃(需求量变大),就需要调制更多糖醋汁买个冰箱存起来(数据仓库),这也解决了随用随跳(实时取数)的效率瓶颈。所以,在做数据中台之前,先自问一下:

    1. 有没有糖醋汁、八宝粥混料的需求?(有没有数据产品的需求?

    2. 有多少人吃?(使用这个数据产品的需求量大不大?

    3. 多久吃一次?(需要这个数据产品的频率高不高?

    如果以上都合理,就可以开始规划数据中台了。再回过头看,公司为什么要建中台?

    在过去几年中,借着移动互联网的红利,许多公司都高速发展,进行大规模业务拓展,业务拓展的速度足够快,对公司自然是好事,但是随着而来的问题就是,公司内部出现了大量的重复建设和资源浪费的现象,重复造轮子。

    如滴滴,有顺风车、快车、专车、代驾等多业务的垂直架构,这些业务虽然会有一些差别,但是核心系统和流程都是类似的。如果各自独立开发,也会出现各种各样的问题。

    开发成本过高,滴滴旗下的每个业务,其实都是可以单独支撑起一家公司的,如果每个业务都独立做到极致,那么开发成本和人力成本就会非常巨大,而如果为了控制成本,就把系统的建设放缓,则意味着,无论是核心系统本身的质量,还是对外的用户体验都不太好。

    在这样的背景下,滴滴也开始考虑将诸多业务,以及各个城市的系统统一规划,统一建设,提升服务前台的能力。

    05 滴滴中台

    2015年末滴滴启动了中台战略整合业务系统。决定构建业务中台主要出于四方面考虑:专业深度、人力资源、用户体验、全局打通。

    • 专业深度。由于是多业务垂直化的架构,会有多个团队开发同样的架构,这就需要很多的工程师。每个团队都是用最快速的方式构建流程,所以技术很难做深。这样一来,导致客户端的流畅度不高,后端不稳定,影响可扩展性。

    • 人力资源。原则上来说把每个团队加到足够的人,每个架构都能有很好的发展。但工程师的薪资都非常高,招聘大量工程师来做同样的架构,研发成本高昂。很还有些时候,愿意花钱,却招聘不到合适的人。

    • 用户体验。流畅度、稳定性、扩展性、界面、交易流程等都是影响用户体验的重要因素。在当时的组织结构和研发情况下,会出现业务的颜色各异,交易流程却相同的问题,很影响用户的体验。

    • 全局打通。所有业务本质都是出行,出行本质有协同效应。但在各自独立发展情况下,协同性就完全没有,在构建中台过程中,可以逐步把协同性加起来。

    06 总结

    看到这里,你估计对中台有个大概了解。中台不是凭空产生的,而是建立在业务之上,公司发展过程中一些项目有点不同,然后重新搭建架构,有点资源浪费,搭建中台系统完美解决重复造轮子问题。

    当然大公司才有这困惑,小公司就不用加戏了,不用盲目跟风,做好手上的事情,时间到了,风口就来了!

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 1.1.OPPO 业务与数据规模 大家都知道 OPPO 是做智能手机的,但并不知道 OPPO 与互联网以及大数据有什么关系,下图概要介绍了 OPPO 的业务与数据情况: OPPO 作为手机厂商,基于 Android 定制了自己的 ColorOS ...

    一.OPPO 实时数仓的演进思路

    1.1.OPPO 业务与数据规模

    大家都知道 OPPO 是做智能手机的,但并不知道 OPPO 与互联网以及大数据有什么关系,下图概要介绍了 OPPO 的业务与数据情况:

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

    OPPO 作为手机厂商,基于 Android 定制了自己的 ColorOS 系统,当前日活跃用户超过 2 亿。围绕 ColorOS,OPPO 构建了很多互联网应用,比如应用商店、浏览器、信息流等。

    在运营这些互联网应用的过程中,OPPO 积累了大量的数据,上图右边是整体数据规模的演进:从 2012 年开始每年都是 2~3 倍的增长速度,截至目前总数据量已经超过 100PB,日增数据量超过 200TB。

    要支撑这么大的一个数据量,OPPO 研发出一整套的数据系统与服务,并逐渐形成了自己的数据中台体系。

    1.2.OPPO 数据中台

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    今年大家都在谈数据中台,OPPO 是如何理解数据中台的呢?我们把它分成了 4 个层次:

    • 最下层是统一工具体系,涵盖了"接入 - 治理 - 开发 - 消费"全数据链路;
    • 基于工具体系之上构建了数据仓库,划分成"原始层 - 明细层 - 汇总层 - 应用层",这也是经典的数仓架构;
    • 再往上是全域的数据体系,什么是全域呢?就是把公司所有的业务数据都打通,形成统一的数据资产,比如 ID-Mapping、用户标签等;
    • 最终,数据要能被业务用起来,需要场景驱动的数据产品与服务。

    以上就是 OPPO 数据中台的整个体系,而数据仓库在其中处于非常基础与核心的位置。

    1.3. 构建 OPPO 离线数仓

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    过往 2、3 年,我们的重点聚焦在离线数仓的构建。上图大致描述了整个构建过程:首先,数据来源基本是手机、日志文件以及 DB 数据库,我们基于 Apache NiFi 打造了高可用、高吞吐的接入系统,将数据统一落入 HDFS,形成原始层;紧接着,基于 Hive 的小时级 ETL 与天级汇总 Hive 任务,分别负责计算生成明细层与汇总层;

    最后,应用层是基于 OPPO 内部研发的数据产品,主要是报表分析、用户画像以及接口服务。此外,中间的明细层还支持基于 Presto 的即席查询与自助提数。 伴随着离线数仓的逐步完善,业务对实时数仓的诉求也愈发强烈。

     

    1.5. 离线到实时的平滑迁移

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

    无论是一个平台还是一个系统,都离不开上下两个层次的构成:上层是 API,是面向用户的编程抽象与接口;下层是 Runtime,是面向内核的执行引擎。我们希望从离线到实时的迁移是平滑的,是什么意思呢?从 API 这层来看,数仓的抽象是 Table、编程接口是 SQL+UDF,离线数仓时代用户已经习惯了这样的 API,迁移到实时数仓后最好也能保持一致。而从 Runtime 这层来看,计算引擎从 Hive 演进到了 Flink,存储引擎从 HDFS 演进到了 Kafka。

    基于以上的思路,只需要把之前提到的离线数仓 pipeline 改造下,就得到了实时数仓 pipeline。

    1.6. 构建 OPPO 实时数仓

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    从上图可以看到,整个 pipeline 与离线数仓基本相似,只是把 Hive 替换为 Flink,把 HDFS 替换为 Kafka。从总体流程来看,基本模型是不变的,还是由原始层、明细层、汇总层、应用层的级联计算来构成。

    因此,这里的核心问题是如何基于 Flink 构建出这个 pipeline,下面就介绍下我们基于 Flink SQL 所做的一些工作。

    二. 基于 Flink SQL 的扩展工作

    2.1.Why Flink SQL

    首先,为什么要用 Flink SQL? 下图展示了 Flink 框架的基本结构,最下面是 Runtime,这个执行引擎我们认为最核心的优势是四个:第一,低延迟,高吞吐;第二,端到端的 Exactly-once;第三,可容错的状态管理;第四,Window & Event time 的支持。基于 Runtime 抽象出 3 个层次的 API,SQL 处于最上层。

    Flink SQL API 有哪些优势呢?我们也从四个方面去看:第一,支持 ANSI SQL 的标准;第二,支持丰富的数据类型与内置函数,包括常见的算术运算与统计聚合;第三,可自定义 Source/Sink,基于此可以灵活地扩展上下游;第四,批流统一,同样的 SQL,既可以跑离线也可以跑实时。

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    那么,基于 Flink SQL API 如何编程呢?下面是一个简单的演示:

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    首先是定义与注册输入 / 输出表,这里创建了 2 张 Kakfa 的表,指定 kafka 版本是什么、对应哪个 topic;接下来是注册 UDF,篇幅原因这里没有列出 UDF 的定义;最后是才是执行真正的 SQL。可以看到,为了执行 SQL,需要做这么多的编码工作,这并不是我们希望暴露给用户的接口。

    2.2. 基于 WEB 的开发 IDE

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

    2.5.Flink SQL 对接外部数据源

    搞清楚了 Flink SQL 注册库表的过程,给我们带来这样一个思路:如果外部元数据创建的表也能被转换成 TableFactory 可识别的 map,那么就能被无缝地注册到 TableEnvironment。基于这个思路,我们实现了 Flink SQL 与已有元数据中心的对接,大致过程参见下图:

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    通过元数据中心创建的表,都会将元数据信息存储到 MySQL,我们用一张表来记录 Table 的基本信息,然后另外三张表分别记录 Connector、Format、Schema 转换成 key-value 后的描述信息。之所以拆开成三张表,是为了能够能独立的更新这三种描述信息。接下来是定制实现的 ExternalCatalog,能够读取 MySQL 这四张表,并转换成 map 结构。

    2.6. 实时表 - 维表关联

    到目前为止,我们的平台已经具备了元数据管理与 SQL 作业管理的能力,但是要真正开放给用户使用,还有一点基本特性存在缺失。通过我们去构建数仓,星型模型是无法避免的。这里有一个比较简单的案例:中间的事实表记录了广告点击流,周边是关于用户、广告、产品、渠道的维度表。

    假定我们有一个 SQL 分析,需要将点击流表与用户维表进行关联,这个目前在 Flink SQL 中应该怎么来实现?我们有两种实现方式,一个基于 UDF,一个基于 SQL 转换。

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

    三.构建实时数仓的应用案例

    下面分享几个典型的应用案例,都是在我们的平台上用 Flink SQL 来实现的。

    3.1. 实时 ETL 拆分

    这里是一个典型的实时 ETL 链路,从大表中拆分出各业务对应的小表:

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    OPPO 的最大数据来源是手机端埋点,从手机 APP 过来的数据有一个特点,所有的数据是通过统一的几个通道上报过来。因为不可能每一次业务有新的埋点,都要去升级客户端,去增加新的通道。比如我们有个 sdk_log 通道,所有 APP 应用的埋点都往这个通道上报数据,导致这个通道对应的原始层表巨大,一天几十个 TB。但实际上,每个业务只关心它自身的那部分数据,这就要求我们在原始层进行 ETL 拆分。

    这个 SQL 逻辑比较简单,无非是根据某些业务字段做筛选,插入到不同的业务表中去。它的特点是,多行 SQL 最终合并成一个 SQL 提交给 Flink 执行。大家担心的是,包含了 4 个 SQL,会不会对同一份数据重复读取 4 次?其实,在 Flink 编译 SQL 的阶段是会做一些优化的,因为最终指向的是同一个 kafka topic,所以只会读取 1 次数据。

    另外,同样的 Flink SQL,我们同时用于离线与实时数仓的 ETL 拆分,分别落入 HDFS 与 Kafka。Flink 中本身支持写入 HDFS 的 Sink,比如 RollingFileSink。

    3.2. 实时指标统计

    这里是一个典型的计算信息流 CTR 的这个案例,分别计算一定时间段内的曝光与点击次数,相除得到点击率导入 Mysql,然后通过我们内部的报表系统来可视化。这个 SQL 的特点是它用到了窗口 (Tumbling Window) 以及子查询。

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    3.3. 实时标签导入

    这里是一个实时标签导入的案例,手机端实时感知到当前用户的经纬度,转换成具体 POI 后导入 ES,最终在标签系统上做用户定向。

    这个 SQL 的特点是用了 AggregateFunction,在 5 分钟的窗口内,我们只关心用户最新一次上报的经纬度。AggregateFunction 是一种 UDF 类型,通常是用于聚合指标的统计,比如计算 sum 或者 average。在这个示例中,由于我们只关心最新的经纬度,所以每次都替换老的数据即可。

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    四. 未来工作的思考和展望

    最后,给大家分享一下关于未来工作,我们的一些思考与规划,还不是太成熟,抛出来和大家探讨一下。

    4.1. 端到端的实时流处理

    什么是端到端?一端是采集到的原始数据,另一端是报表 / 标签 / 接口这些对数据的呈现与应用,连接两端的是中间实时流。当前我们基于 SQL 的实时流处理,源表是 Kafka,目标表也是 Kafka,统一经过 Kafka 后再导入到 Druid/ES/HBase。

    这样设计的目的是提高整体流程的稳定性与可用性:首先,kafka 作为下游系统的缓冲,可以避免下游系统的异常影响实时流的计算(一个系统保持稳定,比起多个系统同时稳定,概率上更高点);其次,kafka 到 kafka 的实时流,exactly-once 语义是比较成熟的,一致性上有保证。

    然后,上述的端到端其实是由割裂的三个步骤来完成的,每一步可能需要由不同角色人去负责处理:数据处理需要数据开发人员,数据导入需要引擎开发人员,数据资产化需要产品开发人员。

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    我们的平台能否把端到端给自动化起来,只需要一次 SQL 提交就能打通处理、导入、资产化这三步?在这个思路下,数据开发中看到的不再是 Kafka Table,而应该是面向场景的展示表 / 标签表 / 接口表。比如对于展示表,创建表的时候只要指定维度、指标等字段,平台会将实时流结果数据从 Kafka 自动导入 Druid,再在报表系统自动导入 Druid 数据源,甚至自动生成报表模板。

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

     

    4.2. 实时流的血缘分析

    关于血缘分析,做过离线数仓的朋友都很清楚它的重要性,它在数据治理中都起着不可或缺的关键作用。对于实时数仓来说也莫不如此。我们希望构建端到端的血缘关系,从采集系统的接入通道开始,到中间流经的实时表与实时作业,再到消费数据的产品,都能很清晰地展现出来。基于血缘关系的分析,我们才能评估数据的应用价值,核算数据的计算成本。

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

     

    4.3. 离线 - 实时数仓一体化

    最后提一个方向是离线实时数仓的一体化。我们认为短期内,实时数仓无法替代离线数仓,两者并存是新常态。在离线数仓时代,我们积累的工具体系,如何去适配实时数仓,如何实现离线与实时数仓的一体化管理?理论上来讲,它们的数据来源是一致的,上层抽象也都是 Table 与 SQL,但本质上也有不同的点,比如时间粒度以及计算模式。对于数据工具与产品来说,需要做哪些改造来实现完全的一体化,这也是我们在探索和思考的。

     

    基于Flink构建的实时数据仓库,这才是OPPO数据中台的基础

    展开全文
  • 稳定性全系列(一)——如何做好系统稳定性建设

    千次阅读 多人点赞 2019-12-24 00:49:37
    三、稳定性建设四要素 第一要素:人 第二要素:工具 第三要素:预案 第四要素:目标 四、稳定性建设四个方向 第一个方向:根基要抓牢(45%) 第二个方向:工作在日常(30%) 第三个方向:预案是关键(15%) ...

    目录

    一、背景介绍

    二、故障源的分类

    三、稳定性建设四要素

    第一要素:人

    第二要素:工具

    第三要素:预案

    第四要素:目标

    四、稳定性建设四个方向

    第一个方向:根基要抓牢(45%)

    第二个方向:工作在日常(30%)

    第三个方向:预案是关键(15%)

    第四个方向:容量是核心(10%)

    五、稳定性建设本质

    六、总结


    一、背景介绍

    在移动互联网时代,用户群的积累比之前更容易,但同样,也会因为糟糕的用户体验,而快速流失用户,哪怕是号称独一无二的12306网站,也在不断优化系统来提升用户体验;而在后移动互联网的物联网时代,软件工程师需要和硬件工程师配合,来保证提供的服务稳定和可靠。对,我们的产品就是为了实现用户价值,并提供非凡用户体验!

    如果说良好用户体验是增长的基础,那么良好的操作性、稳定的使用体验就是用户体验的基础,排除掉软件可操作性(这一块需要依靠专业的设计师),剩下的就是客户端(这里的客户端包括各种小程序、WebApp、H5页面等)和服务端,这一切都基于我们软件工程师来构建可靠、稳定的软件系统。 然而,随着我们服务的用户量越来越多,服务复杂度也越来越高,我们的系统为了可维护性,也会在业务架构和系统架构上进行调整,现在流行的微服务架构也因此应运而生。然而微服务架构也并不是没有副作用,例如它会增加维护成本和系统稳定性建设的成本。

    那么,什么是系统稳定性?这里我们引用百度百科的定义:系统稳定性是指系统要素在外界影响下表现出的某种稳定状态。为了方便,本文阐述的系统主要指软件系统。那么如何衡量系统稳定性的高与低呢?一个常用的指标就是服务可用时长占比,占比越高说明系统稳定性也越高,如果我们拿一整年的数据来看,常见的4个9(99.99%)意味着我们系统提供的服务全年的不可用时长只有52分钟! 它其实是一个综合指标,为什么这么说?因为我们在服务可用的定义上会有一些差别,常见的服务可用包括:服务无异常服务响应时间低服务有效(逻辑正确)服务能正常触发等。

    二、故障源的分类

    系统的故障源一般可以分为两大类,一类是人为因素,另一类是自然因素

    常见人为因素导致的故障如下:

    人为因素我们要尽可能的事前(故障发生前)避免,因为这些原因引发的事故很可能会导致数据丢失或错乱、资金受损等较严重后果,而且除了重启或修复后重新上线外没有过多有效的止损手段。人为因素导致的故障往往会导致软件工程师的内心受到严重打击,工作和专业能力受到质疑,造成“人财两空”的后果,“我拼了老命来产出,结果却给自己挖了个坑”是故障责任人内心的真实写照。

    我们再来说说自然因素,自然因素受很多客观因素的影响,往往不受控制,无法避免。

    常见的自然因素导致的故障如下:

    自然原因导致的故障可大可小,虽然无法避免,但由于没有第一责任人,避免了“人性拷问”,软件工程师可以和运维部、安全部的同学协作起来处理故障。

    三、稳定性建设四要素

    “如果事情有变坏的可能,不管这种可能性有多小,它总会发生。”,残酷的墨菲定律预示着我们对自己系统提供的服务不要太乐观,接下来,我们说说如何建设系统稳定性,人为因素的根源一方面是专业能力不足,经验不足,另一方面很多都是无心之失,所以需要通过流程、规范来保住“底线”,减少人为因素导致的故障,而自然因素导致的故障往往具有突发性,需要联合多个团队协作来解决故障。

    稳定性建设四要素工具预案和目标

    第一要素:人

    我们先来说“人”这一要素,它需要回答如下5个问题:

    • 谁应该参与稳定性建设?

    • 如何降低犯错的概率?

    • 如何提高稳定性意识?

    • 如何定责?

    • 如何激励?

    稳定性建设工作需要老板支持,它的实施一般需要开发测试运维安全还有产品等同学参与,而且主导方应该是开发、测试和运维。确定了参与方后,就可以做关键的一步:“参与稳定性建设的每个团队都需要在OKR中背负一部分稳定性指标”,这也是为什么说稳定性建设工作需要老板支持,因为和绩效考核相关。

    稳定性工作,规范先行。OKR的部分只是让各参与方在稳定性方面工作的投入变成合规化,平时如何去参与稳定性建设还得“有迹可循”,对于开发和测试来说就是要根据公司的当前技术体系去建设开发规范提测规范测试规范上线规范、复盘规范等。我们拿和软件开发最相关的开发规范来说,开发规范是对开发人员的要求,让开发人员知道什么是必须要做的、什么是推荐的、什么是应该避免的。通常开发规范至少应该包括如下几个部分:

    编码规范:对外接口命名方式、统一异常父类、业务异常码规范、对外提供服务不可用是抛异常还是返回错误码、统一第三方库的版本、哪些场景必须使用内部公共库、埋点日志怎么打、提供统一的日志、监控切面实现等,编码规范除了能规范开发的编码行为、避免犯一些低级错误和踩一些重复的坑外,另一个好处是让新入职的同学能快速了解公司的编码原则,这点对编码快速上手很重要。这里再重点说一下为什么要统一异常父类和业务异常码,例如虽然不同模块(这里的模块指的是能独立部署的项目)可能有不同的异常父类,比如订单模块的异常父类是OrderException、交易支付模块的异常父类是TradeException,而OrderException和TradeException的父类是BizException(当然BizException是定义在一个通用共公共库中的),而我们也需要去统一异常码,比如200代表正确的返回码,异常的返回码是6位数字(前3位代表模块,后3位代表异常类型),有了统一的异常父类和异常码后,很多切面就都可以由公共库来做了,比如统一的监控、统一的出入口日志打印,统一的异常拦截,压测标识透传、特殊的字段埋点等,千万别小看这些,这些能在未来持续提升研发效率,降低稳定性工作成本。

    公共库使用规范:为了能对通用功能进行定制化改造和封装,公司内部肯定会有一些公共库,例如日志库、HTTP库、线程池库、监控埋点库等,这些库都“久经考验”,已经被证实是有效且可靠的,这些就应该强制使用,当然为了适应业务的发展,这些公共库也应该进行迭代和升级。

    项目结构规范:为了贯彻标准的项目结构,一方面我们需要为各种类型项目通过“项目脚手架”来创建标准的项目结构原型,然后基于这个项目原型来进行开发,统一的项目结构一个最显著的好处是让开发能快速接手和了解项目,这种对于团队内维护多个项目很重要,人员能进行快速补位。

    数据库规范:数据库连接资源堪比CPU资源,现在的应用都离不开数据库,而且通常数据库都属于核心资源,一旦数据库不可用,应用都没有太有效的止损手段,所以在数据库规范里,库名、表名、索引、字段、分库分表的一些规范都必须明确,这里特别提一点,就是分表数量不要用2的幂(比如1024张表,很多人认为使用2的幂分表数在计算分表时用位运算会更快,但这个开销相比数据库操作其实可以忽略),而应该用质数(比如最接近1024的质数应该是1019),采用质数分表数能让数据分的更均匀

    这会引发另一个问题,那就是我们有这些规范,那么如何让开发来知晓和遵守?一方面是设定合理的奖惩机制(例如由于没有遵守规范而引发的线上事故要严惩),另一方面就是——考试!没错,就是考试,将这些规范和历史的线上事故整理成试题,让新老开发定期去考试,考试是一种传统的考核机制,我们可以把规范和公共库的更新部分,也及时加入到考试试题中,来督促大伙及时学习。

    有了OKR、规范和考核机制,加上我们定期宣导,相信各成员的稳定性意识会有显著提高。

    事故定责一般是比较复杂的过程,除非事故原因非常简单明了,但实际上事故原因常常涉及多个团队,如果责任分摊不合理,难免会引发跨团队的争吵,合理的做法是引入第三方稳定性团队来干预,例如滴滴的星辰花团队,星辰花会撰写定责指南,并制定一些相关流程机制。

    当然,如果达成稳定性年度目标,也应该对这些团队进行适当表彰。

    第二要素:工具

    工具意味着手段,要做好稳定性建设,强大的支持工具和平台是不可缺少的,常见的工具和平台包括:日志采集分析检索平台(例如滴滴的Arius)、监控告警平台(例如滴滴的Odin Metrics)、分布式追踪系统(例如Google的Dapper、滴滴的把脉平台)、自动化打包部署平台(例如滴滴的One Experience)、服务降级系统(例如滴滴的SDS)、预案平台(例如滴滴的911预案平台)、根因定位平台(记录所有故障发生前所有系统变更事件)、放火平台等。

    强大的工具能回答如下3个关键问题:

    • 我们能做什么?

    • 我们能做到什么程度?

    • 如何降低稳定性工作成本?

    工具本质上是手段,它能降低我们在稳定性工作上投入的成本,例如有了监控告警平台,我们就不需要专人时刻盯着日志或大盘,有了分布式追踪系统,问题定位会更有效率,有了降级系统,一些故障能自动控制和恢复,不用我们再上线一次。要想做好稳定性工作,工具必不可少,没有工具,稳定性建设总是低效的。

    其实公司内建的公共库也属于工具的一种,像滴滴内部的公共库,业务系统接入Odin Metrics和把脉几乎不要做额外的工作(当然接入把脉需要提日志采集工单,头疼),千万不要吝啬在工具方面的投入,很多开源框架可以拿来用或拿来参考,工具和平台可以内部进行互通和联动,这样可以建成一站式的稳定性工作平台。

    第三要素:预案

    紧急预案是我们在故障发生时的行动指南,这在故障可能涉及到多个团队、故障进展需要周知到多个团队时特别有用。

    完善的紧急预案能回答如下4个问题:

    • 故障发生时我们该做什么?

    • 谁来指挥?

    • 谁来决策?

    • 我们如何善后?

    当一个不那么容易定位的故障发生时,你应该做的第一件事应该是什么?这在不同公司、同一个公司同一个团队的不同成员恐怕都会给出一个不同的答案,而在滴滴内部,我们大多会第一时间通知团队内其他成员、Leader(寻求帮助)和客服、上游业务开发等可能的影响方 (问题周知)。当这一步做完以后,一般就会有一部分同学加入问题排查和止损,然而介入的人多了,排查和止损的效率不一定会成比例的提升,这时候协调者很重要,协调者要避免介入的同学在做重复工作,协调者还需要持续和客服、上游业务开发等影响方沟通(我们曾经就经历过由于问题排查问题进度没有及时有效和业务方沟通,业务方将故障升级的case)。对于排查问题和止损的同学来说,要操作某个开关,有可能还要去查代码看开关的名字是什么,还有可能关掉一个功能需要操作多个开关,这些在紧急时刻都有可能由于慌乱而出错。而且什么条件下才能操作开关,谁能决定应不应该操作开关,恐怕在当时很难去做最正确的事情,而这一切,没错,都应该提前写到预案中!!!

    紧急预案一般要包含如下内容:

    1. 故障发生时应该通知哪些人或团队。

    2. 如何选出协调者,什么情况下该选出协调者。

    3. 协调者的职责有哪些。

    4. 需要操作开关时,谁有权利决策。

    5. 常见故障以及对应的止损方式。

    6. 止损的原则是什么,什么是最重要的。

    7. 善后方案谁来拍板。

    预案很重要,完备的预案能降低故障定位和止损的时间,提升协作效率。

    第四要素:目标

    如何衡量稳定性建设工作是有价值的?如何考核稳定性建设工作达没达标、做的好不好?这些都能在稳定性建设的目标中找到答案。

    稳定性建设的目标主要用来回答如下2个问题:

    • 稳定性工作的价值是什么?
    • 稳定性工作如何考核?

    稳定性建设工作的价值不仅需要团队所有成员认可,更重要的是需要老板的认可,没有老板的认可,稳定性建设工作只是团队内部的“小打小闹”,难以去跨团队来体系化运作。

    稳定性建设工作的年度目标可以拿服务可用时长占比来定,也可以拿全年故障等级和次数来定,像滴滴这边,星辰花将故障等级分成了P0至P5六个等级,P0、P1、P2属于重大事故,是需要消耗服务不可用时长的(根据全年定的服务可用时长占比指标来计算出某个部门的全年服务不可用总时长),一旦年底某个部门的全年服务不可用时长超过年初设定的阈值,就会有一定的处罚,并影响部门绩效(之前达标也有奖励,但后来奖励取消了)。

    这里做一个汇总:

    四、稳定性建设四个方向

    前面我们提到的稳定性建设工作的四个关键点,但对如何落地阐述的并不多,这里结合作者多年的稳定性建设工作经验,谈谈稳定性建设工作的四个方向。

    第一个方向:根基要抓牢(45%)

    稳定性建设工作重在预防,根据作者多年的工作经验,至少6成线上故障都可以在预防工作中消除,我们需要投入45%的精力来做根基建设,所谓根基建设,就是把开发测试上线这三大流程做透!!下面列了几个关键点:

    Code Review:CR其实是一个很重要的环节,当一个开发整个编码和提测都可以自己闭环搞定时,时间一长就容易产生懈怠,这时候写隐患代码的几率会大大提高,CR的过程并不是diss的过程,这个一定要在团队内拉齐,相反,CR是一次很好的团队沟通和塑造自己影响力的机会。我就很佩服那些代码写得质量高并且能把整个流程讲顺的人。我们团队的项目都接入了全流程(例如滴滴的鲲鹏),分支合master必须要其他人Review,但这是“离线”的,没有代码作者讲的过程,效果没有几个人坐在小黑屋讲的好,只是更快而已。我们团队规定,大于等于4人日的项目需要进行小黑屋CR。CR还可以让其他成员来检测该代码实现是否遵循了开发规范,毕竟“先污染后治理”的成本太高,记住,CR一定是一个相互学习的过程

    设计评审:再也没有比糟糕的设计更有破坏力的东西了,设计评审和CR可以放在一起做,先评审设计再进行CR,有人就会说,都编码完了才进行设计评审是不是晚了?其实这要看情况而定,如果团队内部经常产出“糟糕设计”,那么我觉得设计评审就应该编码之前来做,但如果团队成员专业能力和经验都还不错,那么我们允许你再编码之后再做设计评审,而且编码的过程其实也是设计的过程,可以规避提前设计而导致后续编码和设计不一致的问题。设计评审的原则是,既要讲最终的设计方案,也要讲你淘汰的设计方案!

    提测标准:写完代码就可以提测了?当然不是,至少得完成补充单元测试、完成自测、完成开发侧的联调、通过测试用例(如果QA提前给了测试用例的话)、补充改动点和影响点(便于QA评估测试范围)、补充设计文档(对,现在滴滴的QA养成了读代码、看设计的习惯)这些步骤才能说可以提测了。当然,提测标准理论上是QA同学来定义的。

    测试流程:测试的全流程覆盖最好能做到全自动化,很多测试用例可以沉淀下来,用来做全流程回归,当然这需要系统支持。我也见过太多犹豫QA没精力进行全流程回归而导致问题没有提前发现而产生的事故,所以测试的原则是尽可能自动化和全流程覆盖,让宝贵的人力资源投入到只能人工测试的环节。

    上线流程:上线也是一个风险很高的操作,我们简单统计了19年的上线次数,光我们团队负责的系统就上线了五百多次。部署平台需要支持灰度发布、小流量发布,强制让开发在发布时观察线上大盘和日志,一旦有问题,能做到快速回滚(当然要关注回滚条件)。我们这边的做法是先小流量集群灰度(我们把单量少的城市单独做了一套小流量集群),再线上灰度,确保哪怕出问题也能控制影响。

    第二个方向:工作在日常(30%)

    俗话说养兵一日,用兵一时,平日的养兵其实也非常重要,这一方向我们需要投入30%的精力,需要我们做到如下几点:

    人人参与:团队内人人都需要参与稳定性建设工作,稳定性工作不是某个人的事情,所以我会要求所有人的OKR中都有稳定性建设的部分。做toC研发的同学,都养成了带电脑回家的习惯,哪怕是加班到晚上12点,当然在外旅游也带着电脑,手机24小时保持畅通;稳定性已经成为了生活本身。

    持续完善监控告警:监控告警就是我们发现故障的“眼睛”和“耳朵”,然而大多数监控告警都需要我们手动一个个配置,随着业务的不断迭代,会有很多新接口需要添加监控,一些老的监控的阈值也需要不断调整(否则大量告警会让人麻木),所以监控告警是一个持续优化的过程。

    及时消灭线上小隐患:平日发现的一些问题要及时消灭,很多线上事故在事前都有一定预兆,放任平时的一些小问题不管,到后面只会给未来埋上隐患。

    跨团队联动:稳定性肯定不是一个团队的事情,一些降级方案可能涉及多个团队的工作,所以定期的跨团队的沟通会议是很有必要的,要大伙一起使劲才能把事情做好。

    复盘机制:对出过的线上事故一定要及时的进行复盘,通过复盘来发现我们现有流程、机制是否有问题,让大伙不要踩重复的坑,并不断完善我们的紧急预案。复盘虽然属于事后的行为,但很重要,我们需要通过复盘来看下次是否能预防此故障,或者是否能更快的定位和止损。

    会议机制:稳定性周会、稳定性月会,我们通过各种定期的会议来总结一些阶段性进展和成果,拉齐大家认知,这也是大伙日常稳定性工作露出的一个机会,所以非常重要。

    第三个方向:预案是关键(15%)

    我们通常都会忽视预案的作用,因为预案整理起来确实比较麻烦,预案也需要随着功能的迭代而不断更新,否则将很容易过时,而且预案在平日非故障期间也确实没有发挥作用的机会。但我们不得不承认紧急预案相当重要,特别是当我们去定位和止损一个比较复杂的线上问题时。

    我们需要在预案的制定和演练上投入15%的精力,可以从如下三个方面着手:

    分场景制定和完善紧急预案:如果我们还没有紧急预案,那第一步就是分类分场景整理下历史上经常发生的线上事故,例如MySQL故障预案、MQ故障预案、发单接口故障预案等。而且预案有可能会被多人查看,一定要清晰易懂,如果某些预案是有损的,需要把副作用也描述清楚。

    通过放火平台来验证预案:借助放火平台和服务降级系统,我们可以通过主动给主流程服务的非核心依赖注入故障,来验证系统在遇到非核心依赖发生故障时,核心服务是否仍旧有效,如果某些预案无法做成系统自动的(比如某些预案有一定的风险或副作用),也可以在预发环境来验证该预案是否能达到预期效果,防止真正故障发生时“手生”。预案就是在这种不断演练过程中来优化和完善的,这样的预案才是动态的,才是活生生有效可靠的!

    第四个方向:容量是核心(10%)

    我们知道木桶效应,一个木桶能装多少水取决于最短的那块板,在分布式系统中也是如此,我们需要摸到分布式系统中的这块“短木板”才能知道整个系统的吞吐量(容量),如果我们没有这个值,老板问你明年单量要Double,问你要预算,要规划你凭什么给?最准确的容量预估方案就是——线上全链路压测。至于滴滴是如何做线上全链路压测,后续我会有专门的文章来阐述。

    我们继续探讨容量这个话题,我们应该投入10%的精力来摸容量、扩容量、水位预警等。容量也相当重要,根据我的经验,线上有大约10%的故障和容量有关,当遇到这种问题,最有效的解决方案就是扩容!关于容量,我们在日常需要做到如下三点:

    常态化的全链路压测:线上全链路压测必须定期举行,特别的在有大促活动时,也需要提前进行一次。因为随着业务的快速迭代,系统老的瓶颈可能消失,新的瓶颈可能出现,所以之前的全链路压测的结果将失效,我们需要定期去摸这个线上环境的这个阈值。

    定期进行扩容演练:在滴滴内部,我们会定期进行弹性云扩容演练,这在紧急情况下很有用,我们就曾经遇到过弹性云扩容比修改阈值重新上线更快解决问题的case。

    多活建设:我们知道多活主要是为了容灾,但其实多活实际上也从整体上增加了系统容量,所以也属于容量扩充的范畴,一旦某个机房遇到瓶颈,我们可以分流到其他机房。当然多活建设需要一定成本,业务量大到一定程度才需要投入。

    说了这么多,我们也放张图来进行总结:

     

    五、稳定性建设本质

    就像我们做项目要“面向风险”编程一样,系统稳定性建设的目的其实就是为了应对未来的风险,和未来风险做对抗(哪怕我们有些手段将未来的风险变小)。如果非让我们探究稳定性建设的本质,我觉得稳定性建设的本质是将系统和系统间未来不可控的因素逐渐变为可预见,可控的因素,并着手去一一解决的一个过程。

    六、总结

    做稳定性建设一定要结合公司或组织的实际情况,量入为出,最合适的方案才是最好的方案。结合咱们上述讨论的几点,我们可以画出稳定性建设的房子,如下:

    希望我们能像建筑师一样,给业务构建一套稳定、可扩展、性价比高的房子!!!

     

     

    其他稳定性全系列文章:

    稳定性全系列(二)——如何做线上全链路压测 https://blog.csdn.net/manzhizhen/article/details/104439629

    展开全文
  • 数据中台(七) 数据中台架构

    千次阅读 多人点赞 2020-09-23 12:59:15
    数据资源是原材料,数据资产是商品,数据开发就是商品生产流水线,通过这条流水线将数据资源转换成数据资产。 为了降低开发难度,提高开发效率,需要一个可视化的开发平台,主要包括以下产品功能: 数据体系 ...
  • 数据库, 数据仓库, 数据集市,数据湖,数据中台

    千次阅读 多人点赞 2019-02-22 16:21:47
    数据仓库和数据集市的区别 作者:修鹏李 出处:CSDN 大数据:数据仓库和数据库的区别 作者:南宫蓉 出处:简书 第一篇:数据仓库概述 第二篇:数据库关系建模 作者:穆晨 出处:CNBLOS 摘要 本文简要介绍...
  • 数据分析之数据预处理、分析建模、可视化

    万次阅读 多人点赞 2020-08-08 15:03:21
    数据预处理:数据清洗、数据集成、数据规约、数据变换; 数据分析模型:对比分析、漏斗分析、留存分析、A/B测试、用户行为路径分析、用户分群、用户画像分析等; 数据分析方法:描述统计、假设检验、信度分析、相关...
  • 软件测试工程师经典面试题

    万次阅读 多人点赞 2018-10-27 23:55:52
    前期面试实习生或者一年左右的岗位,问的也主要是一些基础的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作系统的使用、软件测试框架的问题,测试环境搭建问题、当然还有一些自动化测试和性能测试的...
  • 运维工作梳理

    千次阅读 多人点赞 2019-12-19 07:44:12
    服务故障管理:包括服务的故障预案设计,预案的自动化执行,故障的总结并反馈到产品/系统的设计层面进行优化以提高产品的稳定性 服务容量管理:测量服务的容量,规划服务的机房建设,扩容、迁移等工作 ...
  • 数据中台】数据仓库设计规范

    千次阅读 2020-02-29 11:37:49
    规范化模型分层、数据流向,从而降低研发成本,增强指标复用,并提高业务的支撑能力。 1.1.模型分层 为了保证数据层的稳定又要屏蔽对下游的影响,并且要避免链路过长,我们将分层进行统一定义为四层: ODS...
  • 数据可视化平台理论与实践

    万次阅读 2017-08-02 09:32:26
    前面说完了大数据开发平台的核心组件,作业调度系统,接下来讨论一下大数据开发平台的脸面之一,数据可视化平台。
  • Linux C/C++ 学习路线

    万次阅读 多人点赞 2019-07-04 20:41:56
    大的功夫去理解清楚这些,工作中,对于真实线上系统的稳定性、对于底层技术的 理解是有帮助的,操作系统是面试中常见问题之一。 3、计算机网络:OSI 七层模型和 TCP/IP 四层体系结构,TCP 三次握手与四次挥手、 ...
  • 基于大数据挖掘----浅谈大数据与大数据挖掘

    万次阅读 多人点赞 2019-01-21 14:38:51
    基于大数据挖掘----浅谈大数据与大数据挖掘 一、大数据技术 1.1大数据的定义 大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现...
  • 稳定性(Reliability)、可用性(Availability)、可维护性(Maintainability),是三个有关联的概念、合称RAM,较为容易混淆,因此本需要特别说明一下。依据《ISO IEC 25010-2011 SQuaRE》标准,可将稳定性理解为”...
  • 2019工程伦理慕课答案(2019秋)习题及期末答案

    万次阅读 多人点赞 2019-11-08 18:19:53
    第一章习题(下) ... 自主 创造 社会 确定 多选题 (1points) 下列哪项是工程的完整生命周期中的环节 计划 设计 评估 完成 判断题 (1/1 point) 计划、设计、建造...
  • 消息中间件MQ与RabbitMQ面试题(2020最新版)

    万次阅读 多人点赞 2020-03-01 11:11:21
    文章目录为什么使用MQ?MQ的优点消息队列有什么优缺点?RabbitMQ有什么优缺点?你们公司生产环境用的是...rabbitmq 的使用场景RabbitMQ基本概念RabbitMQ的工作模式如何保证RabbitMQ消息的顺序?消息如何分发?消...
  • 软件测试面试题(面试前准备篇)

    万次阅读 多人点赞 2019-09-27 10:42:37
    提取部分一级用例提交研发自测,研发自测通过后开开始执行一轮系统测试。 测试过程中发现并提交、跟踪问题。 问题修复后进行回归测试。 一轮测试完成后对修复包进行冒烟测试,测试通过则进行二轮测试。 二轮...
  • FPGA现状

    万次阅读 多人点赞 2019-07-16 19:51:42
    之前,FPGA主要有3大应用方向:(1)通信设备的高速接口电路设计,FPGA可以用来做高速信号处理,一般如果AD采样率高,数据速率高,这时就需要FPGA对数据进行处理,比如对数据进行抽取滤波,降低数据速率,使信号容易...
  • 数据仓库是面向主题的(Subject-Oriented)、集成的(Integrated)、包含历史的(Time-variant)、相对稳定的(Nonvolatile)、面向决策支持的(DecisionSupport)面向全企业的(EnterpriseScope)最明细的数据存...
  • 大数据开发平台-数据同步服务

    万次阅读 2017-09-21 13:38:35
    我们没有真正使用过Tungsten的产品,只是在架构和代码方面有过一些调研了解,总体感觉,作为商业解决方案,架构完善,但是相对复杂,一些业务流程方案是定制化的,对关系型数据库自身的数据同步和管理以及稳定性应该...
  • 数据应用到各个角落,除了之前可以支撑的决策分析以外,大数据与线上事务系统(OLTP)的联动场景非常多,比如我们在电商平台查询个人所有历史订单,再比如一些刷单、反作弊的实时拦截,以及一些实时推荐等,这些都是...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    能够最早的开展测试工作,降低修复成本,防止缺钱被扩大化(注意:加以重视:1公共的模块2全局数据结构3重要的使用频率较高的功能4以往项目经常出错的严重问题5复杂度较高的模块6当开发人员业务不熟悉编码不熟练...
  • 从0到1设计一个高可用数据对账系统

    千次阅读 2019-05-16 18:27:27
    一、业务系统设计概述 1、什么是业务系统 ...C端系统偏重用户体验,强调感性,持续的数据分析优化,同一个按钮不同的摆放位置都要精心设计、论证,服务对象是个人;B端系统偏重流程、模块化,...
  • 数据仓库方案选型

    万次阅读 2017-11-07 10:43:20
    总体框架通常采用三层体系结构:前端工具(顶层)-OLAP服务器(中间层)-数据仓库服务器(底层)。底层的数据仓库服务器通常是一个关系数据库系统(各种表关联的sql统计会更方便一些,非关系型数据库目前在这方面还是...
  • Spark 高级数据分析(第2版)

    千次阅读 2018-11-06 11:55:07
    本书由业内知名数据科学家执笔,通过丰富的示例展示了如何结合 Spark、统计方法和真实世界数据集来解决数据分析问题,既涉及模型的构建和评价,也涵盖数据清洗、数据预处理和数据探索,并描述了如何将结果变为生产...
  • 建模方法、建模工具、血缘关系、维度退化、一致维度、元数据管理 开发规范 脚本注释、字段别名、编码规范、脚本格式、数据类型、缩写规范 流程规范 需求流程、工程流程、上线流程、调度流、调度和表生命周期...
  • 测试开发需要学习的知识结构

    万次阅读 多人点赞 2018-04-12 10:40:58
    努力成为一个优秀的测试开发从业者,加油!... - 假装在测试的回答 - 知乎白盒与黑盒测试什么区分1、黑盒测试 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检...
  • 数据仓库架构(内含PPT)

    千次阅读 多人点赞 2020-11-18 07:00:00
    大数据篇:一文读懂@数据仓库1 网络词汇总结1.1 数据中台数据中台是聚合和治理跨域数据,将数据抽象封装成服务,提供给前台以业务价值的逻辑概念。数据中台是一套可持续“让企业的数据用起来”...
  • 部分内容摘自 【成于微言】的微信公众号文章(来源:帆软数据应用研究院 作者:汪建辉),关于数据治理的思考来自于之前七年多的银行信贷科技从业经验,因为是在乙方,所以接触的银行相对多一些,做如下思考的分享:...
  • ​ 注:数据分析主要侧重产品sence与Hive使用,也会有少量数据结构、大数据架构与算法相关内容(会放至其它相应篇中)。以下试题为作者面试过程中被经常问到以及日常整理的通用高频面经,包含题目,答案与参考文章,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 93,276
精华内容 37,310
关键字:

数据研发数据稳定性