精华内容
下载资源
问答
  • 各种系统架构图与详细说明

    万次阅读 多人点赞 2018-09-15 17:49:59
    如上图所示为本次共享资源平台逻辑架构图,上图整体展现说明包括以下几个方面: 1 应用系统建设 本次项目的一项重点就是实现原有应用系统的全面升级以及新的应用系统的开发,从而建立行业的全面的应用系统架构群。...
      1. 共享平台逻辑架构设计

    如上图所示为本次共享资源平台逻辑架构图,上图整体展现说明包括以下几个方面:

    1 应用系统建设

    本次项目的一项重点就是实现原有应用系统的全面升级以及新的应用系统的开发,从而建立行业的全面的应用系统架构群。整体应用系统通过SOA面向服务管理架构模式实现应用组件的有效整合,完成应用系统的统一化管理与维护。

    2 应用资源采集

    整体应用系统资源统一分为两类,具体包括结构化资源和非机构化资源。本次项目就要实现对这两类资源的有效采集和管理。对于非结构化资源,我们将通过相应的资源采集工具完成数据的统一管理与维护。对于结构化资源,我们将通过全面的接口管理体系进行相应资源采集模板的搭建,采集后的数据经过有效的资源审核和分析处理后进入到数据交换平台进行有效管理。

    3 数据分析与展现

    采集完成的数据将通过有效的资源分析管理机制实现资源的有效管理与展现,具体包括了对资源的查询、分析、统计、汇总、报表、预测、决策等功能模块的搭建。

    4 数据的应用

    最终数据将通过内外网门户对外进行发布,相关人员包括局内各个部门人员、区各委办局、用人单位以及广大公众将可以通过不同的权限登录不同门户进行相关资源的查询,从而有效提升了我局整体应用服务质量。

    综上,我们对本次项目整体逻辑架构进行了有效的构建,下面我们将从技术角度对相关架构进行描述。

     

      1. 技术架构设计

    如上图对本次项目整体技术架构进行了设计,从上图我们可以看出,本次项目整体建设内容应当包含了相关体系架构的搭建、应用功能完善可开发、应用资源全面共享与管理。下面我们将分别进行说明。

      1. 整体架构设计

    上述两节,我们对共享平台整体逻辑架构以及项目搭建整体技术架构进行了分别的设计说明,通过上述设计,我们对整体项目的架构图进行了归纳如下:

    综上,我们对整体应用系统架构图进行了设计,下面我们将分别进行说明。

        1. 应用层级说明

    整体应用系统架构设计分为五个基础层级,通过有效的层级结构的划分可以全面展现整体应用系统的设计思路。

    基础层

    基础层建设是项目搭建的基础保障,具体内容包含了网络系统的建设、机房建设、多媒体设备建设、存储设备建设以及安全设备建设等,通过全面的基础设置的搭建,为整体应用系统的全面建设良好的基础。

    应用数据层

    应用数据层是整体项目的数据资源的保障,本次项目建设要求实现全面的资源共享平台的搭建,所以对于应用数据层的有效设计规划对于本次项目的建设有着非常重要的作用。

    从整体结构上划分,我们将本次项目建设数据资源分为基础的结构型资源和非结构型资源,对于非结构型资源我们将通过基础内容管理平台进行有效的管理维护,从而供用户有效的查询浏览;对于结构型数据,我们进行了有效的分类,具体包括政务公开资源库、办公资源库、业务经办资源库、分析决策资源库、内部管理资源库以及公共服务资源库。通过对资源库的有效分类,建立完善的元数据管理规范,从而更加合理有效的实现资源的共享机制。

    应用支撑层

    应用支撑层是整体应用系统建设的基础保障,根据本次招标文件相关需求,我们进行了相关面向服务体系架构的设计,通过统一的企业级总线服务实现相关引用组件包括工作流、表单、统一管理、资源共享等应用组件进行有效的整合和管理,各个应用系统的建设可以右下基于基础支撑组件的应用,快速搭建相关功能模块。

    由此可见,应用支撑层的建设是整体架构设计的核心部分,其关系到本次项目的顺利搭建以及今后区劳动局信息化的发展。

    应用管理层

    在3.3.3图中的设计中,应用管理层有效的承接了我局原有应用系统分类标准,将实际应用系统分成了八个应用体系,在实际应用系统的建设中,我们将全面传承原有应用分类标准规范的基础上实现有效的多维的应用资源分类方法,不仅如此,整体应用系统也可以通过多维的管理模式进行相关操作管理,如按照业务将应用系统进行划分,包括劳动管理和保险管理等。

    应用管理层是实际应用系统的建设层,通过应用支撑层相关整合机制的建立,我们将实现应用管理层相关应用系统的有效整合,通过统一化的管理体系,全面提升我局应用系统管理效率,提升服务质量。

    展现层

    整体应用功能将通过门户方式进行展现,架构分别设计了内网门户和外网门户,不同的应用人员通过登录可以实现相关系统的应用和资源的浏览查询操作。

    1. 3.2准体系规范说明

    大型的应用工程项目的建设必须遵照严格的标准体系建设规范,根据本次项目实际需求,我们通过三个规范体系对项目进行合理的保障,具体包括了安全标准管理系统、标准规范体系以及运行管理体系。

    通过相关标准的制定、安全架构的保障以及管理规范的建设可以保障整体应用系统的设计、搭建、运维等全流程性工作。

    1. 3.3应用用户设计

    通过分析,我们将整体应用系统面向人群分为四类,具体包括广大公众、区内委办局、局内相关部门以及用人单位,不同对象通过访问不同门户可以进行全面的服务保障。

    1. 3.4系统建设总结

    在3.3.3图中对本次项目整体应用系统建设需求同样也进行了归纳,项目整体分为三个主体建设,即:共享信息平台的搭建、原有应用系统的改造以及新的应用系统的搭建。

    共享信息平台的建设旨在全面整合相关应用系统资源,实现有效的浏览、查询检索机制,整体数据通过规范化的元数据管理机制,实现有效的梳理存储,为今后资源的整合奠定基础。不仅如此,在实际项目建设中还将引入商业智能应用模块,实现对共享资源的智能化分析,从而为决策预警等提供有力依据。

    原有业务系统改造则是实现原有应用系统相关流程等的优化配置,并通过有效的数据梳理改造为信息资源的共享奠定良好的基础。本次项目中需要改造系统包括:政务公开系统、办公自动化系统、公众服务系统以及综合管理系统。

    新的业务系统的建设则是要全面提升现阶段我局整体办公效率,继续加强信息化建设,通过更加全面合理的应用系统的建设,提升我局整体服务水平。本次项目需要建设系统包括:业务经办系统、社会保险系统、土地储备系统、企业监督系统、劳动监察系统、劳动关系与仲裁系统、就业和失业管理系统以及综合管理系统。

    1. 3.5应用接口管理

    本次项目建设还涉及到整体应用系统与外部相关系统接口的管理,实际应用接口包括与税务接口、与财政部门接口、与民政部门接口、与基层单位接口与公安部门接口以及与其他部门的接口。

    通过有效的接口管理机制,实现资源的互联互通,从而更加有效的提升我局无纸化办公机制,全面加强我局整体工作效率。

      1. 系统整体逻辑架构

    规划一个成熟先进的北京市卫生人才交流服务中心网站平台系统框架是一切技术工作的先决条件,是奠定系统性能的基础,是至关重要的。

    因此,本项目建设应首先考虑设计和建立一个统一的北京市卫生人才交流服务中心门户网站系统技术体系,能够支持政府信息资源的整合、管理及门户网站群的建设,提供统一的内容管理、资源整合、安全管理构架,并提供对应用服务的统一调度和管理,同时,系统体系结构应分层组织,系统功能模块化,系统集成松耦合,方便业务应用的修改、重用和部署,满足系统未来弹性扩展的要求。

    系统逻辑框架如下图所示。

    整体系统包括三个体系一个平台进行全面保障,其中三个体系包括:

    1. 运行管理体系;
    2. 标准规范体系;
    3. 安全保障体系;

    具体平台根据新闻局实际需求建设网站群支撑管理平台,平台保障了相关招标文件中的采集管理、内容管理、统计管理、安全管理等功能需求,对于整体应用平台的支撑则通过中科软多年门户建设经验总结完成的相关应用组件包括工作流管理、元数据管理、电子表单等进行保障。

        1. 各主要组成部分概要描述
    1. 数据层

    对结构化数据和非结构化数据进行调度和存储。结构化数据包括:XML 和DBMS。非结构化数据包括:文本文件、音视频文件、office 系列文件、图形图像文件及ZIP、PDF、SWF等其他格式文件等,在数据接口上支持WebService 模块化组件。

    1. 支撑层

    支撑层通过应用服务器,提供对系统应用层强大的支持,包括:电子表单、工作流、元数据管理、安全审计等功能。并通过WEBSERVICE接口服务支持外部资源对内容管理基础数据以及内容管理对外部数据资源的应用数据集成。

    1. 应用层

    应用层是政府门户网站群非常重要的组成部分,是对信息处理的重要环节,按功能的不同可以分为:信息发布管理、网站群管理、系统管理、外挂组件管理、交互功能、多媒体信息管理、内容聚合:RSS等。

    1. 展现层

    政府门户网站群的最终表现是一组具有相同标准和相同规范体系的网站群体系。它涵盖主站、各级子网站、各类专题子网站等,同时系统为应用层的不同应用提供信息资源的不同表现形式,包括有Web、RSS等。

    1. 接入层

    实现客户通过浏览器来访问表现层以获取信息资源。

      1. 系统技术架构

    系统技术架构框架如图所示。

      1. 总体架构设计

    应用系统总体架构图

    如上图所示,本项目将采用数据与应用大集中的架构,即国际收支平衡管理管理信息系统只部署在国家外汇管理局,相关数据也集中存储在总局的国际收支平衡整合库中。整个系统采用B/S的结构,在进行数据清洗、转换,即ETL的时候会采用C/S结构,整个架构主要包括如下内容:

    1、构建应用支撑平台,提供统一的人员、组织机构和权限管理,提供支持各种复杂业务系统的开发和组装框架,实现单点登录和目录服务,并提供对应用系统的运行监控,数据的备份恢复等功能。

    国际收支平衡管理信息系统的各个子系统以及外汇局应用支撑平台门户都是基于应用支撑平台开发、组装和运行的。

    2、数据整合与交换系统是整个国际收支平衡管理信息系统的基础,负责将从外汇局内部(主要是现有的业务系统或者业务数据)和外汇局外部(主要是共建部委的共享数据)的相关外汇数据采集、清洗、转换,并通过数据传输通道汇总至统一的国际收支信息的整合数据库中。

    各分支局数据通过数据传输通道上传到国家外汇管理局,由数据整合和交换系统接收并处理数据,最终也汇总至总局的整合数据库中。

    数据交换将以成熟、稳定的第三方产品为基础进行设计和开发。

    3、开发新版国际收支网上申报系统,实现涉外收入申报业务网上受理,方便企业申报业务;建立与银行系统的接口,满足与银行的数据交换;方便银行的查询和审核操作。

    网上申报数据将统一存储至网上申报数据库,并通过数据整合与交换系统与国际收支统计监测系统进行数据集成,同时申报数据最终汇总至总局的整合数据库中。

    网上申报系统将与外汇局的“一站式”网上服务平台集成,申报主体和银行将通过服务平台登录系统,进行申报、审核、查询统计等操作。

    外汇局人员也可通过服务平台或者外汇局的应用支撑平台门户登录系统,进行对申报数据的核查、查询统计操作。

    4、在数据整合与交换系统上建设统计分析系统,根据基础指标和统计分析指标将整合数据库中的信息动态生成各类统计分析报表(如国际收支平衡表、国际投资头寸表、结售汇统计报表等)。

    统计分析系统将利用数据仓库和多维联机在线分析技术,在对国际收支平衡状况的需求分析的基础上,提供面向主题的多种分析模型和分析方法,从多个角度分析国际收支平衡的状况和存在问题。统计分析结果将存储至外汇局数据仓库系统,为决策支持系统提供数据支撑,并可以通过BI工具在外汇局应用支撑平台门户进行展现。此外,统计报表信息通过数据整合与交换平台与金宏工程其他共建部委进行“共享”。

    5、在统计分析系统和总局数据仓库的基础上建设决策支持系统,通过基础指标,统计分析指标和统计分析系统产生的结果,借助OLAP分析模型工具,产生决策支持信息和预警信息,进行经济分析和预警,辅助外汇管理政策的制定。

    各类统计分析模型、预警模型将统一存放到“模型库”中,方便分析人员使用。此外还提供一套机制建设“知识库”,存储有关外汇管理的各类信息。

    (2)-(4)这几个系统在支撑平台的数据整合与交换基础上提供统一的数据交换接口,同时支持以XML作为统一的数据接口格式。

    6、建设外汇局应用支撑平台门户,通过门户对所有的系统进行统一管理,并且将统计分析、决策支持的结果和其他应用软件的功能模块通过信息集成门户提供给外汇局的领导、业务人员使用。

    外汇局应用支撑平台门户就是建设在应用支撑平台门户基础上。

    7、国际收支平衡管理系统与金宏共享平台、国际收支平衡共享数据库物理隔离,国际收支平衡管理系统中的数据通过涉密网和业务网之间的数据交换系统交换到金宏内网上的国际收支平衡共享数据库中,向共建部委提供数据服务。从共建部委获得的数据也通过涉密网和业务网交换系统,进入数据整合与交换系统中。

      1. 系统架构

    国际收支网上申报系统技术架构图

    企业用户可以通过“一站式”信息服务门户访问国际收支网上申报系统,完成涉外收支业务的申报,申报信息由数据管理模块通过特定的数据接口交换到银行业务系统,在银行业务系统进行审核。审核过后的结果信息再经过数据管理模块交换到网上申报系统供企业用户查询。

    企业用户需要在银行业务系统完成账户开户,定时由银行业务系统交换到网上申报系统供企业用户登录。

      1. 系统架构

    统计分析系统技术架构图

    1、统计分析系统的数据来源于数据仓库,通过条件查询模块从数据仓库得到满足用户的基础数据,由数据统计模块来对这部分基础数据进行汇总统计;

    2、汇总统计的数据根据外汇局用户的需要可以由报表定制模块利用原有的报表工具实现对国际收支平衡表、国际投资头寸表、结售汇统计报表、外债余额简表的设计以及利用Cognos的BI工具完成展现以及经过OLAP分析转化成多维数据;

    3、针对预先设计好的数据模型以及辅助模型管理模块来产生分析结果,供外汇局用户制定决策。

      1. 系统架构

    决策支持系统技术架构图

    1、决策支持系统利用从数据仓库获得的基础数据完成报表和查询,生成日、月、季报表供外汇局用户查询浏览;

    2、通过ASL规则引擎对基础数据进行分析,以风险模型为依据生成分析报告;

    3、利用数据挖掘模型对基础数据进行处理得到模型数据,与ASL分析信息共同生成分析报告,供外汇局用户来进行营运监管的管理;

    4、“知识库”的信息同时也提供给营运监管模块来进行运作。

      1. 总体架构

    国资委国有资产监督管理系统总体架构图

    国资委国有资产监督管理系统的总体框架主要包含六个层次,即基础平台层、数据资源管理层、应用支撑层、业务实现层、门户展现层、终端接入层。

    1.基础平台层:国资委IT基础平台主要包括网络系统、主机、存储系统、安全系统、配套的软件等。网络系统分为业务内网、业务外网和互联网。业务内网与业务外网物理隔离,互联网与业务外网通过防火墙配置实现逻辑隔离。

    2.数据资源管理层:数据资源管理层主要由数据库组成,其中结构化数据库主要包括管人、管事、管资产、纪检监督业务数据库、共享数据库、基础数据库、原有系统数据库及其它信息资源库等。非结构数据库主要是由一些文件型的数据构成。信息资源库主要是应用系统的数据库,它是业务应用信息系统的组成部分和数据中心的基础。

    3.应用支撑层:应用支撑层主要包括应用开发平台 (基础数据管理、报表管理、工作流管理、表单工具、门户引擎、规则引擎、工作流引擎、用户权限管理、目录服务、内容管理、接口管理、预警平台)和中间件(应用服务器、消息中间件、WEB服务器)。通过建设应用支撑平台,实现界面集成、应用集成、数据集成及流程集成,通过四个集成来达到国资委所有系统的集成效果。

    4.业务实现层:主要包括四大核心业务应用系统和数据中心。

    国资监管应用系统主要包括企业国有资产产权登记子系统、上市公司国有股权监督管理子系统、企业国有产权交易监督管理子系统、企业财务状况监督子系统设计、中央企业财务绩效评价子系统、中央企业财务预决算管理子系统、企业国有资产统计评价子系统、企业财务信息查询分析子系统、中央企业人员管理子系统、中央企业业绩考核子系统、中央企业重大投资管理子系统、中央企业经济运行监督子系统、纪检监察管理子系统等。

    国有资产数据中心:主要包括元数据注册器、信息资源数据库、信息资源目录体系、信息资源交换体系等。国有资产信息资源库是数据中心的基础,为国资委业务监管提供数据支持,包括企业基本信息数据、企业绩效评价数据、企业人员管理数据、企业财务数据、国有产权数据、资产统计数据、企业重组与规划投资数据、纪检监察数据、政策法规文献数据和其他业务数据十大类。作为统一信息资源平台,国有资产信息资源库对国资委各类共享数据提供统一的存储和管理,是国资委委内各厅局之间以及与其它政府机关之间进行数据交换和共享的基础平台,为各类业务的开展提供完整、统一和准确的数据支持。

    5.门户展现层:门户展现层主要由国资委数据采集门户构成、互联网门户、业务内网门户、业务外网门户组成。

    6.终端接入层:中央企业、地方国资委、上市企业(含国有股)、其它部门及公众通过统一的身份认证、权限管理登录数据采集门户、国资委业务外网门户、国资委互联网,并实现统一的入口、出口和单点登录。

    其中,中央企业、地方国资委、上市企业(含国有股)通过在线填报或离线填报(利用数据采集终端)的方式在数据采集门户上进行数据填报,数据采集门户及业务外网与内网物理隔离,通过应用支撑平台提供的数据交换组件实现内、外网的数据传输和交换。其它部门(包括金宏工程相关部门)也是通过应用支撑平台提供的数据交换组件实现内、外网的数据传输和交换。社会公众登录国资委互联网网站进行国资监管信息查询和交互。

    除此之外,贯穿着六个层次的还有国资委信息安全保障体系、项目实施与运维管理,和相关的标准体系和管理规范。

      1. 系统逻辑结构

    国资监管信息系统主要作用体现为国资监管业务服务。一期工程建设6大应用系统,形成10个信息资源库。其总体逻辑结构图如下:

    图5-1总体逻辑结构图

    通过四大业务系统(共计13个子系统)覆盖国资委管资产、管人、管事、资产监督的四大业务。

    其业务核心就是实现国有经济布局以及国有资产的增值保值。

    实现国有经济布局,具体是通过产权登记系统,掌握所有国有股权的分布情况。通过上市公司国有股权交易监督和其他企业国有股权交易监督系统,对国有股权的交易进行监控,随时了解国有经济的布局情况,并加以控制。通过资产统计、企业财务监督、中央企业预决算管理,等3个系统,全面获得企业的实际财务资产情况。

    另外通过中央企业经济运行管理系统,掌握中央企业的经济运行情况以及行业经济运行分析,从而对中央企业重大投资进行管理和监控,确保了解国有经济布局的运行情况和进行调整。

    实现国有资产的增值保值,具体措施是通过管人来实现,通过中央企业人员管理系统,后备、任命、管理企业管理者。通过企业绩效考核系统来评价、更换人员,来实现国有资产的增值保值。但不是简单的通过管人来实现国有资产增值保值,任命、考核,需要从资产管理、资产监督、企业运行情况等三个方面不断地获取信息,对管理者进行监督和引导,即使发现问题,确保国有资产的增值保值。

    通过13个业务应用系统覆盖四大业务职能,为解决目前监管业务中信息采集的问题、信息沟通的问题,需要建设13个业务应用系统统一的数据采集系统、信息发布系统。

    针对13个业务应用,形成了10大国有资产信息资源库,包括监管企业方面获得的6种信息:

    • 企业基本信息
    • 企业产权信息
    • 企业财务信息
    • 企业人员信息
    • 企业重组与规划投资信息
    • 其他业务信息

    以及国资委监管产生的4种信息:

    • 政策法规信息
    • 国有资产统计信息
    • 企业业绩考核信息
    • 纪检监察信息
      1. 系统体系结构

    本项目总体技术框架建立要遵循“整合资源,信息共享”、“统一架构,业务协同”的原则,应用系统采用多层架构,以信息资源库和公共服务为基础进行开发,实现资源和服务的共享,实现业务层和展现层的分离。总体技术框架如下图所示:

    图5-2 国资委国有资产监督管理系统总体技术框架

    总体框架主要包含六个层次:

    国资委IT基础设施:主要包括网络、服务器、存储系统、配套的系统软件、数据库和机房等。网络系统为内、外网物理隔离的双网结构。IT基础设施是国资委国有资产监督管理系统的基础平台。

    国有资产数据中心:主要包括元数据注册器、信息资源数据库、信息资源目录体系、信息资源交换体系等。国有资产信息资源库是数据中心的基础,为国资委业务监管提供数据支持,包括企业基本信息数据、企业绩效评价数据、企业人员管理数据、企业财务数据、国有产权数据、资产统计数据、企业重组与规划投资数据、纪检监察数据、政策法规文献数据和其他业务数据十大类。作为统一信息资源平台,国有资产信息资源库对国资委各类共享数据提供统一的存储和管理,是国资委委内各厅局之间以及与其它政府机关之间进行数据交换和共享的基础平台,为各类业务的开展提供完整、统一和准确的数据支持。

    国资委应用系统支撑平台:主要包括由表单工具、系统集成组件、内容管理工具、工作流组件、消息交换工具、应用中间件、统一用户管理和其他组件工具构成的应用支撑平台,从整合、协同、管理和服务四个方面对业务系统的开发、部署和运行进行支持。

    国有资产监督管理业务应用信息系统:主要包括搭建在应用支撑平台上的基础应用组件、通过基础应用组件组合成的企业国有资产产权登记子系统、上市公司国有股权监督管理子系统、企业国有产权交易监督管理子系统、企业财务状况监督子系统设计、中央企业财务绩效评价子系统、中央企业财务预决算管理子系统、企业国有资产统计评价子系统、企业财务信息查询分析子系统、中央企业人员管理子系统、中央企业业绩考核子系统、中央企业重大投资管理子系统、中央企业经济运行监督子系统、纪检监察管理子系统。

    应用数据库:主要是应用系统的数据库,是业务应用信息系统的组成部分。

    国资委信息发布系统:主要包括国资委内网消息发布、外网消息发布和互联网消息发布。

    除此之外,贯穿着六个层次的还有国资委信息安全保障体系、技术支持与运行维护体系。同时,国资委信息化相关的标准、规范、政策、法规也将在“国有资产监督管理系统”项目建设中必须加以重视,并积极推进。

    展开全文
  • 监管系统架构图

    2018-07-23 21:17:35
    无人机监管系统架构图,描述了基于大数据平台的实时性处理
  • 架构图深入解读

    千次阅读 2020-06-30 23:27:32
    架构图是什么?为什么要画架构图?如何画?有哪些方法?本文从架构的定义说起,分享阿里文娱高级技术专家箫逸关于画架构图多年的经验总结,并对抽象这一概念进行了深入地讨论。较长,同学们可收藏后再看。

     

     

     

     

    什么是架构图?

     

    如何画好一张架构图,要做好这件事情首先要回答的就是什么是架构图。我们日常工作中经常能看到各种各样的架构图,而且经常会发现大家对架构图的理解各有侧重。深入追究到这个问题,可能一下子还很难有一个具象的定义,如果我们把这个问题进行拆分(如下图)理解起来就会容易一点。

     

    •  
    架构图 = 架构 + 图

     

    按照这个等式,我们可以把问题转换:

     

    • 架构是什么?

    • 图是什么?

     

    图是什么?这个比较容易回答,图是一种信息的表达方式,所以架构图,即表达“架构”的图,也就是一种架构的表达方式。也即:

     

    •  
    架构图 = 架构的表达 = 表达架构的图

     

    按照这种思路我们需要回答:

     

    • 什么是架构?要表达的到底是什么?

    • 如何画好一张架构图?

     

    接下来的内容基本上就是按照这两个维度来做分析。

     

    什么是架构?要表达的到底是什么?

     

    Linus 03 年在聊到拆分和集成时有一个很好的描述:

     

    I claim that you want to start communicating between independent modules no sooner than you absolutely HAVE to, and that you should avoid splitting things up until you really need to, because that communication complexity often swamps the complexity of the actual pieces involved in it.(让我们认识到一种现象,把复杂系统拆分成模块,似乎并没有降低整个系统的复杂度。它降低的只是子系统的复杂度。而整个系统的复杂度,反而会由于拆分后的模块之间,不得不进行交互,变得更加复杂。)

     

    我理解这里描述的系统拆分就是架构的过程,基本出发点是为了效率,通过架构的合理拆分(无论是空间还是时间上的拆分),最终目的让效率最大化。那到底什么是架构,其实没有完全统一且明确的定义,如下三个定义可以参考。

     

    在百度百科上的定义:

     

    架构,又名软件架构,是有关软件整体结构与组件的抽象描述,⽤于指导⼤型软件系统各个方面的设计。

     

    在 Wikipedia 上的定义:

     

    Architecture is both the process and the product of planning, designing, and constructing buildings or any other structures.

     

    ISO/IEC 42010:20072 中对架构有如下定义:

     

    The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. 

     

     

    这三个定义也是见仁见智,但是我们基本可以得出:架构体现的是整体结构和组件之间的关系。

     

    架构的本质

     

    这里引用三个观点来探讨架构的本质:

     

    • 架构的本质是为了管理复杂性。

     

    • 架构的本质就是对系统进行有序化重构,不断减少系统的“熵”,使系统不断进化。

     

    • 架构的本质就是对系统进行有序化重构,以符合当前业务的发展,并可以快速扩展。

     

    上述三个观点提到的内容,基本表达了架构的核心目的:管理复杂性,效率最大化。以及架构的两个主要变化来源:一个是以改善软件质量为目的的内在结构性变化;另外一个是以满足客户需求为目的的外在功能性变化。无论是何种变化,在我看来架构都是在不断的判断和取舍,在业务需求和系统实现之间做权衡,从而来应对未来变化的不确定性,如下图可以比较粗浅直观的表达这种理解。

     

     

    要表达的是什么?

     

    在 EA 架构领域,有两种常见架构方法 RUP 和 TOGAF,这两个框架也是我们常常了解架构分类的两个维度。从个人的角度,我自己觉得 TOGAF 的分类方式更加广泛使用(如下右图)。

     

     

    结合日常的业务开发,其实我们更多的是关注业务架构和应用架构,所以把上边的表达式进一步的拆解,在回答如何画好一张架构图之前,我们需要关注业务架构和系统架构,讨论清楚如何进行业务架构和系统架构。

     

     

    架构的过程其实就是建模的过程

     

    我们都知道现实世界到软件世界或者面向对象的世界的过程,是一个不断抽象的过程,这其中的方法就是不断的建立模型。从现实世界到业务模型,从业务模型到概念模型,从概念模型到设计模型,通过不断的抽象去粗取精,形成对现实世界的层层抽象,所以架构的过程其实就是建模的过程。至此,我们有必要了解一下什么是建模。

     

    百度百科定义:

     

    建模就是建立模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。

     

    《Thinking in UML》定义:

     

    建模(Modeling),是指通过对客观事物建立一种抽象的方法用以表征事物并获得对事物本身的理解,同时把这种理解概念化,将这些逻辑概念组织起来,构成一种对所观察的对象的内部结构和工作原理的便于理解的表达。

     

    从上述两个定义上基本可以了解到建模就是抽象,对业务或现实世界的抽象,虽然不足以帮我们理解架构本身,但是可以将我们上述关注的业务架构和系统架构进一步向下 Down 一层,架构的过程是建模的过程,我们转换成两个简单的问题:模是什么?如何建?

     

    模是什么?如何建?

     

    这是两个比较容易陷入理论性的问题,我们跳出来从结果看过程。接下来通过已经产出的一些架构图来反向看这些架构图是如何产出的,同时来回答这两个问题。

     

     

    业务建模

     

    回到当下业务本身,对我而言也是全新的,在最初接触的时候凭仅有的行业背景去理解,结合了大量的文档阅读最终产出了如下图示的《业务核心流程图》和《业务功能模块图》。这两张图基本上就涵盖了所有的业务内容。左边的业务流程图得到了这个行业 20 多年从业经验专家认可,他认为这就是 20 多年所从事的业务内容。

     

    图片源于网络,为示意图,侵删

     

    回溯整个过程,特别是左侧的业务核心流程图,今天我们看这张流程图很容易构架起一个基本逻辑来,纵向是不同的业务角色和系统,横向是时间的推进,特别容易理解。但我想说最开始的理解和分析是极其耗时和压力极大的过程。这个过程中我所用的方法就是:

     

    • “把书读厚”:大量的信息输入,同时探求可能性。

    • “把书读薄”:归类汇总,形成大图。

    • 逻辑对照,确保理解和分析的正确性。

     

    1)把书读厚

     

    下图基本涵盖“把书读厚”的过程,汇聚大量的文档信息,尝试用多维度去形成逻辑。这个维度可能是依据历史经验,也可能是依据文档内容,比如在形成业务大图的过程中,我曾按可能的场景逻辑、可能的系统或领域逻辑分别把多个文档中的内容归类,探求可能性。

     

    这个过程会很枯燥,特别是涉及一些业务的术语内容,理解起来就会很困难。我的方式就是把自己当做一名“探索者”,如同我们玩游戏一样,常常问自己“我的游戏地图全部点亮了吗?”未必要照顾到所有细节,但是需要力求覆盖整体内容。仔细想想,似乎也和日常的读书类似,这期间值得注意的是:

     

    • 重点关注一些业务概念被界定的地方、一些与自己逻辑推理有出入的地方。

     

    • 不断的调整自己阅读过程中记录的维度,矫正自己的分析方向。

     

    • 老老实实用文档中的原话来记录和呈现(这点很重要,特别是阅读英文材料,最好原汁原味的记录,有助于提升自己的专业性)。

     

     

    2)把书读薄

     

    这个时候的重点是建立“大局观”,尝试梳理自己的逻辑主线,常规逻辑上讲都会划分为横纵,或者矩阵式的框架,当然这需要建立在前期的理解和分析上,这里常常隐含一个最最重要的假设:系统一定是给人用的,一定是解决客户问题的,否则毫无存在的意义。所以核心的套路是:谁?用什么样的服务/功能/能力?解决什么样的问题?从而刻画出:参与者角色、系统能力、交互关系,需要常常问自己的是:边界是什么?输入输出是什么?逐步的通过用例来梳理出业务功能,形成角色—>主流程—>分支流程,进而通过不断的归纳演绎形成最终的业务抽象描述“一张图”。

     

    一个小的细节是不能妄图通过这些过程迅速在大脑里完成大图的绘制,还是需要从小的环节做起,把一部分小的业务闭环做成一个个的小组块,不要让它再占用大脑的空间,然后逐步的整体思考和把握,渐进式的形成大图;与此同时,大图的样式美观先完全忽略,走通逻辑再细致调整。之所以强调这个细节,是因为尝试通过“一张图”去描述一个非常大的业务本身就是件很有挑战的事情,如果不这么做容易让自己变得焦虑和急躁,这是一个慢功夫,需要耐心,需要在关键阻塞的地方慢下来,甚至一遍一遍的反复才能最终完成。

     

     

    3)逻辑对照

     

    这是一个闭环封装的过程,把前期“读厚”过程中的记录,一些逻辑细节、关键流程都要逐一放到大图里去对照验证,确保业务理解的完整性和准确性,确保业务抽象能够覆盖所有已知的业务用例,甚至能够支持可能的业务场景。这个环节也是必不可少的部分。 

     

    总结一下业务建模(如下图),通过上述三个主要的过程,我们基本可以产出一些业务架构的大图、框图、流程图、用例图等等,是什么样的图并不重要,重要的是这个图面对的是谁?主要用来做什么?我后边也会讲到画图角度的问题。从我们目前的业务场景上看,业务架构图的核心目的是统一共识、减少沟通成本,无论是项目中的哪个角色大家都能讲一样的话,描述一样的事情。这就是建立对话能力和对话语境,特别是有大量外部客户的时候,一方面体现我们自己专业性很重要,另外一方面这种与客户对话的能力更重要,这也是上文中提到为什么要尽可能用原汁原味的文字去呈现一张图的目的。

     

     

    系统建模

     

    通过业务建模完成了从现实世界到业务模型的构建,在此基础上,如何通过抽象完成业务模型到设计模型的映射,这是系统建模要解决的问题。从研发实现的角度,这个阶段会产出各种各样的模型图,比如实体模型图、时序图、状态图、各个层次的架构图等等,但是无论何种角度,何种层次,系统建模一定是在业务建模的基础上,完成业务需求到系统模型之间的映射;这其中涉及业务功能到系统能力、业务流程到数据流程的映射;系统建模更强调职责、依赖、约束关系,用于指导研发的落地实现。

     

    抛开具体的时序图、状态图不谈,简单看一下如下几个维度的架构图:

     

    图片源于网络,为示意图,侵删

     

    上述几张图的视角、层次和面向用户各不相同,基本上都能看到整体,但是细节程度不同,侧重表达的信息也完全不同。那么系统建模时应该如何去做呢,这个过程中我常常用的方法是(不尽然如此):

     

    • “剥洋葱式”的由大到小,由粗到细,覆盖所有已知和未来可能业务场景;善于利用各种模型表述:自然语言、关系模型、时序图、状态图、流程图、各种层次架构图等等进行模型表述,充分表达各种业务场景并不断验证。

     

    • 核心实体抽取:抓住核心概念,核心关系完成核心模型建立。

     

    • 终极武器:所有的设计/逻辑模糊的点,将所有已知场景分别套入,自己讲给自己。

     

    1)“剥洋葱”

     

    在业务建模结果的基础上进行“剥洋葱”。这是一个不断拆解的过程,这个过程中的拆解非常重要的方式是就系统分工。如何分工?哪个模块负责什么?模块的输入和输出是什么?内部提供什么样的服务和能力?这几个问题在后文关于抽象的部分回答。一句话总结“剥洋葱”就是:从业务建模的“大局观”去按职责分工拆解成多个子系统、多个子模块、然后在模块能进行细分,层层剥解。

     

    2)核心实体抽取

     

    关于核心实体的抽取,这里的关键问题是:哪些是实体?如何判断核心实体?如何抽取?抽取后的结果是什么样的?很难用一种方法论的形式去描述,我也没有完全形成我自己一成不变的方法论,但是我觉得如下三种方式可以供大家参考。

     

    • 对象的分析方法

     

    实体(Entity):客观存在并可相互区别的事物称之为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。

     

    从这个概念理解,和我们面向对象万物兼对象的理解是基本一致的。所以实体的抽取也可以借鉴对象分析的方法:独立、可抽象、有层次性、在单个层次上又具备原子性。如下图是《Thinking in UML》中关于对象的分析方法。

     

     

    • 用例分析的方法

     

    通过从业务用例中,去提取其中的关键词,不同的关键词可能表达了实体、关系、属性等等内容,从而完成模型分析与建立。这里引用六铢老师在《问题空间领域模型基本抽象方法》中的的内容,简述如下:

     

    一句完整的用例描述中,首先找名词,以「主语」和「宾语」为主,这些名词基本可以确定我们的实体;其次找形容词,存在于「定语」和「状语」中,找到形容词基本可以确定对应属性的值;然后通过对用例的补充,细化,对名词进行定义,慢慢的,我们会得到我们的领域模型和对应的属性。最后通过动词&形容词(存在于【谓语】,【状语】,【定语】)来确定他们之间的关联关系。

     

    • 问题分析的方法

     

    这是《聊聊架构》中提的方式,具体讲就是通过寻找问题的主体,然后分析主体的生命周期,进而通过区分生命周期里的关键活动来聚焦主体的关键属性和关键关系。推荐大家阅读前 9 章的内容,总计才 40 页的内容,可能会有所体会。这里举一个书中的例子:

     

    一个笑话:一位女士对老公说:把袋子里的土豆削一半下锅;结果所有土豆都下锅了,而且每个土豆被削了一半。

     

    作者指出,这里其实就没有清晰的设别主体,这个主体不单是土豆,而是隐含的人要吃土豆,包括人和土豆两个实体,这两个实体之间的关系就是要解决的业务场景:怎样吃?如何吃?为什么吃?所以主体识别不清楚,可能会导致整体实现的偏离。当然实际过程中不会犯这么愚蠢的错误,但是也侧面说明核心实体的抽取是非常关键的。

     

    3)终极武器:自己讲给自己

     

    实际的业务开发中,往往一种业务设计实现要满足上层N个业务场景,这其中有共性也有个性化诉求,这个过程中我们很容易被多场景之间的异同搞混乱,要么逻辑不清晰、要么过度设计、要么考虑不周。我观察过很多同学包括我自己,在一定的业务复杂度时容易失去设计的焦点。我的做法与业务建模类似,一定要逻辑对照:在所有的设计/逻辑模糊的点,将所有已知场景分别套入,自己讲给自己。请注意这里是“分别套入”,在当前的设计层次下一个场景验证完再去验证下一个场景,找出阻塞的、模糊的点,重新梳理再优化设计。系统建模的结果指导我们软件设计实现,所以一定要反复梳理打通,这个反复的过程其实也是提升架构能力的过程,累积到一定程度就会自然通透。

     

    回到开始的那个问题:

     

    模是什么?通过上面业务建模和系统建模的描述,简单来讲模就是业务的映射,这个映射的结果是业务模型、概念模型或设计模型,但是所有的出发点都是业务需求:客户是谁?核心诉求是什么?

     

    如何建?上面通过业务建模和系统建模两个维度,从个人实践角度大概讲了常规的套路,建模的本质其实一个抽象的过程,但是上述业务和系统建模抽象的过程其实还有两个问题并没有完全说清楚:

     

    • 业务建模中“把书读薄”归类汇总,建立「大局观」,形成大图,这里按什么维度去归类?如何判断归类是正确的?

     

    • 系统建模中“剥洋葱”怎么拆?按什么拆?上述架构图中的层次、领域如何划分层次?边界在哪里?

     

    说回抽象

     

    Haskell 语言的设计者之一 Paul Hudak 曾说过一句略带夸张的话:编程中最重要的三件事是:抽象,抽象,抽象。

     

    “abstraction, abstraction, abstraction”are the three most important things in programming。

     

    如果要问程序员最重要的能力有哪些,我相信抽象一定是其中最重要的之一。那到底什么是抽象?

     

    百度百科定义:

     

    从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程,称为抽象。

     

    如果更精炼的概括:抽象就是做减法和做除法。通过舍弃非本质和无关紧要的部分,着眼于问题的本质,去粗取精;通过透过现象看本质,发现不同事物之间的共同之处,异中求同,同类归并,也就是做除法。上文中建模过程是共性抽象,通过不断的抽象达到某个状态为止,我理解这个状态没有确定性的答案,核心就是满足业务场景的需要,其实这背后也有一个边界的问题。

     

    抽象的角度

     

    生活中处处都是抽象,但是我们似乎少了为什么是这样或那样抽象的思考。抽象是有角度之分的。

     

    生活中我们常常说“我的观点是…”,其实这里的“观点”就是一个角度问题,从一定的立场或角度出发,对事物或问题所持的看法。以生活中的常见的实物来说(如下图),我们是否能快速的说出其中的相同点和不同点。

     

     

    如图中已经标注的,我们从功用的角度对它们定义了椅子、桌子、凳子和柜子这样的区分,但显然很有很多很多角度,比如:物料、文字、高矮等等维度,从不同维度看过去,会有完全不同的相同点和不同点表述,所以,本质是什么?本质是:

     

    • 抽象角度其实也是分类的角度,角度不同,会导致完全不同建模方向和结果。

     

    • 抽象的角度就是建模的方向和目的(“屁股决定脑袋”)。

     

    重新回到我们前边的两个问题,业务建模中我们谈到了归类,按什么去归类,答案呼之欲出,按我们的业务流程去归类、按客户的角色去归类,又回到了那个最初始的问题:客户是谁?核心诉求是什么?

     

    同时,上文中我们提到,模是业务的映射,基于对抽象的理解,我们可以进一步展开:模是在确定抽象角度下的业务映射。

     

     

    抽象的层次

     

    Wikipedia 关于抽象的定义中有一个关于报纸的例子:

     

    1. 我的 5 月 18 日的《旧金山纪事报》

    2. 5 月 18 日的《旧金山纪事报》

    3. 《旧金山纪事报》

    4. 一份报纸

    5. 一个出版品

     

    这五句话中,我们可以感受到抽象的层次,抽象层次越高,细节越少,普适性越强。再比如下图中关于网络模型的抽象,关于操作系统内核的抽象,我们可以明显的看到不同层次的抽象,就是过滤不同的信息,最终留下来的信息才是当前抽象层次所需要的信息。从系统设计实现上来说,抽象层次越高,越接近设计,越远离实现,同时抽象的模型越不受细节的羁绊,稳定性越高,普适性越强,可重用性就越高。

     

     

    那么这里抽象的划分层次的依据是什么?原则又是什么?我的经验是,划分抽象层次的依据主要包含两个:

     

    • 以抽象角度分层(可能一层是多角度的聚合)

    • 面对变化分层(用层次隔离变化)

     

    其实这个也不能完全解释如何分层,原则是什么?我觉得这是几个最通用的原则:

     

    • 公用的往下走

    • 个性的往上走

    • 下层可以独立于上层存在

    • 控制下层的变化

     

    考虑抽象层次的好处是不论在哪一个层次上,我们只需要面对有限的复杂度,从而专心考虑这个层次上的抽象是什么,要表达的信息是什么。

     

    抽象的边界

     

    除了角度、层次之外,我们还需要考虑的抽象的边界。如果说层次考虑的是纵向维度的表达,那么边界考虑的是横向维度的表达。如何确定边界,一个总的原则是按照职责进行划分,这里的职责其实也就是分工。一旦职责确定,我们在做建模分析时就不需要把整个业务大局放进来从头到尾去分析一遍,我们只需要考虑当前分工下的上游和下游即可,这样的信息量大大减少,自然的我们面对的领域复杂度也会降低到一定程度。

     

    如果一定要给出边界的定义,我的理解是:边界是在确定抽象角度下,通过寻找核心的业务活动,抽取核心实体,进一步确定实体核心生命周期的结果。可能有一点点绕,关键词是:核心业务活动、核心实体、核心实体生命周期。

     

    以现场娱乐行业为例,如下这张图包含了最高抽象层次下业务的全生命周期,这个抽象层次下的主体是什么,我的理解是票,项目生产的结果是票,分销或电商服务是对票的销售,现场是对票的核验,至此以票为核心实体的生命周期结束。

     

     

    如果我们往下 Down 一层,从项目生产这一个业务活动去看,整个业务流程是这样:

     

    •  
    项目管理->场馆座位分销->票房预测->场次管理->配额管理->绘座->票房规划

     

    从生产这个视角去看,核心的实体不是票,而是场次(确定时间、确定地点、确定内容的一场演出或赛事),所有的关键业务活动都是以场次为维度,生产领域里需要考虑的主要就是场次的核心生命周期。

     

    所以,在不同的抽象角度、不同的抽象层次,根据分工的不同会有不同的核心业务活动、不同的核心实体、边界的确定关键在寻找核心的生命周期。寻找生命周期的过程,就是发现内聚的过程;将所有关于生命周期的业务活动累积,就可以提升领域或模块的内聚性。

     

    抽象的评估

     

    前边我们基本说清楚了抽象的角度、层次和边界,从三个维度确定了抽象的结果。那么如何评估抽象结果的好坏呢?答案是“高内聚,低耦合”,当然还有更多的原则,但是单从实践的角度,我觉得这是最最重要的。

     

    耦合是软件结构中各模块之间相互连接的一种度量

    内聚是一个模块内部各成分之间相关联程度的度量

     

    “高内聚,低耦合”从内部、外部两个视角去评估抽象结果的好坏。这其中也有对应的原则和方法论,常规的套路是:

     

    • 每次从一个角度来切分,然后换多个角度来审视

    • 通过组合、拆分来精化、优化模型与设计(抽象的结果)

    • 关键的审视点:

    • 耦合性:减少模块间通信量

    • 内聚性:功能单一化

    • 变化的隔离性:减少信息依赖,建隔离层、虚拟层

     

    抽象的方法论(套路)

     

    我想,至此,我们说清楚了前面的那两个问题:

     

    • 业务建模中“把书读薄”归类汇总,建立“大局观”,形成大图,这里按什么维度去归类?如何判断归类是正确的?

     

    • 系统建模中“剥洋葱”怎么拆?按什么拆?上述架构图中的层次、领域如何划分层次?边界在哪里?

     

    总结前面说的所有关于抽象的内容,形成抽象的方法论(套路):

     

    • 抽象有两种方法,一种是自顶向下,另一种是自底向上

     

    • 业务建模,是从小到大,从局部到整体,自底向上的归纳、演绎的抽象过程

     

    • 系统建模,是从大到小,从整体到局部,自顶向下的拆解、切分的抽象过程

     

    • 但不绝对,自上而下和自下而上,往往在过程中是随意切换的

     

    下面这张图来自于《Thinking in UML》,我觉得这个循环的过程可以表达上面这四个点,供大家参考。

     

     

    如何画好一张架构图?

     

    回到主题,如果上边的问题说清楚了,接下来的事情就相对简单了。对于架构图是什么这个问题,我们可以把之前的等式进行延展:架构图 = 架构的表达 = 架构在不同抽象角度和不同抽象层次的表达,这是一个自然而然的过程。不是先有图再有业务流程、系统设计和领域模型等,而是相反,用图来表达抽象的思考和内容。

     

    那么架构图有什么用?给谁看?回答这个问题需要讲清楚为什么要画架构图,同时也需要考虑一个问题就是:架构图是不是越多越好,越详细越好?

     

    画架构图是为了什么?

     

    A picture is worth a thousand words (一图胜千言),从 Why 层面讲,我觉得就是如下两点:

     

    • 解决沟通障碍:达成共识、减少歧义。

     

    • 提升协作效率:团队内部和团队之间的协作、沟通、愿景和指导。

     

    但是上述两点其实是非常笼统的信息,如果放在 What 层面,我们必须要考虑架构图面对的“客户”,不同的客户有不同的诉求(其实也就是角度和层次),在不同的抽象层次架构图所表达的信息内容可以完全不一样。以目前团队做的事情为例,架构图的目标客户至少有几类:

     

    • 参与项目的各团队各角色(业务、产品、开发、测试、安全、GOC)

    • 项目之外的客户(外部客户,外部评审专家)

    • 各层次 TL(汇报,跨 BU,跨团队协作沟通)

     

    所以画架构图,我们必须首先明确沟通交流的目的和面向的客户,只有明确了这两个点才能更加有针对性的达成上边所说的那两点目标:解决沟通障碍,提升协作效率。

     

    怎么画?

     

    先说分类

     

    架构图分类,本质上是从不同的视角,不同的抽象角度去看,作出清晰、简化的描述,涵盖特点方面忽略无关方面。

     

    从业务应用开发的维度,一般的抽象层次可以分为:

     

    •  
    业务全域—>子域—>模块—>子模块—>包—>类—>方法

     

    这其中:

     

    • 较低层次的抽象:应用内部包图、类图;某个领域:实体图、时序图、状态图、用例图等等。

     

    • 较高层次的抽象:具有一定的复杂性,比如微服务架构,系统间的交互图,领域/子领域架构图,整个系统架构图等等。

     

    当然,还有很多其他的分类方式,比如:RUP 4+1,GOGAF9 等等分类方式。单从实践的角度,我觉得何种分类不是最重要的,最重要的是想清楚面向谁和解决什么诉求,然后思考架构图到底从哪个角度、哪个层次去抽象。我们目前所做的项目,有很时候要去和国外的业务专家、技术专家去沟通,大家也并没有一个明确的标准定义,表述清楚问题,达成共识这是最最关键的,至于架构图的粒度、类别、内容可以逐步的去完善,去粗取精,迭代优化。

     

    再说构图

     

    构图的部分,我们大家都用 UML 画过类图,涉及泛化、聚合、组合、依赖等等关系,分别用不同的虚实线、箭头样式进行表达。所以画架构图需要考虑架构图的组成元素,要保证符合一贯理解,架构图的组成元素可能涉及:

     

    • 方框、各种形状、虚实线、箭头、颜色(不同颜色代表什么意思)和文字内容

     

    • 虚实线表达什么?组件类型,模块类型,层,服务,需要考虑是否已经实现等?不同状态的标识怎么传递?

     

    • 箭头表达什么?数据流或关联关系?

     

    • 交互类型可以是同步或异步的;关联类型可以是指依赖、继承、实现

     

    构图最最重要的是需要考虑内容术语一致性问题、碎片化问题、信息粒度大小的问题,以及图表的外观问题。

     

    如何评判架构图的好坏

     

    架构图的好坏,我理解主要是两个方向,一个是需要跳出图本身去看,业务领域的抽象设计合理性,是否符合“高内聚,低耦合”的要求,这个需要回到前文的业务建模、系统建模和抽象过程去寻找答案。另外一个方向是图本身,以下几个点供参考:

     

    • 内容术语一致、信息粒度大小一致,图例清晰,颜色类型统一,美观

     

    • 图中的信息与相应的抽象级别相关,且满足利益相关者(合作方)的需求

     

    • 一张好的架构图不需要多余的文字解释!受众有没有准确接收到想传递的信息;如果它所导致的疑问比它能解释的问题还要多,那么它就不是一张好的架构图

     

    • 架构图应该帮助每个人看到大局,了解周围的环境,适当的上下文信息

     

    • 架构图应该避免“只见树木,不见森林”

     

    但是,终归还是那句话,“一张图片胜过千言万语”。不管好坏,不管是否美观,人是视觉动物,用图表达可以极大的提升沟通效率,先画起来吧!

     

    最后也聊聊架构师

     

    这是来自于阿白老师的文章《架构师到底是做什么的?》,越是琢磨,越觉得深以为然。其中提到了好的架构师的画像和不好的画像,如下图,与大家共勉。

     

     

    从我个人的成长经历看,架构师很重要的一点要学会“权衡”,既要兼顾当下痛点也要符合未来一定时间的发展,既要保留未来的可扩展性也要避免过度设计。选择什么样的时间节点、什么样的业务场景以及什么样的架构迭代策略至关重要,这些决策的关键在于判断和取舍,需要结合深刻的业务思考乃至组织架构去做权衡落地。一点点不算经验的经验:

     

    快速学习

     

    快不是一个速度问题,也是一个判断或者标准问题。面对一个全新业务场景,如何能够识别20%的关键业务路径,关键业务痛点,如何短时间把自己变成业务专家这是一个架构师基本的素质。我的一点经验就是要去「吸金式」的思考,带着问题主动思考,客户是谁?有什么诉求?需要解决什么样的问题?我们能提供什么样的价值?多问为什么?这也需要长时间的刻意训练。

     

    不要屁股决定脑袋

     

    要跨角色、跨层级去看待业务问题,这个点容易陷入说教,说实话我自己做得也未必到位。但是时刻提醒自己的思考是否被局限,在哪一个维度,是 Have-do-be,还是 be-do-Have 等等;同时也不断的在提醒自己永远不要屁股决定脑袋。

     

    提升思考能力和对于技术原理或本质的理解

     

    我觉得这是最底层的能力,业务开发中我觉得最大的两个难点:一是逻辑的复杂性,二是需求的变化性。我们不应该大部分时间花在寻找解决方案上,而应该花更多的时间在选择解决方案上。这就要求我们对业务全局、行业深度、技术视野、技术深度、业务共性、个性特征等等形成自己的认知。权衡取舍,取什么舍什么?该怎么取怎么舍?那个度在哪里?唯有思考,自驱,累积和坚持,勇猛精进,志愿无倦。

     

    最后的最后

     

    希望这篇文章对大家有帮助,附上最初在考虑这个主题时的构思过程及思考路径,供大家参考。

     

     

     

    展开全文
  • 架构师必看:软件架构图的艺术

    万次阅读 2017-10-20 13:18:30
    设计软件架构图并非一件轻而易举的事情,即使是很简单的一个架构图也可能会出错。有意义且具备一致性的架构图有助于为不同的利益相关者澄清事实,并达成共识。 在大多数情况下,问题的根源并不在于是否使用了一门...

    要点

    1. 设计软件架构图并非一件轻而易举的事情,即使是很简单的一个架构图也可能会出错。有意义且具备一致性的架构图有助于为不同的利益相关者澄清事实,并达成共识。
    2. 在大多数情况下,问题的根源并不在于是否使用了一门有效的架构描述语言(比如UML),而在于低估了架构图的重要性,转而依赖不恰当或不具备一致性的指导性原则,或者缺乏架构思维。
    3. 在创建架构图的过程中,试着混合使用自动生成的图元和手动创建的图元,这样可以减少工作量,并且可以表达出各方面的关注点,覆盖到系统的各个层面。
    4. 系统不断地发生演化,要维护更新架构图需要花费额外的精力。我们需要知道如何有效地应对这种情况,同时能够保持架构图的一致性和健壮性。
      现代的软件架构带来了更多的复杂性,这些都反映在了架构图上。

    曾几何时,我们的每一个软件项目都需要一个架构图。不管我们是否遵循正式的架构模型(比如Kruchten 4+1、Rozanski & Woods等),都有必要通过图表来对应用程序的某些部分进行文档化。在软件架构里,这些图表一般都是按照某些视图进行设计的,这些视图本身就是模型的一部分,不过在这篇文章里,我倾向于使用架构图这个术语,因为它看起来不是那么正式,至于其他方面的内容并不会在这篇文章里涉及到。

    作为一个软件架构师和技术培训师,从我的经验来看,不同项目之间以及同一个团队的不同开发人员之间创建架构图的方式也是很不一样的。我看到过很多问题,比如一致性问题、碎片化问题、信息粒度大小的问题,以及图表的外观问题。相比架构模型的正式和标准化,架构图倒是不必要那么正式或者遵循什么标准。

    相关厂商内容

    解读百度PB级数据仓库Palo开源架构 Snapchat大规模个性化推荐引擎解密 微信社交广告核心架构与图计算存储 摩拜单车:如何通过机器学习等技术提高单车运营效率 获取面向人工智能、机器学习和深度学习的最新工具、框架
    相关赞助商

    不过,架构图必须是自描述的,并且要具备一致性和足够的准确性,能够与代码相呼应。这也就是为什么架构师或软件工程师在创建架构图时需要依赖各种指导性原则,因为它们是理解应用架构(比如结构、元素、关系、属性、原则)的基石,同时也是具有不同技术背景和关注点的利益相关者的沟通基础。

    当前架构图的不足之处

    在深入展开说明之前,我想引用一句英语谚语:“一张图片胜过千言万语”。Wiki上解释说,“这句谚语的意思是,一个复杂的想法可以通过一张静态的图片表达出来,或者图片可以表达一个主题的意思,又或者图片比文字描述来得更加直接有效”。对于架构图来说也是一样的:如果它所导致的疑问比它能解释的问题还要多,那么它就不是一张好的架构图。一张好的架构图不需要多余的文字解释!

    这里写图片描述
    图片:一张不是很好的架构图一般会存在如下几个问题。

    现在让我们来过一下不好的架构图都有哪些问题,这些问题会阻碍我们创建好的架构图。

    方框或其他形状表示什么意思?

    随意使用方框或其他形状可能会引起误解。这些形状有可能表示数据、代码或者流程。一个简单的方框可能会引起多种猜想,所以很有必要显式地给这些形状添加有意义的说明。

    形状的边线表示什么意思?

    在一个糟糕的架构图里,形状的边线(虚线、点线,等等)可能会引起误解。边线是否表示某种组件类型(比如虚线表示容器、微服务、层,等等),或者只是因为设计者想让架构图的观感看起来更加丰富一些?所以,在使用多种边线或非标准边线时,要在图例里提供准确的说明。

    线条或箭头表示什么意思?

    线条或箭头可以被理解为数据流(比如从系统A到系统B的数据流)或元素间的关系(比如组件A依赖组件B)。在大多数情况下,箭头所表示的关系或数据流并不会总是汇聚到同一个方向上,所以很有必要在图例里说明清楚。

    线条或箭头表示哪一种类型的交互或关联?

    尽管线条可以表示数据流或组件间的关系,但用于表示交互类型(对于数据流而言)或关联类型(对于关系而言)的线条或箭头仍然需要详细说明。例如,如果使用线条表示数据流,那么交互类型可以是同步或异步的,但如果线条表示的是关系,那么关联类型有可能是指依赖、继承、实现,等等。这些细节必须在图例里说明。

    颜色代表什么意思?

    一个使用了多种颜色的架构图却没有适当的文档说明很容易引起误解(比如为什么有些方框是绿色的,而其他是红色的?为什么有些线条是黑色的,而有些是蓝色的?)。颜色在架构图里的作用不是非常大,添加太多的颜色并不会给架构图带来更多有价值的信息。一个仅仅使用了黑白两色的架构图也应该是不言自明的,除非非常有必要使用特定的颜色来强调图中的某些部分。在任何情况下都要保持颜色的简单性,如果一定要用多种颜色,不要忘了添加说明。

    单独的元素或实体

    如果架构图中出现了单独的元素或实体,说明架构图有可能是不完整的。不管是从结构还是从行为角度来看,每一个元素或实体都应该依赖系统的其他部分,或者与它们之间存在某些联系。
    费解的缩略语或含糊不清的名词

    在为架构图中的元素添加标签时,切忌使用费解的缩略语,这样容易引起困惑。如果没有恰当的说明,字母的堆叠(比如TFH、RBPM,等等)就毫无意义,最好在图例里进行说明(比如TFH表示ticket feed handler,RBPM表示rates business process manager)。
    在给元素命名时,另一个常见的问题是使用了含糊不清的名词(比如业务逻辑、集成逻辑),这些名词并不能做到自解释。代码里可能也会存在这样的问题,我们建议遵循清晰的代码原则,使用自解释的名字。

    在架构图中详述技术、框架、编程语言、IDE或开发方法论

    架构图并非以技术、框架、编程语言、IDE或开发方法论为基础,它们只是用来实现架构的工具,而不是中心关注点。它们不应该被包含在架构图里,不过可以在架构描述里简述使用它们的理由。
    在同一个架构图里混杂运行时元素和静态元素

    运行时元素(比如线程、进程、虚拟机、容器、服务、防火墙、数据仓库,等等)不会出现在编译阶段,而且不应该与静态元素(比如组件、包、类)同时出现在同一个架构图里。针对运行时元素有专门的类型图(比如并发图、部署图),一定要注意区别这两种元素,尽可能避免把它们混杂在一起。
    “稍后详述”或“稍后解释”

    不包含在架构图里的任何信息都有可能丢失,而架构图里并没有额外的地方可以容纳口头说明。所有的口头说明都会丢失,当其他利益相关者(比如开发人员、架构师)查看架构图时,他们并不知道原来还有所谓的口头说明。试着把所有必要的信息都包含在架构图里,而不是事后加以说明。
    层级冲突或混合抽象

    在同一个架构图里添加不同层级的抽象可能会导致冲突的出现,因为它们是从不同的角度描述问题的。例如,把组件添加到上下文架构图里,或者把类加到部署图里,这些都会偏离架构图原先的目的。在创建架构图时,试着保持相同的抽象层级。
    使用混乱或含糊不清的架构图表达过量的信息或无效的细节

    爱因斯坦曾经说过,“凡事应该尽可能简单,简单到极致”。对于架构图来说也是一样的,我们需要谨慎地选择信息的层级和粒度,这并不是一件容易的事情,它取决于所使用的架构模型、架构师的经验和系统的复杂度。
    在创建架构图时可参考的指南

    除了上面列出的问题清单,还可以参考如下的一些指南来创建更好的架构图。

    选择最优的架构图数量

    Philippe Kruchten说过,“架构是一项复杂的工作,只使用单个图表来表示架构很容易造成莫名其妙的语义混乱”。要对系统进行良好的文档化,我们不能只使用一种图表。不过在创建架构图的时候,我们也难以确定该使用哪些类型的架构图以及应该创建多少个。在做出决定之前,我们需要考虑多方面的因素。例如,架构的属性和复杂度、架构师的技能和经验、可用的时间、维护成本,以及利益相关者的关注点。网络工程师可能想看到包含了主机、通信端口和协议的网络模型,数据库管理员更关心如何系统是如何操作、管理和分布数据的。所以,我们要选择最优的架构图数量,不管这个数字是多少。
    糟糕的架构图(比如缺乏文档)可能会缺失一些信息,反过来说,如果架构图太多(比如过度文档化),那么用于保持架构图一致性和更新架构图的工作量也会相应增加。

    保持架构图的结构一致性和语义一致性

    架构图之间应该在方框、形状、边框、线条、颜色等方面保持一致。架构图的结构外观应该是一样的,团队不同成员创建的架构图不应该给任何一个利益相关者造成理解上的障碍。理想情况下,可以在所有项目里使用相同的建模工具。
    从语义角度来看,所有的架构图与最新的代码变更之间以及架构图与架构图之间都应该定期保持同步,因为一个架构图的变更可能会影响到其他架构图。同步可以通过手动进行,也可以通过建模工具自动触发。通过建模工具自动触发会更好一些,不过这也取决于具体的项目。最终的目的是要保持架构图和代码之间的一致性,至于使用什么样的方法或工具可以自行决定。Simon Brown说,“如果架构图与代码失去了联系,那么就无法用来改进架构”。他的话其实是在强调保持语义一致性的重要性。
    避免架构图碎片化

    架构图越多就越难以理解,而且维护起来也很费劲。最直接的后果就是有可能出现碎片化(比如,通过两到三个架构图来描述同样的质量属性——性能、伸缩性,等等——但每一个架构图都无法完整地描述它们)。在这种情况下,建议移除不能反映相关质量属性的架构图,或者把它们合并起来。

    保持架构图的可追踪性

    保留架构图的变更记录、比较不同版本架构图之间的不同点,以及可以很容易地进行回退,这些都是很重要的。如果建模工具不支持这几点,那么对我们来说可能会是个问题。最近业界倾向于使用简单而直接的文本语言来生成架构图,这样似乎可以解决可追踪性问题。这样做的另一个好处是可以保持架构图之间的结构一致性。
    在架构图旁边加上图例

    如果你没有使用标准的架构描述语言(比如UML、ArchiMate),那么就要在图例里注明每个架构图元素的用意(比如方框、形状、边框、线条、颜色、缩略语,等等)。
    如果使用了标准的架构描述语言,只要在图例里添加关键性的架构描述,不需要太多额外的信息,因为看图的人都知道如何按照标准的描述语言规范来理解你的架构图。
    使用架构描述语言(比如UML、ArchiMate等)会有不一样的效果吗?

    关于如何在项目里使用正确的架构描述语言有很多不同的看法。有些人认为UML太过死板,用来做架构设计缺乏灵活性,在某种程度上我认同这个看法。有时候,在不依赖UML的profile和stereotype特性的情况下也能很好地完成架构图设计。至于说到其他的架构描述语言,我认为ArchiMate更加强大,相比UML,它更适合用来为企业系统建模。还有BPMN,它更专注业务流程的建模。对这些工具进行深入比较已经超出这篇文章的范围,所以不再累述。

    在选择架构描述语言时,综合性和灵活性是首要考虑的因素。但据我所知,完全不使用架构文档的情况也很常见。有些人觉得创建架构文档是一件很无聊的事情,而且觉得它们没有什么意义。这样的项目应该不在少数。人们因为没有使用合适的架构描述语言,所以创建不出很好的架构图,相反,如果他们使用了更好的工具,结果可能会大不一样。但事实并非如此,实际上他们跟本不想去创建什么架构文档(包括架构图),更糟糕的是,他们可能不知道该如何创建架构图。这是我们首要解决的问题——了解文档的重要性以及如何创建它们(给软件工程师做培训),然后选择合适的工具。

    在系统和架构发生变化时如何更新架构图?

    更新架构图有几种方式,我将会介绍其中的三种。第一种,也是最简单的一种,就是直接从代码生成架构图。这样可以保证架构图与代码是一致的。不过目前的工具还不能完全支持这种方式,在没有人工介入的情况下,工具还无法基于代码生成精确且有意义的架构图。Len Bass说,“在最理想的开发环境里,只需要一个按钮就能得到我们想要的文档”。他指的就是自动生成架构图,但我们还远远没有达到那种程度。

    第二种,先用建模工具创建架构图,然后生成代码骨架(比如组件或包、API),随后开发人员可以在骨架上添加代码。每次架构图发生变更,需要从架构图端重新生成代码骨架。

    第三种,在每次加入新特性时手动更新架构图。为了保证代码与架构图的一致性,建议把更新架构图作为开发流程的一部分。不过我们不推荐这种方式,因为这样很容易造成架构图过时或出现不一致(比如开发人员总是忘记或者不想更新架构图)。

    我的建议是混合使用现有的工具,结合手动和自动的方式来创建架构图。例如,尝试自动生成架构图,使用工具基于代码渲染出符合基本要求的架构图,不包含混乱无用的信息。架构图可以高度可变(比如可以适应频繁的开发变更,这类架构图一般具有较低层次的抽象),也可以是静态的。这类图表可以是上下文架构图、参考架构图、包图、类图、实体图,等等。不过有时候仅仅基于代码无法生成满足需求的架构图,所以在这种情况下,自动创建架构图不是理想的方式。这个时候需要手动建模作为补充,这类架构图包括时序图、状态图、并发图、部署图、运营图,等等。

    现代架构(如微服务)对架构图有什么影响?

    微服务或其他任何一个现代架构风格(如无服务器、事件驱动)只会影响到系统的结构、组件间的交互方式(比如组件间的关系)和原则。在我看来,我不认为架构风格会改变架构图原先的含义。不过,相比传统的系统(比如单体),我们所说的现代系统架构具有更高层次的复杂性,它们对架构描述和架构图确实会有一些影响,这些是我们需要注意的。我们需要考虑分布式组件(比如分布式微服务)、每种组件的类型、组件间的交互方式(比如边界、API、消息)、他们的生命周期以及从属关系。

    综上所述,我们需要在架构图中体现系统的分解、开发、部署和运维。假设有一个包含了大量微服务的系统,它就会有很多的架构图,因为每个微服务都可能有自己的架构图。一致性(例如,改变一个服务的API会影响到其他服务,所有相关的架构图都需要做出修改)、碎片化(例如,一个架构图无法反映分布式服务的高可用性和性能)和横断面(例如,是谁在负责处理系统的监控或安全问题)问题会让人手忙脚乱。我们首要面对的挑战是如何进行良好的团队协作,不仅仅是开发,也包括后续的维护。

    总而言之,现代系统的复杂性会带来额外的问题,它们会在架构图层面造成一定程度的影响。

    作者 : Ionut Balosin是Luxoft的软件架构师,拥有十年以上的应用程序开发经验,专注性能调优和软件架构。他是开发大会的演讲常客,也是一名技术培训师。

    出处: http://www.infoq.com/cn/articles/crafting-architectural-diagrams
    

    版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

    更多原创文章详见: http://chillyc.info

    这里写图片描述

    展开全文
  • 架构功能

    千次阅读 2020-09-17 22:10:02
    支付系统功能架构图 支付业务的基础系统的复杂性和稳定性是支付业务是否能够及时安全处理的根本,该支付系统功能架构图收集了支付宝的系统架构。完整的支付系统整体架构! 从产品分类、模块功能和业务流程,了解支付...

    支付系统功能架构图

    支付业务的基础系统的复杂性和稳定性是支付业务是否能够及时安全处理的根本,该支付系统功能架构图收集了支付宝的系统架构。完整的支付系统整体架构! 从产品分类、模块功能和业务流程,了解支付产品服务的设计。支付系统要兼并合规性、易用性、安全性为一体,在前期设计时一定要综合考虑。支付系统架构图为通用支付... 

     

     

    平台数据架构流程图

    标准大数据平台架构,标准大数据平台架构,大数据平台架构,数据仓库,数据集市,大数据平台层级结构,数据挖掘,举报,包含该模版的分享。数据架构设计(数据架构组) 概述 总体描述 相对于业务架构和应用架构,数据架构在总体架构中处于基础和核心地位。首先应根据业务架构分析来定义数据架构,然后将数据架构结... 

     

     

    系统流程图

    系统流程图(又称业务流程图)进行可行性分析时,通常用系统流程图来描述所要开发的系统。用于 描述项目的处理流程、范围、功能等。系统流程图是概括的描绘系统物理模型的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个具体部件(程序、文件、数据库、表格、人工过程等),表达数据在系统各个部... 

     

     

    Spring Cloud 微服务总体架构图

    Spring cloud作为当下主流的微服务框架,让我们实现微服务架构简单快捷,Spring cloud中各个组件在微服务架构中扮演的角色如图所示。spring-cloud-aws:用于简化整合 Amazon Web Service 的组件spring-cloud-bus:事件、消息总线,用于... 

     

     

    财务管理系统业务流程图

    这是一个财务管理系统业务流程图,模板主要包含了2大部分:角色和业务执行流程.其中角色就包含了系统管理员,出纳/会计,财务主管,CEO.整个财务管理操作流程清晰明确。ERP中销售流程及财务管理流程,ERP管理系统是非常复杂的的系统,涉及到多个模块。仓库管理业务流程图, ERP业务流程图的画法, ... 

     

     

    系统业务流程图

    商业流程图,又叫做业务流程图,是一种描述系统内部各人员与各单位的业务关系、管理信息以及作业顺序。系统流程图是概括的描绘系统物理模型的传统工具。它的基本思想是用图形符号形式描绘系统里面的每个具体部件,表达数据在系统各个部件之间流动的情况。系统分析员在工作中往往需要绘制各种各样的流程图

     

     

     

    组织架构流程图

    组织架构是企业的流程运转、部门设置及职能规划等最基本的结构依据,常见的组织架构形式包括中央集权制、分权制、直线式以及矩阵式等。组织架构关系图有总经理、副总经理、研发部、采购部、财务部、销售部、生产部。完善组织体系架构,员工体系,薪酬体系,绩效体系,岗位体系,建设队伍,创造激励机制!

     

     

     

    电商物流仓储流程图

    在电商仓储内部中,其作业流程主要包括订单处理、采购作业、入库上架、在库管理、拣选包装、出库作业、配送作业、退货作业以及财务会计作业等。电子商务的快速发展,其配套设施服务也需跟上,而其中最重要的非仓储、配送等物流服务莫属。电子商务间的竞争,最终转变为后端物流之争。

     

     

     

    精益质量管理流程图

    精益质量管理流程图,该流程图以精益质量管理为中心,从五个小点逐步扩散,改善了工作的效率。精益管理有七大任务,分别是:安全、质量、生产、设备、成本、人事和环境!质量管理部进料、生产过程、出货、新产品研发、不合格品控制等工作流程图。建立和实施质量管理体系工作流程: 第一阶段:策划与准备 一、体系策...

     

    展开全文
  • 如何画好一张架构图

    千次阅读 2020-06-15 13:28:21
    架构图是什么?为什么要画架构图?如何画?有哪些方法?本文从架构的定义说起,分享阿里文娱高级技术专家箫逸关于画架构图多年的经验总结,并对抽象这一概念进行了深入地讨论。较长,同学们可收藏后再看。 什么是...
  • WebRTC架构图说明

    2020-07-19 21:40:59
    首先我们通过webRTC官网上的一张了解一下webRTC的架构: 网上也有很多资料说这张图在webRTC的官网上,但是很多童鞋根本就找不到。这是因为很多童鞋没有进行科学上网: WebRTC架构说明英文文档:...
  • 云计算的架构图

    万次阅读 多人点赞 2017-11-30 09:32:59
    云计算中心很少为特定的应用存在,但其有效支持业界大多数的主流应用,并且一个“云”可以支撑多个不同类型应用的同时运行,并保证这些服务的运行质量。   (5)高可扩展性: 用户所使用“云”的资源可以根据其...
  • 前言:今天在这里分享几个图谱,大家可以对照着几个图谱,看看自己会什么,能做什么,又有那些不足的地方,从而去提升自己,其次脑海里有一个全面的图谱,对于自己以后的...二、质量架构全景 三、质量效率全景 ...
  • 实时数据库 架构图

    千次阅读 2016-01-22 09:44:06
    分布式结构    真正的分布式数据库。数据服务器、Web服务器、设备驱动、人机界面、实用工具可任意组合,分别运行在相同或不同机器上。...适用于数据存储、生产管理、先进控制、优化控制、流程模拟等应
  • 作者 | 箫逸 阿里文娱高级技术专家 ... **导读:**架构图是什么?为什么要画架构图?如何画好架构图?...我们日常工作中经常能看到各种各样的架构图,而且经常会发现大家对架构图的理解各有侧重。深入追究到这个.
  • 实际场景架构图实例及详细说明

    千次阅读 2019-08-31 13:08:51
    系统设计中,离不开各种各样的架构图。下面列举各场景下,不同架构图描述的具体解决方案,抛砖引玉,加深对架构图的思考,为实战中怎么运用起一些参考。 一、共享平台逻辑架构设计 如上图所示为本次共享资源平台...
  • 凌云时刻 · 洞见导读:深入浅出,从底层逻辑开始演示一张架构图的形成路径。作者 |阿里巴巴文娱技术来源 |凌云时刻什么是架构图?如何画好一张架构图,要做好这件事情首先要回答的就是什...
  • 十台服务器集群架构图

    千次阅读 2017-02-15 23:32:00
    架构图体现了动态网站的速度、稳定、冗余、安全等。 在速度方面,咱们做了nginx协助tomcat负载均衡,实现多用户访问同时处理,加快处理速度。在速度方面,咱们还做了tomcat和nginx的动静分离,众所周知...
  • 工作两三年了,整不明白架构图都画啥?

    千次阅读 多人点赞 2021-03-01 08:46:26
    而我们画的架构图、流程图、结构图、功能图、逻辑图等,都需要好看、好懂、好用、好搞,因为: 好看是为了提升沟通效率, 好懂是为了提升交流共识, 好用是为了提升交付质量, 好搞是为了提升实施速度。 这就像君子...
  • 医院院科两级质量管理组织结构
  • 可供参考的流程-农产品质量安全追溯管理平台架构(英文),在此模版下各位按照自己的情况进行修改,设计出自己或公司所需要的流程
  • 持续集成管理平台不只是CI...代码质量管理:Sonar(Checkstyle、PMD、FindBugs……) 持续集成引擎:Hudson、Jenkins、Apache Continuum 应用持续部署:操作系统、JDK、Tomcat、JBoss… 实施持续集成过程中要用到的
  • 物联网作为一个系统网络,与其他网络一样,也有其内部特有的架构。...三是应用层,把感知层的得到的信息进行处理,实现智能化识别、定位、跟踪、监控和管理等实际应用。   提供丰富的基于物联网的应用...
  • 架构上来看,飞天平台从底层框架到解决方案层主要有三层: 云边端一体的高性能训练和推理引擎框架,包括 Alink、MNN、XDL、SQLFLOW、PAI TensorFlow、PAI Blade、Elastic DL等; PAI机器学习平台:包括轻量级 AI ...
  • Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方...
  • 本文相关资料下载 识别下方二维码,回复【架构】,获得下载链接。 之后会持续整理一些可下载的学习资料分享给大家,大家记得将公众号设置星标哦!更多资料获取、学习交流后台回复【加群】 ...
  • 贷款系统架构业务

    2019-04-19 09:30:29
    采用统一的信息化技术,才能对贷款实行全过程化、规划化的管理,达到对信贷资产质量实施的有力检测,降低信贷系统风险目的。 随着金融改革的深入,平安金融壹账通迫切需要实施一个适合贷前、贷中、贷后操作的信贷...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,947
精华内容 47,578
关键字:

品质管理架构图