大型 SaaS 平台产品架构设计

当我们去搜索“架构”,可以得到很多的架构图片,比如组织架构、业务架构、数据架构、技术架构、安全架构、产品架构、部署架构等。

什么是架构,通常大家说架构一般指软件架构,架构是指软件的基础结构,创造这些基础结构的准则,以及对这些结构的描述。在这个定义基础上,我们可以简单理解为架构往往是对事物主体的结构性描述。

产品架构是对产品的一种结构性描述。一般可以包括前端系统、业务管理、运营管理、基础支撑等子产品或子系统,并描述各个子产品或子系统之间的关联关系。

在公司整体战略之下,需要基于公司战略等多种因素设计组织架构,组织架构影响业务架构,业务架构影响产品架构,产品架构影响技术架构。

从这个链条可以看出产品架构基于业务架构。做产品架构前,需要对业务架构有清晰的了解。

一、业务架构对产品设计的5个影响

业务架构是基于组织架构设计的,业务架构是把企业的业务战略转化为日常运作的渠道,业务战略决定业务架构,它包括业务的运营模式、流程体系、组织体系、资源分布等内容。

业务架构是一个比较专业的研究课题,技术人员一般对业务架构的关注度相对较低,更重视产品架构、技术架构。这里我们简单示例什么是业务架构,这些架构事实上影响我们的产品架构设计,如下图5-1就是其中一个业务架构设计的框架图。

dbe126e24b34c956cd40656e5d68119c.jpeg

业务架构图

业务架构对企业的收入模式、支出成本、客户群体、客户关系、需要的资源、关键活动,以及合作伙伴等进行设计说明。

业务架构对产品架构的影响,主要体现在以下几个方面:

1. 系统参与角色

业务架构一般会明确用户范围;营销端的参与人员,比如渠道商或代理商,大客户销售团队等;运营端的参与人员,如售后、客户成功等团队;合作伙伴的参与,如第三方合作平台等。每类角色按需设计对应的使用终端。

2. 系统运营流程

业务架构对运营流程有较明确的定义,如开户、续费、注销、变更、售前售后工单处理、库存入库出库处理、合同流程、发票流程等。这些构成SaaS平台的运营流程,是产品实现商业价值的重要手段,产品环节一般需要有相应的处理。

3. 核心价值

业务架构需要明确SaaS服务对客户带来的价值,这个价值往往需要通过产品端来呈现,业务架构的价值描述,很大程度上就是我们产品建设的侧重点。

4. 周边系统

业务架构中的合作伙伴、资源一定程度上体现出需要与产品交互的其他系统,这些“其他系统”可能是产品需要的一些基础能力(如文字识别、计算能力等)、数据(权限数据、业务数据)、流程(管理流程、运营流程)等 ,而这些能力需要合伙伙伴或者公司的现有资源中提供。这些周边系统会以各种各样的作用支撑着产品的运转。

5. 计费模式

业务架构一般会说明收入和成本模型。收入的处理过程影响运营产品的设计,如公司在线下收款,可以产品只需要控制用户账号的可用状态或有效期,如果是线上收款,就需要设计一套开通、续费的线上支付流程。有些SaaS产品还会涉及到收入和成本费用的摊销,以配合财务工作的处理,也可能需要在产品中完成此类计算。

假如所在公司没有清晰的业务架构,或者部分环节缺失怎么办?如果可以引导,我们尽量引导业务部门完善相关的环节,但有些客观情况是我们无法改变的,我们可以尝试按照现有架构,收集梳理信息,做好整体的结构设计,确保具备可扩充能力,能够满足后续需求,再根据业务各环节成熟度设计产品架构,分阶段去实现。

二、产品架构

SaaS产品架构的设计,可以考虑模块化、渐进式设计。

2.1 模块化设计

所谓模块化是指降低业务间的耦合。低耦合、高内聚是技术架构的重要设计原则,在产品端也非常值得借鉴。

模块式化设计对于系统建模、技术实现、升级迭代、业务推广都有很多帮助。模块化设计也是对最小化场景(MVP)的一种有效支撑。

SaaS产品随着公司的发展,业务范围、功能都会越来越大,而客户可能仅需要部分能力,如果功能间耦合太多,对客户的功能选择会增加限制;销售政策制定起也会受到掣肘,无法灵活组合产品进行销售,对业务推广产生一定影响。

如何做好模块化设计?

模块化设计针对有独立性、可复用的业务或功能进行抽取,包装功能集合构成产品进行推广使用,方便客户根据需要进行产品组合,模块化设计在传统软件中也非常重要。

(1)归类与抽象

需要对相似的功能或者场景进行归类然后抽象出来进行设计。在软件设计领域,越是底层的东西越容易复用,越是偏向应用端的东西,越难以复用。比如构成一套软件服务,可以有服务器硬件、应用服务中间件(比如数据库等)、各种微服务、业务流程、外部入口等,这套软件架构中,服务器硬件是处于架构底层,比较基础且通用性很强;应用入口处于架构高层级,形式相对灵活,复用性较低。在产品端也是同理,基础信息如人员、机构等属于基础信息,同一组织在不同系统中的结构大体一样,复用性强,其次是各类业务流程,再其次是业务表单。

我们要做的产品模块化设计,是针对不同用户的需求,将完成某项业务的场景进行分析、归类、抽象,抽取共性部分,做成可实现多种组合的产品形态。

(2)数据接口

系统一般由逻辑(算法)和信息两部分构成,信息又分为内容和数据;逻辑是构建软件功能的骨架,内容和数据是血肉,其中以数据尤为重要。

假如要实现软件模块化且模块之间相互独立,必须要先抛弃逻辑(实现方法),因为有逻辑就代表这两个模块谁也离不开谁,就不能称之为独立。

如果这两个模块必须要关联在一起,但又不允许它们在逻辑上互相干涉,那么最好的办法就是为它们内部包含的数据进行抽象化,形成标准化接口,以数据调用的形式实现两个模块间的互相协作。

模块化的一个特征是复用,在产品设计上复用意味着需要多种场景的结合,如果只有一个场景,就不是复用,在多个场景都需要使用的情况下,会有数据交互的需要,模块化设计就是要把共性的东西抽取出来后,提供标准接口,进行数据交互,这个共性的东西,可以是字段,也可以是规则。

大家通常理解的SDK,也是模块化设计的一种体现。模块化的产品可以是一个界面、也可以是一个功能,还可以是一个子系统。

2.2 渐进式设计

SaaS产品是逐步迭代的,产品设计也不是一蹴而就的,需要有一个不断前进的过程,渐进式设计非常契合SaaS产品。比如我们公司的产品,有企业客户、集团客户、代理商、平台运营人员、售后人员等参与,在设计系统的过程中,并不是一上来就把所有的工作全部做完, 这样周期太长,也不利于快速验证产品和市场的匹配,所以产品架构自然而然也变成了一种渐进的设计过程。

渐进式设计需要尽量考虑未来产品的全局,以满足后续产品扩展需要。

以我曾经做过的一个产品举例,产品的用户可以分为三大类,关系如下图:

08f12e6d789477c11e86df3ac903371a.jpeg

产品关系示例

在产品架构的搭建过程中,我们在清楚有这些基础结构以后,按照优先级顺序,逐步发展产品。如图:

78cf8471e4e04df75c20683601b554e8.jpeg

产品架构示例图

首先搭建了企业版产品和简单的运营管理系统,让用户能够使用起来。后来随着代理商力量的不断计入,需要为代理商设计一套管理系统,代理商系统需要依赖于公司运营管理系统(公司运营早期就已经有了代理商加入,运营管理平台只有最简单的代理商管理功能,能够标记客户所属代理商,但并没有去开发一套代理商管理系统,只是预留了扩展能力)。

随着平台的发展,用户群体不断扩大,集团客户也在不断增加,公司又基于企业版产品开发了集团版产品,满足集团企业客户的需要。

整个代理商管理系统和公司运营管理系统也跟随迭代,从最初的企业注册审核,到用户工单管理、结算续费管理、再到增加集团版的开通管理流程及结算流程,历时用了几年时间。产品整体架构经历了多个版本的迭代,才逐步变成现在的体系,并且还在持续完善中。

产品架构的渐进式设计和最小化可用产品(MVP)并不是一回事,产品架构渐进式设计是为了产品稳步推进并可扩展,先集中精力解决当前的重要需求和问题,所积累的产品成果,会成为将来产品发展的基础,而不是MVP中表示的每一个过程都可能要重构。

MVP有一个非常生动的例子,用户需求是一辆车,那么车的MVP及产品演进过程应该如下图5-5的第二部分所示:

237ce659a76d5548c2ab71b1d54199ec.jpeg

MVP的演进

产品架构的渐进式设计和产品的MVP有什么关系,其实是两个维度的事情,产品架构渐进式设计是对现在业务的快速响应,以及对未来业务扩张的支撑。

MVP是在产品迭代过程中,在不同的阶段,可能需要进行重构,上图的例子,在一些产品论坛上都有阐述,这对MVP的解释是很准确的,最小化可行产品需要做到每次迭代都是完整可用的,可用场景闭环是MVP的核心指标,这是产品从0到1的一种有效验证方式,但我认为这种重构并不一定是必须的.

很多软件产品在迭代的过程中,都是在原有基础上的扩展,实际上产品架构具备弹性和扩展性,这是一名优秀产品经理需要具备的能力,毕竟任何历史投入都是有成本的,优秀的设计应该是在原有基础上的扩展,而不是推倒重来。

B端产品在发展过程中,也比较注重产品和服务的结合,这个服务并不是指产品即服务,而是在早期产品不够完善的情况下,部分环节通过线下服务来补充,这也是SaaS产品发展的一种形式。

产品架构大体能够说清楚了系统间的关系,但对于具体的产品流程,产品架构图是无法表达清楚的,还需要辅助系统流程图进行说明。

7625b47d5bdab8e2c8dc2329c1935d41.jpeg

10 大架构特征/非功能需求


3e86ca44e6152620c3365fab65884401.jpeg

京东一面:MySQL 中的 distinct 和 group by 哪个效率更高?太刁钻了吧!


2e44bbfc9c30c71c0357eeaf471317d7.jpeg

7张图大总结:SQL脚本大全!


c18005f341e31a245f4fb257f75b8875.jpeg

面试题:如何保证缓存与数据库的双写一致性?


c4380db61b3eae275405a68641260e47.jpeg

SQL数据分析10大常用功能(附面试原题解答)


2f8beb123d79847c6e688b89358ee6bf.jpeg

微服务设计、拆分原则


ac005c47e809b9b338987f603acfc261.jpeg

都在叨叨云原生,一文全方位了解什么是云原生?


ec5437f521ca79bf221e29cb930152fd.jpeg

Redis实现分页+多条件模糊查询组合方案


7c3994fc3d9ae6cafc6028e17a02ec24.jpeg

又一个 SQL 神器,开源了!


6be62e4cb7fea9ca87c65e5bbe55f2e8.jpeg

如何优雅记录 HTTP 请求/ 响应数据


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
caj论文格式,请用CAJViewer阅读器打开。 【摘要】:SaaS(Software as a Service,软件即服务)模式是一种新型的软件提供方式,它的出现为中小企业信息的发展注入了新的力量。随着大型企业信息向纵深方向发展,作为大型企业供应链上下游的中小企业信息水平不足,已经成为影响其供应链管理的短板。中小企业信息难推进,主要是面临软硬件购买及维护成本过高的问题。而SaaS模式就将离散的软件买断模式转为集中的软件租用模式,从而为企业同时降低一次性软硬件投资成本及维护成本提供了可能。本文基于SaaS模式,研究并设计了应用集成平台中的相关模块,为中小企业提供一个可共享模式的应用集成平台的设计思路。 论文首先介绍了我国中小企业信息进程中面临的现状,引出了SaaS模式理念,并详细介绍SaaS模式及相关技术,发展趋势。针对中小企业资金技术方面的不足,提出了基于SaaS模式的应用集成平台总体框架的设计与开发。论文重点对应用集成平台的核心技术—多租户应用技术进行了深入的研究,确定了多租户技术的功能需求和解决方案,提出了多租户技术的启动方法和资源共享模型。在系统实现部分,通过RESTLET开源架构实现用户之间的统一认证与单点登录,完成分散在不同应用中用户资源的整合。服务集成中件间模块通过REST和SPRING开源架构完成应用集成平台上不同系统间的消息传输。页面集成模块通过ApacheWeb服务器提供的功能以及一套页面集成的开发规则构成,可以方便地将平台上其它系统的功能页面片段集成到自己的页面中。基于SaaS模式的应用集成平台的设计,为实现将软件资源通过网络以租赁的形式向企业客户提供服务,让租户通过网络共享软硬件资源提供了理论基础和技术路线。该平台还向PaaS模式的发展搭建了基础架构。
云计算设计和实施方案 摘要 电,并只需要对它们所使用的资源付费。今天,计算资源在人们的H常生活中逐渐变得不 可或缺,于是如何以更好地方式给公众提供计算资源受到很多研究人员和实践者的关注 。随着多核处理器、虚拟、分布式存储、宽带互联网和自动管理技术的发展,产生 了一种新型的计算模式——云计算,它能够按需部署计算资源,用户只需要为使用的资源 付费。从本质上来讲,云计算是指用户终端通过远程连接,获取存储、计算、数据库等 计算资源。云计算在资源分布上包括"云"和"云终端"。"云"是列互联网或大型服务器集 群的一种比喻,由分布的互联网基础设施(网络设备、服务器、存储设备、安全设备等) 等构成,几乎所有的数据和应用软件,都可存储在"云"里,"云终端",例如PC、手机、 车载电子设备等,只需要拥有一个功能完备的浏览器,并安装一个简单的操作系统,通 过网络接入"云",就可以轻松地使用云中的计算资源。 云计算概念 2.1 云计算产生的背景 21世纪初期,崛起的Web2.0让网络迎来了新的发展高峰。网站或者业务系统所需要处理 的业务量快速增长,例如视频在线或者照片共享,这样的网站需要为用户储存和处理大 量的数据。这类系统所面临的重要问题是如何在用户数量快速增长的情况下快速扩展原 有系统,随着移动终端的智能、移动宽带网络的普及,将有越来越多的移动设备进入 互联网,意味着与移动终端相关的IT系统会承受更多的负载,而列于提供数据服务的企 业来讲,IT系统需要处理更多的业务量。由于资源的有限性,电II,J成本、空间成本、 各种设施的维护成本快速上升,直接导致数据中心的成本上升,这就面临着怎样有效地 利用这些资源,以及如何利用更少的资源解决更多的问题,同时,随着高速网络连接的 衍生,芯片和磁盘驱动器产品在功能增强的同时,价格也在变得甘益低廉,拥有成百上 千台计算机的数掂中心也具备了快速为大量用户处理复杂问题的能力…。技术上,分布式 计算的日益成熟和应用,特别是网格计算的发展通过Internet把分散在各处的硬件、软 件、信息资源连接成为一个巨大的整体,从而使得人们能够利用地理上分散于各处的资 源,完成大规模的、复杂的计算和数据处理的任务oJ。数据存储的快速增长产生了以GF S(Google File System)、SAN(Storage Area Network)为代表的高性能存储技术。服务器整合需求的不断升温推动了Xen等虚拟技术 的进步还有Web2 0的m现,SaaS(Software as a Service)观念方兴未艾,多核技术的普及等,所有这些技术为产生更强大的计算能力和 服务提供了可能。计算能力和资源利用效率的迫切需求,资源的集中和技术的进步, 推动云计算应运而生。 2.2云计算定义 为了更好地理解云计算,先让我们举个生活中的例子、这就好比是从古老的单台发电机 模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就 像煤气、水电一样,取用方便,费用低廉,最大的不同在于,它是通过互联网进行传输 的。让用户通过高速互联网租用计算资源,而不冉需要自己进行大量的软硬件投资。许 多计算技术研究人员和实践者已经尝试着以各种各样的方式定义云计算。基于云计算的 发展和我们对云计算的理解,我们给出如下定义: 云计算是一个模型。这个模型使对可配置计算资源(例如网络、服务器、存储、应用程 序和服务等)的共享池(pool)的便捷、按需网络访问成为可能。云计算是一种新兴的共 享基础架构的方法。它统一管理大量的物理资源,并将这些资源虚拟,形成一个巨大 的虚拟资源池。云是一类并行和分布式的系统,这些系统由一系列互联的虚拟计算机 组成。这些虚拟计算机是基于服务级别协议(供应者和消费者之问协商确定)被动态部署 的,并且作为一个或多个统一的计算资源而存在。云计算可以按照用户对资源和计算能 力的需求动态部署虚拟资源,而不受物理资源的限制。用户所有基于云的计算和应用工 作在虚拟的资源上,不需要关心这些资源部署在哪些物理资源上,用户可以方便地变 更对计算资源的需求。 云计算的产业三级分层:云软件、云平台、云设备。 上层分级:云软件 Software as a Service (SaaS) 打破以往大厂垄断的局面,所有人都可以在上面自由挥洒创意,提供各式各样的软件服 务。 参与者:世界各地的软件开发者; 中层分级:云平台 Platform as a Service (PaaS) 打造程序开发平台与操作系统平台,让开发人员可以通过网络撰写程序与服务,一般消 费者也可以在上面运行程序。 参与者:Google、微软、苹果、Yahoo!; 下层分级:云设备 Infrastructure as a Service (IaaS) 将基础设备(如IT系统、数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值