为什么企业自主开发软件时,都会使用统一的模块化框架式开发平台?
互联网经过着十几年的发展,在这两年可谓是前所未有的繁荣,越来越多的行业受到其影响,开启自主信息化的进程。得益于尖端互联网技术(尤其是移动互联网)的普及与成熟所带来的机会,各领域企业的业务量得到了空前的增长,规模和影响力越来越大。不过,企业在短时间内体量暴增,也产生了包括信息化建设跟不上企业的需求,新老系统衔接不畅在内的各种问题。
企业信息化面临的实际问题
在企业快速的发展过程中,往往会出现这样一种循环。
新增某种业务—> 招聘相关核心人才 —> 围绕核心人才组建团队—> 该业务仅由该团队负责。由此便形成了一个闭环,当需要与其他业务进行交互时,通常只在负责人之间商定,则可能遇到这种情况:即相同的业务接口,同时提供了RPC,HTTP,MQ 等多种方式,只为给不同的项目提供基础服务。
如果业务得到进一步发展,团队内人员剧增,团队决策者通常会从自身利益考量,尽量减少对其他团队的依赖。无论是技术选型,规范建立,组件选取,运行环境都自我掌控。当这样的技术氛围一旦形成,单个岗位对整个项目的影响就会无限放大。在很多时候,一个软件项目会因为少数核心人才的流失而难以为继,最后不得不重启整个项目。
除团队稳定性问题之外,还需要担心成本问题。几乎每个团队在试图构建自己完整的研发流程时,构建过程中的技术研究、产品研发、运维管理都会出现海量的资源浪费。且KPI指标也难以设立,毕竟每个团队都采用不同技术栈,不同的技术组件,不同的维护方式和规范。这样一来,管理者自然无法仅依靠传统的产出效率,来判断一个团队的绩效。就像,人们无法衡量一位直升机驾驶员和一位火车司机谁更优秀一样。
解决方案
在企业发展初期,为了快速的进行业务拓展,大都不考虑成本投入、运营维护以及技术沉淀等问题。所有的指标都是业务的发展速度、所占的市场份额、获取到的用户量。而当发展到一定阶段后,市场逐渐趋于稳定,先期留下的各种问题逐步暴露。从技术层面来讲,如果有级别统一开发框架,将在实际的生产过程中带来非常大的便利。
统一开发框架的优势
1. 避免重复性技术研究——节约人力成本
项目组能把更多的精力投入到业务中,相信这是大多数技术公司的共识。如果要做到这一点,就需要在项目组之下构建一个基础的开发架构平台,把技术的共性提炼出来,交给同一个团队负责。避免独立解决每个项目的各种技术难题,有效的把精力释放出来。
2. 标准化技术规范——提升产品项目质量
合众为一,而不是一盘散沙。采用统一的开发框架(平台),可以在技术栈,技术组件,技术实现方案以及代码规范上,能形成标准的技术输出。其带来的益处不仅是开发效率的提升,更是产品质量的大幅提升,而且这是显而易见的。
3. 进行技术沉淀——提升公司技术能力,避免陷入单个成员影响整个团队的窘境
技术的进步,来源于不断的积累和沉淀,每个开发者都是相互配合完成工作的。以项目为导向的技术团队,一般都会以实现需求为最重要的目标,技术只不过是完成工作的一种工具而已。综上,积累技术在开发者眼中就显得没那么重要。
通常,核心成员构建出的基础工具平台和相关技术,会随着核心成员的流失而且随之被团队放弃,从而对团队的稳定性产生负面影响,情况严重时会导致项目的开发进程中断。
如存在企业级的统一开发框架(平台),项目团队可基于该平台进行自主研发,不需关注底层技术实现,只要关注业务即可。当存在核心成员异动时,新加入团队的成员仅需简单培训,即可完美补足岗位空缺,不会出现人力上的青黄不接。
4. 可量化的研发成本——对团队的有效管理和考核
建立起开发框架平台的标准化技术规范后,就可以对业务功能代码进行有效的考评,能避免因技术差异而出现的种种问题,将对KPI 的制定和考核起到巨大的帮助作用。
统一开发框架(平台)的定位和目标
其定位于技术层面,主要目的是统一企业内研发和项目实施时使用的技术架构和开发工具。可有效增加对技术统一的支持力度,能形成持续的技术积累手段,提升人员的利用率并降低对人员的依赖性。最终可以批量化,以流水线式的生产方式来制作软件。
统一开发框架(平台)团队的运作方式
如何在企业内建设统一开发框架(平台),并不是一件简单的事情,从分工和运作方式上来讲,主要把统一开发框架(平台)的工作分成三个部分。
开发示例、技术支持和技术规范。
编写完整的开发示例,对很多新接触统一开发框架的开发者来说,有一份完整业务开发是非常重要,不仅可以指导开发者如何编写业务代码,同时还能帮助其写出标准、高效的代码。
服务运维。
统一开发框架(平台)提供了很多的企业内部服务,比如服务注册发现中心、配置中心、监控中心、链路中心、健康监测中心。这些都需要统一开发框架(平台)团队进行运维。
新组件、新产品的研发。
API 网关、分布式任务调度框架、服务注册中心 Plus 等。都是统一开发框架(平台)团队的工作范围。
虽然建设公司级的统一开发框架(平台)会在实际的生产过程中带来非常大的收益。但未必适用于所有情况,大型公司,有的一定的技术积累,在时间和成本上考虑较少,可自主开发开发;中小型公司可以选择市场上成熟的软件平台,这样,在成本方面要低得多。
相关技术资料来源以及详情来源:https://www.learun.cn
评论