设计是数字化系统落地生根的关键环节,数字化系统的胎儿由设计环节孕育。
为何说设计是胎儿呢?
因为如果说业务是受精卵,是本源,那么需求就是受精卵裂变的过程,设计阶段完成了生命的初步定型,胎儿的基本要素大脑、心脏、四肢、内脏、性别均已生成,正在等待出生后的快速勃发。
因此,高阶设计的内涵是构造数字化系统的大脑、心脏、四肢、皮肤,大脑是总体架构,心脏是数据结构,四肢是组件或服务以及应用系统,皮肤或者外表是UI或者展示。
我们同样采取Rational提出的基于面向对象的软件工程RUP方法论,基于RUP方法论,对总体架构、数据结构、组件和服务、应用功能、应用展示进行设计,从而构造一个完美的产品蓝图和产品模型。
同时,高阶设计需要遵循系统论,先宏观后微观,先抽象后具体,层层细化。
一、如何规划数字化系统总体架构?
总体架构涵盖三个视角的架构,其一,建设者的视角,即从建设的视角审视,数字化系统的整体框架和内部关系,这决定了数字化系统的建设内容。其二,使用者视角,即从用户的视角审视,数字化系统的服务框架和内部关系,其三,管理者视角,即从管理和运维的视角审视,数字化系统的管理和运维框架及其内部关系。
建设者视角的总体架构,包含逻辑架构、技术架构、数据架构、物理架构。逻辑架构是说明整体框架、子系统、模块及其内部关系,侧重功能角度。技术架构是建设数字化系统所采用的技术路线、技术组件、技术框架,侧重技术实现角度。数据架构是从数据的来源、采集到存储、处理以及利用的整体过程,侧重数据资源角度。物理架构是数字化系统的物理部署框架,包含负载、网络、存储、服务器、安全、软件集群等,侧重系统的物理形态角度。
架构表达包括层次架构、洋葱架构等,层次架构着重数字化系统的组成部分间的层次关系。洋葱架构则着重与核心-外围的依赖耦合关系,以保险系统为例,处于核心位置的是领域模型,中间是应用层,外围是适配层。
最佳实践是,通过需求阶段输出的对象分析,设计数据结构,通过需求阶段输出的系统用例定义组件和服务,或者从应用系统中抽取共享的功能同样可以定义组件或者服务。通过需求阶段的需求边界、高层用例的分类聚合定义子系统及子系统的逻辑关系和集成关系,构建数字化系统逻辑架构。
如下所示:
层次架构示意
依据逻辑架构,研究需要的技术路线、技术组件、技术框架,并构建技术架构。以保险营销系统为例,如果需要对用户进行精准互联网营销,需要通过互联网、微博、微信采集用户数据、用户活动区域数据和用户的行为数据,对用户进行大数据分析,对用户画像,然后通过微信广告、微博广告精确投放,使潜在用户转化为购买用户。这个系统需要采用大数据平台的技术路线,选择hadoop生态组件包括hdfs、hbase、mapreduce、zookeeper、sqoop、flume等技术组件,以大数据分析平台作为底层支撑平台,完成数据采集、处理、存储、分析的完整过程。
依据对数据的结构类型、分布范围、容量等分析,对数据的生命周期,包括产生、传递、存储、处理、应用等过程进行框架性定义,确定数据架构。如下所示:
数据架构示意
根据数字化系统对于IT基础设施的需求,定义数字化系统物理部署架构。
强调一点,架构设计的关键原则包括稳定、解耦、松耦合、容错。简单、稳定是架构的核心关切。解耦内涵是稳定部分与易变部分分离、核心业务与非核心业务分离、主流程与辅流程分离、应用与数据分离、服务与实现细节分离,松耦合的内涵主要是异步,容错内涵包括服务自治和集群容错,服务自治指的是服务能彼此独立修改、部署、发布和管理。避免引发连锁反应,集群容错指的是应用系统集群,避免单点。
二、如何规划数据结构?
基于需求阶段输出的对象分析,衍生出信息资源,数据结构即信息资源的组织方式。通过对信息资源的分类、分布、存在形态、容量的分析,进行总体的梳理与规划,确定信息资源的描述方式、存储方式、利用方法,最后规划信息资源数据库。
最佳实践是结构化的信息资源采用关系型数据描述,用关系型数据库管理,采用集中式存储设备存储,采用标准关系型数据访问工具进行利用。
视频、语音、图片等非结构化信息资源采用对象、列式或者文件数据库进行管理,采用分布式存储设备存储,采用文件或者对象访问工具进行利用。
最后,规划信息资源的数据库工作包括划库、切分子库、定结构、数据管理等。
如何划库?
根据业务主题、数据类型等划分不同的数据库,以保险业务为例,由于用户、保单流程、理赔记录等业务数据是结构化数据,采用关系型数据库存储,所以建立业务数据库,而电子保单或者纸质保单影印件是非结构化数据,采用文件数据库或者对象数据库存储,所以建立保单影印件数据库。
如何切分子库?
根据业务主题、用途或数据容量切分子库,可以依据业务主题切分子库,比如产险和寿险建立独立的子库,可以依据业务用途切分子库,比如保险业务库和保险统计分析库建立独立的子库等,可以将数据容量过大的数据库横向或者纵向切割。
如何定结构?
定结构主要依据需求阶段输出的对象模型中的对象属性而定,同时参考约束和限制,保证系统管理所需的管理属性。
需要注意的是,规划数据结构的原则包括:统一数据视图(保证数据的及时性、一致性、准确性、完整性)、数据、应用分离(应用系统只依赖逻辑数据库)、数据异构(源数据和目标数据内容相同时,做索引异构。内容不同时,做数据库异构。如订单买家库和卖家库。)、数据读写分离(访问量大的数据库做读写分离、数据量大的数据库做分库分表、不同业务域数据库做分区隔离)。
三、如何设计组件和服务?
组件服务是能够及时地执行正确的处理关健业务过程的应用程序。
为何需要组件服务呢?主要原因是需要降低系统的耦合度、共享、高性能和高稳定性。大型系统的复杂结构使得系统运行管理难度大幅升高,采用组件服务,将降低程序的耦合度,更易共享,通过高强度的组件应用,将提升组件的稳定性,并通过特殊的性能优化,提高组件服务运行的性能。
组件服务的目标是独立、完整、自由组合,尽可能把设计与开发中的元素独立化,使组件服务具备完整的局部功能,通过自由组合来构成整个系统。
所以,组件服务设计的关键原则包括可复用、松耦合、可治理,可复用内涵是复用粒度是有业务逻辑的抽象服务,而且服务引用只依赖于服务抽象。松耦合的内涵是跨业务域调用,尽可能异步解耦,而且相对稳定的基本服务与易变流程服务分层,可治理的内涵是组件服务可开关、可监控等。
最佳实践是,通过对系统用例的实现,将标准、通用的用例设计为组件或者服务,供子系统共享,以保险系统为例,工作流引擎、报表引擎、搜索引擎、cms等,均可作为组件服务进行研发或者采购。
强调一点,组件服务采用洋葱架构设计将更清晰,因为组件的外部交互服务是组件对外通讯的接口,强大的外部交互服务能力是组件服务的关键价值。
四、如何设计应用系统?
应用系统是数字化系统的核心业务服务功能,数字化系统的业务价值主要通过应用系统功能实现。
应用系统总体设计的内涵包括应用架构蓝图、子系统以及模块的边界和定义、子系统以及模块间的关联关系等。子系统或者模块的设计,要体现出同一个业务职能单元中不同业务场景和操作的集合。
设计师依据需求阶段输出的高层用例进行子系统切割,根据用例的耦合度和聚合度进行模块划分,通过使用用例的实现定义功能点。
功能点设计的内涵包括角色、功能点、功能逻辑、数据流向、异常处理等。
最佳实践是通过使用用例设计数字化系统的服务功能,通过运营管理用例和运维用例设计数字化系统的管理功能,通过外部服务用例设计系统的外部服务接口。
五、如何设计原型?
原型是数字化系统的外延展示,以高保真的模拟,展示数字化系统的全景。
原型设计的基点是功能设计,辅以UI设计、页面流、数据流设计,全流程、全覆盖的模拟系统运行。
最佳实践是基于需求阶段输出的流程来定义页面流,即原型的总体框架和页面流转关系,基于应用系统功能设计确定功能的展示页面,通过UI设计,定义页面布局和结构,基于数据结构定义页面元素,完成这一系列的动作后,将所有页面有机的组成一个整体,即可完成页面原型的设计。
总之,高阶设计为用户和建设者精确定位了数字化系统的蓝图、建设方法、技术路线、系统全景视图,是系统从天空落向人间的天梯,助您目标正确、路线正确、执行可控的完成数字化系统建设和运营管理。