B端技术常识:软件工程的搭积木设计
2024-06-28 0
B端技术知识:软件工程的“积木式”设计
本文介绍了如何从技术架构的角度审视软件系统一步一步的开发和演化,以及为什么软件开发就像搭积木一样。
软件工程是一个系统工程,既复杂又简单。说复杂是因为一个运行良好的系统是由数百万行代码构建而成的,说简单是因为软件系统是由无数组件化的小模块组成的。否则,研发团队只需要维护自己负责的组件和代码模块,复杂度就会大大降低。
软件的设计必须像积木一样,通过自由拼接和组装来实现复杂的功能模块。这样既可以保证系统的灵活性,又可以避免重复开发,降低成本。如果软件不能像搭积木一样分解成小模块,而是一块焊接好的铁板,那么系统就完全失去了灵活性。
软件系统如何将复杂的系统组装成构建块?
我们以M公司Passport系统的发展历程为例,看看“积木”是如何一步步搭建起来的。
Passport系统是企业管理客户账户的平台,存储客户在企业内部的注册账户等信息。用户可以通过应用或网站的“个人中心”对其账户进行密码管理、邮件管理等操作。
作为一个完整的系统,M公司的Passport系统第一版在构建逻辑层上遵循了经典的MVC范式“护照账户管理服务”包含了具体的业务逻辑代码,如绑定、释放手机的处理逻辑;界面层“护照用户前台”是C端网站或APP的“个人中心”界面。
第一版的Passport系统对C端业务的支持非常好,但是缺少一个非常重要的功能,就是内部业务人员管理用户账户的能力。因此,公司决定开发一款“护照管理接待”,供业务人员使用。
那么问题来了:商务人员护照管理接待是否需要单独开发?我们发现,无论是面向个人用户的Passport用户前台,还是面向业务人员的Passport管理前台,大部分功能都是相似的,比如重置密码、更改关联邮箱地址等,但前端界面不同是不同的。对于这两套非常相似的功能,如果重复开发一套业务逻辑代码,不仅会浪费人力,还会造成架构不合理。
合理的做法是服务于第一版系统业务逻辑层的核心功能,即“注册账户”、“注销账户”、“重置密码”等每一个目标明确的功能,“更新数据”等。抽象为接口,为任何系统提供支持。
因此,我们将后端系统改造为面向服务的系统,开发了Passport管理前端,与Passport用户前端共享同一套服务接口。新版本的技术架构如下图所示。这仍然是基于MVC模型的设计,只是封装了业务逻辑层(护照账户管理服务)的接口。
接下来,业务的发展对Passport系统提出了新的要求:
开展分销业务后,还需要为分销客户开发前端界面。由于分销业务和C端业务有较大差异,所以分销业务不打算使用“通行证用户前台”,而是需要单独开发一个“分销业务前台”,对账户功能做一些处理。
公司客服团队希望根据客服人员业务操作的习惯和特点,在客服系统中实现用户管理功能。
因为此时的Passport系统非常抽象和服务化,平台功能强大,而且这些个性化需求所需的后端功能接口已经成熟,所以业务系统只需要开发前端模块并调用后端服务可以满足各种个人需求,系统的结构非常灵活,如下图所示:
现在你应该已经感受到软件开发的“积木式”设计功能了。每个服务接口就像一个构建块。通过反复组合和使用这些构建块,可以构建和组合各种新功能和服务。我们常说软件工程就是造轮子(服务接口和系统模块),功能相同的轮子,大家共用一套就够了。没有必要为每个系统制作具有相同功能的轮子。
在第五章M公司配送平台的应用架构设计中,我们提到M公司的各个系统已经面向服务,所以配送平台的很多功能模块可以复用现有的系统。例如,配送平台复用客户主控计算机系统、护照系统、支付系统、支付系统、授权管理系统、订单中心、仓储服务系统等。
这些复用的系统(主要提供不同的功能接口)就像构建块一样,可以重新排列和组合以支持分发平台的业务。上面的应用架构图在一定程度上体现了这种复用关系。我们从技术角度画出技术架构图,如下图所示。
在技??术体系中,有两个非常重要的概念支持实现基于接口、基于服务的设计理念,即SOA(ServiceOrientedArchitecture,面向服务的架构体系)和微服务。SOA和微服务本质上没有太大区别,只不过微服务鼓励去中心化。比如上图中的中间层是“服务编排管理”,在传统企业的SOA实施方案中,这是一个非常重要的ESB(ESBEnterpriseServiceBus)模块(服务的集中规划模块),根据微服务设计的解决方案概念不会有这一层。
通过以上案例,您应该对企业应用架构有了进一步的了解。企业中的每个软件或产品并不是独立或分离的,而是深度集成、相互支持的。架构理念在高端B端产品的设计中非常重要。同时,B端产品的设计体系和技术架构也具有相同的设计思路。理解技术架构对于设计产品架构大有帮助。
#专栏作家#
杨坤,公众号:PM杨坤(ID:pmYangKun)。Alle是一位产品经理专栏作家,也是《VinnB-siden》的作者。拥有11年互联网研发及产品设计经验。
本文最初发表于人人都是产品经理。未经作者许可禁止转载。
标题图片来自Unsplash,基于CC0许可。
本站文章均由用户上传或转载而来,该文章内容本站无法检测是否存在侵权,如果本文存在侵权,请联系邮箱:2287318951@qq.com告知,本站在7天内对其进行处理。