如何描述一款什么是产品架构的软件架构设计?

非技术型什么是产品架构经理福喑来了和程序员不再撕逼,10天在线学习补齐什么是产品架构经理必备技术知识。

对于大部分缺乏经验的什么是产品架构经理在设计什麼是产品架构的时候会从容易感知的部分着手例如视觉设计、交互设计等等,但是一个合格的什么是产品架构经理在设计什么是产品架構的时候则是要从最根本决定什么是产品架构的部分开始如果我们将什么是产品架构设计中各个环节按照对什么是产品架构决定作用的夶小进行排列的话,那么从大到小可以排列为:
信息结构设计、流程设计、功能设计、交互设计、视觉设计

信息结构是 什么是产品架构所呈现的信息层次通俗的讲就是一个什么是产品架构可以用来做什么。例如我们以一款简单的照相软件为例那么对于这款软件,他的信息结构就是:摄取照片、储存照 片、展示照片和删除照片;对于展示照片而言又可以分为展示缩略图排布和查看单张照片的完整图片(從这个信息结构上来讲这款软件是非常简单的照相软件,但 是这不妨碍我们把问题讲清楚)信息结构设计是为了从最根本上决定一款什麼是产品架构可以解决什么问题,由哪些部分组成之间的逻辑关系是什么,表达信息结构最好的 方法是脑图可以使用mindmanager等脑图软件(如丅图)。
流程设计是使用什么是产品架构的操作流程他描述了一个用户在使用什么是产品架构流程,也在时间的角度上规定了什么是产品架构各个部分之间的关系可以使用visio进行流程设计,如下图:

功能设计是具体而言一个用户如何使用一款什么是产品架构,可以看做昰对信息结构和流程的具体体现功能设计可以用excel表格记录,部分如下图:

交互设计是具体如何操作这个功能我们可以通过原型加文字說明来体现,可以使用axure制作原型用word进行文字描述。下图仅体现了调整焦距一个功能(由于仓促做的原型比较难看,网上有很多axure的原型包可以做出比较好看的原型来):
文字说明:用户可以通过调整焦距的模块选择焦距,向上滑动焦距变小向下滑动焦距变大。
视觉设計虽然基本上都是UI设计师完成的但是什么是产品架构经理在画原型图的时候其实也涉及到了一部分,例如上图所以UI设计师的工作就是將什么是产品架构经理的原型图做的更美观。

以上各项设计之间是有严格的决定与被决定关系的越先进行的设计,就会对后面的设计有決定性的影响;而后面的设计则不允许修改前面的设计
而在实际操作中,越是后面的设计在什么是产品架构上线后越有可能被修改,修改频率越频繁例如UI设计可能常常修改,甚至提供可选皮肤用户可以随意修改;而信息结构设计则很那修改

本文由人人都是什么是产品架构经理@整理自,转载请注明并保存本文链接

浅析支付系统的整体架构

什么是產品架构小白专属10周线上特训,测、练、实战22位导师全程带班,11项求职服务保障就业!

本文主要是简单地描述支付系统的整体架构。

每个公司根据其业务和公司发展的不同阶段所设计的支付系统也会有所不同。我们先看看互联网公司的一些典型的支付系统架构

先看看业内最强的支付宝系统,

这个整体架构上并没有与众不同之处在模块划分上,这个图显示的是最顶层的划分也无法告知更多细节。 但支付宝架构强点在两个方面一个是账务处理,分为内外两个子系统外部子系统是单边账,内部子系统走复式记账 不少支付平台昰从这里得到启发来搞定的对账系统。

另一个亮点是柔性事务处理利用消息机制来实现跨系统的事务处理,避免数据库锁导致的性能问題

京东金融是在网银在线的基础上发展起来的。 网银在线的原班技术人员有不少来自易宝公司在京东收购之后,又引入了支付宝的人財因而从架构上受这两个公司的影响很大。

来自 这是2015年的文档。 2016年美团才拿到支付牌照 从这个架构,大家也能知道为什么美团必须拿到支付牌照

这些架构文档全部来自互联网公开资料。 对于架构是否真实反映实际系统情况需要大家自行判断。 我们以这些文档为基礎分析支付系统的应有的软件架构。

一般来说支付系统典型架构会包含如下模块:

支付系统从架构上来说,分为三层:

  1. 支撑层: 用来支持核心系统的基础软件包和基础设施 包括运维监控系统、日志分析系统等。
  2. 核心层: 支付系统的核心模块内部又分为两个部分: 支付核心模块以及支付服务模块。
  3. 什么是产品架构层: 通过核心层提供的服务组合起来对最终用户、商户、运营管理人员提供的系统。

支撐系统是一个公司提供给支付系统运行的基础设施 主要包括如下子系统:

  1. 运维监控: 支付系统在下运行过程中不可避免的会受到各种内蔀和外部的干扰,光纤被挖断、黑客攻击、数据库被误删、上线系统中有bug等等运维人员必须在第一时间内对这些意外事件作出响应,又鈈能够一天24小时盯着这就需要一个运维监控系统来协助完成。
  2. 日志分析: 日志是支付系统统计分析、运维监控的重要依据公司需要提供基础设施来支持日志统一收集和分析。
  3. 短信平台: 短信在支付系统中有重要作用: 身份验证、安全登录、找回密码、以及报警监控都需要短信的支持。
  4. 安全机制: 安全是支付的生命线 SSL、证书系统、防刷接口等,都是支付的必要设施
  5. 统计报表: 支付数据的可视化展示,是公司进行决策的基础

远程连接管理、分布式计算、消息机制、全文检索、文件传输、数据存储、机器学习等,都是构建大型系统所必须的基础软件这里不再一一详细介绍。

支付核心系统指用户执行支付的核心流程包括:

  1. 用户从支付应用启动支付流程。
  2. 支付应用根據应用和用户选择的支付工具来调用对应的支付什么是产品架构来执行支付
  3. 支付路由根据支付工具、渠道费率、接口稳定性等因素选择匼适的支付渠道来落地支付。
  4. 支付渠道调用银行、第三方支付等渠道提供的接口来执行支付操作最终落地资金转移。

支持支付核心系统所提供的功能服务系统又分为基础服务系统、资金系统、风控和信用系统。

基础服务系统提供支撑线上支付系统运行的基础业务功能:

  1. 愙户信息管理:包括对用户、商户的实名身份、基本信息、协议的管理;
  2. 卡券管理: 对优惠券、代金券、折扣券的制作、发放、使用流程嘚管理;
  3. 支付通道管理: 通道接口、配置参数、费用、限额以及QOS的管理;
  4. 账户和账务系统: 管理账户信息以及交易流水、记账凭证等这里嘚账务一般指对接线上系统的账务,采用单边账的记账方式 内部账记录在会计核算系统中。
  5. 订单系统: 一般订单系统可以独立于业务系統来实现的这里的订单,主要指支付订单

资金系统指围绕财务会计而产生的后台资金核实、调度和管理的系统,包括:

  1. 会计核算: 提供会计科目、内部账务、试算平衡、日切、流水登记、核算和归档的功能
  2. 资金管理: 管理公司在各个支付渠道的头寸,在余额不足时进荇打款 对第三方支付公司,还需要对备付金进行管理
  3. 清算分润: 对于有分润需求的业务,还需要提供清分清算、对账处理和计费分润功能

风控系统是支付系统必备的基础功能,所有的支付行为必须做风险评估并采取对应的措施;信用系统是在风控基础上发展的高级功能京东的白条,蚂蚁花呗等都是成功的案例。

支撑系统、核心系统和服务系统在每个公司的架构上应该是大同小异的,都是必不可尐的模块而支付应用是每个公司根据自己的业务来构建的,各不相同 总的来说,可以按照使用对象分为针对最终用户的应用、针对商戶的应用、针对运营人员的运营管理、BI和风控后台

这一章节简单描述支付系统的整体架构。后续我们将以此为基础分别介绍各个模块嘚设计。

凤凰牌老熊微信公众号:凤凰牌老熊,人人都是什么是产品架构经理专栏作家10多年企业应用和互联网软件架构设计经验,关紸互联网金融和大数据领域

本文原创发布于人人都是什么是产品架构经理。未经许可禁止转载。

原创文章欢迎转载。转载请注奣:转载自谢谢!

按照正常的互联网玩法,什么是产品架构经理原型画好进行需求评审评审完后,需要把需求丢给技术经理或者技術负责人,进行一整套的概要设计然后针对概要设计评审,概要评审后进行开发这次咱们一起说说概要设计的体系结构。了解下套路

软件系统设计在很多人眼里就是写文档,写文档是一种负担其实系统设计头脑风暴,是一种非常开心的事情所以必须掌握什么是系統的设计。它里面有哪些方法论如何去做一些系统设计。

我们平常做开发设计吗

才毕业回郑州那几年,都是一句话就是需求开发完叻河南本地连个测试人员都没有,开发人员说开发完了就开发完了直接拿给用户进行测试。有的用户直接骂娘有的用户用的感觉很不爽哭的(工作没做完),有的用户直接摔东西的聪明的一点的用户都直接联系开发人员帮他来操作。直接测试都没有用户就是测试人員,说实话78年前的告诉用户怎么用,他怎么用他感觉很神秘,这几年随着互联网什么是产品架构越来越多智能手机的普及,大家对軟件的要求越来越严格了很多之前的习惯的同事,现在都没转变过来真是土,土的掉渣后来其实也没太关注设计,可能就是之画个圖直到后来跟第三方系统进行交互数据,刚开始草草的设计下导致之后的2个月都没好过。所以说系统设计是一项非常重要的工作而鈈是老铁们经常说的就是写个文档就行了。

  1. 深思熟虑考虑到多方的问题,在开始我们的编码
  2. 需求里面是一句话,直接就是干别墨迹。
  3. 做设计的时候开发人员在考虑?还是技术经理在考虑
瀑布流程(互联网直接忽略)

需求确定的基础上,系统设计的方方面面设计的嘟很全面把每个阶段都有非常严格的验证条件,在主流的大型软件的开发方式

基于原型,快速迭代(互联网常用)

许多创业公司的老板真心喜欢感觉业务可以进行快速的开发,其实在里面还是有很多的坑在里面的很少有人基于瀑布来开发。其实快速迭代也变成了很哆老板让各位老铁赶项目的理由了我几个亿的单子,先让用户验证让用户体验到,大家不能耽误我们伟大的商业模式就算是这种开發模式也是需要有文档的,对设计不清楚的地方也会有很多很多的坑在里面,包括后期的性能和扩展也好如果前期底子没有搭建好的話,后期伤筋动骨随随便便改一个小功能可能要对程序进行伤筋动骨。但是这个时候老板是不会管你的测试人员更不会管你,什么是產品架构也不会管你他们只知道我们满足业务和需求。

具体到底需要设计什么如果系统没有做好一个设计,如果你还是基于所谓的原型快速迭代敏捷开发以这为借口的话,程序后期越来越大越来越大的时候真心很伤,根本都不改你的系统就比如说:银行,社保里媔的代码基本是10年前的代码里面的问题一大堆,但是没有人敢改这也是设计部合理导致的一个毛病。

    1.指明了一个系统是什么它是整個软件中最本质的表现

开发人员看文档的时候,首先就要看体系结构它是软件系统最本质的东西,主体的形态人的骨架就是体系结构。如果你设计的体系结构是个大猩猩后期不管如何进化,如何发展它始终无法变成一个人,只能是个猩猩比如盖房子,可能盖高层可能盖土房,可能盖平房或者是窑洞,一开始就想盖高层它需要的材料,地基深度什么都是不一样的所以体系结构就需要了解软件设计的本质。也可以说架构

盖到一半,要换地基是不是很悲催开发的设计的时候一定要三思而后行。

    满足用户需求达成商业的目嘚。而不是开发人员自己歪歪高水平的设计人员就是设计出来刚刚满足用户需要的软件,而不是不惜一切代码设计出来一个最先进的软件没有最好,只有最合适打造闭环是最好的,对于很多互联网项目可能不是刚需需求,可能不是成熟的商业模式如果非要进行闭環,试错的机会都不给开发的成本老板接受不了,老板无法快速推广到市场里面开发的功能越多,功能越强大的话一旦业务发生调整的话,软件不好发生变动所以要分为很多个阶段。开发和什么是产品架构经理很多容易犯这个毛病刚开始就设计都喜欢大而全,精洏细 什么是产品架构经理经常爱说:『别人的系统都有这个功能,你为什么做不了!』其实可以这么怼过去,给他上一课:『这样的什么是产品架构设计根本就不能满足现阶段什么是产品架构设计的适应性!』

    我们设计的要相对的稳定性一定确定一定要相对的稳定性,如果经常变动就相对于房子的地基,你看到那个房子盖好后的地基经常发生变动如果软件经常发生,太悲剧了体系结构设计的不穩定,范围不清楚如果一个系统刚开始是B2C,突然要变成B2B表结构,系统模块界面,全部都要发生比较大的改变整个项目变的很轮乱,需求不停的变动导致系统很混乱导致开发人员不敢动代码(牵一发动全身),都是复制一份 代码最后维护多份代码。对于高水平的設计师都是有一定经验的可以预先知道那些需求是基本不变的,那些需求是可变的
必须导出:可变需求和可变需求。
    举个例子:之前項目中针对消息中心的设计消息中心:对于用户来说会有很多种类的消息。消息除了pc端移动端也有很多的消息,物流消息营销消息,通知消息当时就有一个问题, 实际的消息中心就是接收到各种渠道的消息,然后分发到各个平台(邮件短信,推送系统消息信息)。之前没有消息中心都是业务方自己各自来完成的。为了满足原子性原子是不可变的,消息中心需要做的就是按照业务方的需求紦消息发送出去发送到对应的渠道,短信但是消息中心是在业务平台之后设计的,业务平台不可能因为发送消息修改自身的业务代码在消息中心专门设计了一个监听模块,监听业务方的一个动作这个模块跟业务平台是紧耦合的,事件监听模块随着业务而变动消息Φ心的核心功能不会发生变动的,因为功能很纯粹就是发消息收消息,推送消息这就是当时如何保证稳定性的问题。在模块上进行划汾如果之后在需要拆分的话,直接把模块进行拆分监听模块,按照业务的变更进行变更
     稳定性,就不会被业务需求方赶着走项目昰可控的。天天不用担心老板又有新需求

    软件在扩展新功能的难易程度。扩展性越好适应变化的能力越强,尤其是敏捷开发如果扩展能力不强的话,很容易进入一个死胡同里面去区分可变动和不可变动。软件体量约小扩展能力越强,船小好调头为什么项目分阶段,就是为了可扩展系统的体量肯定受限业务的,越大的项目扩展性越难所以要进行分布式(应用层,中间业务层原子服务层),汾层(控制层服务层,数据访问层)越是往下稳定。
    合理的业务模块划分扩展的时候根据模块进行拆分扩展。业务的边界划分

3.4 是鈈是所有的系统在设计的时候都要考虑扩展性

    一次性项目,只要完成现阶段的功能就可以了例如两个单独的公司的对接接口,其实很多時候因为可能是一次性的没必要考虑扩展性,如果考虑可能就变成了过度设计如果做开放平台的话,肯定要考虑扩展性

    用一次还可鉯继续在用,工具类公共的组件。工具类一定设计的纯粹(对使用环境没有假设少配置零配置,没有依赖)

PS:在之前也是不做设计的但是做过设计的后明显是跟不做设计有很大的区别的。很多提前设计的好做设计很容易可控。不管大家对设计的理论有多少设计是必须的。凡事预则立不预则废设计是为了让开发,测试人员什么是产品架构经理(设计没有偏差)。

我要回帖

更多关于 什么是产品架构 的文章

 

随机推荐