童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

B端技术常识:软件工程的“搭积木”设计

4月20日 乔了了投稿
  本文介绍了从技术架构视角来审视软件体系是如何一步步发展演变,以及为什么说软件工程就像是搭积木。
  软件工程是一项既复杂又简单的系统性工程。说它复杂,是因为一整套良好运转的体系是由数百万行代码构建而成的;说它简单,是因为本质上软件体系是无数组件化的小模块拼装而成的,每个研发人员或研发团队只需要维护自己负责的组件与代码模块,复杂度会降低很多。
  软件的设计应该像搭积木那样,通过自由拼接组装来实现复杂的功能模块,这样既能保证系统的灵活性,又能避免重复开发,降低成本。如果不能将软件分解成像积木那样的小模块,而是焊死的一块铁板,那么系统将彻底丧失灵活性。
  软件系统是如何像搭积木那样拼接出复杂系统的呢?
  我们以M公司的Passport系统的开发历史为例,来看看“积木”是如何一块块被搭建起来的。
  Passport系统是企业管理客户账号的平台,存储了客户在企业中的注册账号等信息。用户通过App或网站的“个人中心”对账号进行密码管理、邮箱管理等操作,“个人中心”可以理解成Passport系统的用户前台部分。
  作为一套完整系统,M公司第一个版本的Passport系统在建设中遵循了经典的MVC范式,如下图所示,数据层“Passport数据库底层”存储了客户账号、密码等数据;业务逻辑层“Passport账号管理服务”包含具体的业务逻辑代码,例如绑定手机、解绑手机的处理逻辑;前端交互层“Passport用户前台”是C端的网站或App上的“个人中心”界面。
  第一版Passport系统很好地支持了C端业务,但缺少一个很重要的功能,即供内部业务人员管理用户账号的功能。因此,公司决定开发一套“Passport管理前台”,给业务人员使用。
  现在问题来了:给业务人员用的Passport管理前台需要单独开发吗?我们发现不论是给个人用户使用的Passport用户前台,还是给业务人员使用的Passport管理前台,绝大多数的功能都是类似的,例如重置密码、修改关联邮箱等,只是前端界面不同。针对这两套高度类似的功能,如果重复开发一套业务逻辑代码,就会浪费人力,也会造成架构的不合理。
  合理的做法是对第一版系统业务逻辑层的核心功能进行服务化处理,即针对“注册账号”“禁用账号”“重置密码”“更新数据”等每一个目标很清晰的功能,将它们抽象成接口,以便于给任何系统提供支持。
  因此,我们将后端系统进行服务化改造,并且开发Passport管理前台,与Passport用户前台共用同一套服务接口。新版的技术架构如下图所示,这依然是基于MVC模式的设计方案,只是对业务逻辑层(Passport账号管理服务)进行了接口封装。
  接下来,业务发展对Passport系统提出了新的需求:
  开展分销业务后,也需要对分销客户开发前端界面。由于分销业务和C端业务的差异比较大,因此分销业务不打算使用“Passport用户前台”,而需要单独开发“分销业务前台”,对账号功能做一些处理。
  公司的客服业务团队希望根据客服人员业务操作的习惯和特点,把用户管理功能做在客服业务系统中。
  因为此时Passport系统已经高度抽象和服务化,具备强大的平台能力,这些个性化诉求所需的后端功能接口都已成熟,所以业务系统只需要简单地开发前端模块并调用后端服务,就可以满足各种个性化要求,系统的结构非常灵活,如下图所示:
  至此你应该感受到了软件工程“搭积木”的设计特点,一个个服务接口就像积木块,通过对这些积木块的重复组合利用,可以搭建组装出各种新的功能和服务。我们常说软件工程就是在造轮子(服务接口和系统模块),对于功能相同的轮子,大家共用一套就足够了,没有必要针对每个系统重复制造功能相同的轮子。
  在第5章针对M公司分销平台的应用架构设计中,我们提到M公司各个系统已经实现了服务化,因此分销平台的很多功能模块都可以复用现有系统,例如分销平台复用了客户主数据系统、Passport系统、支付(Pay)系统、权限管理(Auth)系统、订单中心、仓储服务系统等。
  这些被复用的系统(主要提供各种功能接口)就像一个个积木块,重新搭配组合,支撑了分销平台的业务。上面的应用架构图在一定程度上体现了这种复用关系,我们从技术视角绘制出技术架构图,如下图所示,读者能够从这幅图中更清晰地感受“搭积木”的设计结构。
  在技术体系中,有两个非常重要的概念在支撑着接口化、服务化的设计理念的落地,即SOA(ServiceOrientedArchitecture,面向服务的架构体系)和微服务。SOA和微服务从本质上讲区别不大,只是微服务鼓励去中心化,例如,上图中间一层是“服务编排管理”,在传统企业的SOA落地方案中,这是很重要的ESB(EnterpriseServiceBus)模块(服务的中心化调度模块),而按照微服务理念设计的方案中则不会有这一层。
  通过以上案例,你应该对企业应用架构有了进一步的感知。企业的各个软件或产品并不是独立的、割裂的,而是深度结合、互相支撑的。架构的理念在高阶的B端产品设计中非常重要,同时B端产品的设计体系和技术架构也有着一脉相承的设计思路。理解技术架构对设计产品架构大有裨益。
投诉 评论 转载

从体验角度看电商前端订单状态流转与后台联动笔者结合实际工作项目分析了电商前端订单状态的流转,看看完成之前订单状态流转是如何传达给用户的。打开APP选产品看详情用优惠加购物车凑单用补贴结算订单生成后台系统处理订单(……B端产品的安全性设计在B端产品中,为了确保企业内部数据的安全性,我们应如何设计去满足其不同业务情况下的需求。本文将安全性需求分为三类,通过用户、职责、职位给出其对应的解决方案。每个企业,由于……如何从0到1设计电商评价产品?拥有商品评价服务的电商网站,销售量可平均提升18。61的消费者表示,自己在线上购买商品之前会先看相关评论。来自《全球广告信任度调查报告》我们经常听说某地方的特色产品……用“心理账户”进行产品设计文章从心理账户角度出发,对其概念和相关应用进行了分析探究,与大家分享。为什么女生在打扮和买衣服上没有上限,而男生却抠抠搜搜(在电子产品领域则相反)?为什么轻易得来的……信息设计:从交互到产品的利刃信息设计不止停留在交互层面,更重要的是通过产品传达价值。这是讲述我如何利用信息设计能力,从UX到PM管理的方法论总结。如果你是小白,这是一份真实经历总结的故事。……向游戏学习提升如何用户体验笔者在文章中总结了电子游戏中的用户体验设计,以及对产品设计的一些启示。我们可能都曾听说过“游戏化”在用户体验领域的应用,这个词从何而来?它们融合了激动人心的故事、富……保险公司如何提升在线使用体验?在任务过程中消除障碍,可以提升用户体验,同时不断从用户身上提炼用户体验的经验。随着越来越多的人倾向于在网上填写保险报价单,这一领域的用户体验对保持竞争力至关重要。保……运输管理系统(TMS)运单系统在上一篇文章中主要分享了TMS系统中从下单到揽件的订单系统,本篇文章来分享运单系统。运单是指司机完成揽件报单之后到运单被签收的过程,如果公司业务是一体的,那么运单系统和订……从产品角度出发,如何搭建会员积分体系?本文讨论了产品周期中的会员策略都有哪几种,以及如何设立有节奏的运营机制。会员体系产品,是一个集合了产品、运营、增长于一体的体系。在这个体系中,产品在中间起到了挖掘深度需求……汽车行业:车牌信息输入组件设计本文结合生活中关于车牌信息输入的实际体验,发掘了系统键盘输入的痛点,并展开了专用输入组件的思考与设计。序言2007年1月9日,伟大的乔帮主(史蒂夫乔布斯)在MacW……全链路创新项目之初,要把用户增长考虑在前为什么在项目设计之初就要充分考虑用户增长的原因呢?因为用户增长会影响到产品功能形态本身,MVP验证了产品需求,但是功能却无法带来用户增长,最终还是要围绕用户增长重新设计方案,否……B端技术常识:软件工程的“搭积木”设计本文介绍了从技术架构视角来审视软件体系是如何一步步发展演变,以及为什么说软件工程就像是搭积木。软件工程是一项既复杂又简单的系统性工程。说它复杂,是因为一整套良好运转的体系……
两年后台产品经理工作,我把这些讲给你听(上)智能座舱产品设计系列(一):汽车智能座舱产品发展趋势实操总结:积分系统是如何设计与落地的?实践出真知三年产品设计思考设计沉思录充满“仪式感”的荣誉系统设计10个步骤,塑造设计思维中的用户画像产品思考:确定按钮该放在左边还是右边?交互设计入门常见的3大误区拼多多“天天领现金”背后的人性吸引点APP内的分享功能怎么做?要注意4个问题运输管理系统(TMS)订单系统ToG产品设计的灵魂十二问
数码知识微信怎么查给谁解封过怎么查自己辅助微信解封几次了你与跑步大神最大的区别是什么?热评聚热点网 避孕套的使用(避孕套怎么用?)深圳解除劳动关系证明怎么开狗为什么不能吃巧克力(狗狗一点巧克力都不能吃吗)不公正的沙漠它是冬季第一果,40岁以后这样吃,血栓高血脂绕道走行纪合同的有关规定是什么知道微信号能查微信聊天记录吗(怎么调出微信聊天记录)宝宝出牙晚是缺钙吗?夏季美容护肤的七大注意今年秋冬最气质的南瓜色!吸睛又高级,百搭时尚,是小个子最爱

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界