业务系统开放实现

一、引言

现在大部分的人都是在做业务,毕竟业务是一个公司的支撑,没有业务带来的收益,公司又怎么能发展呢。做技术的人都喜欢钻研技术,认为做技术是有含金量的,包括我自己在前两年的工作中也是这么想的。后面发现不是这样的,技术是为了更好的服务于业务的发展,真正体现一个人的技术是他能用技术解决业务上的难题。

做业务的同学有一个感受,业务需求永远都做不完,做完一个接一个,天天都在码代码。这个时候就要抬头看路了,看看哪些是经常变的,哪些是不变的,把变化的抽象出来。这就是今天要聊的一个方向:业务系统开放平台

二、能力、扩展点

一般来讲,业务具有一个固定的业务流程,这个流程绝大部分是不会变的,如优惠券系统,有明显的业务流程:建券 -> 发券 -> 用券 -> 补券,这个业务流程不管在哪家公司大的流程是不变的。那变化的是什么?变化的是每个子流程中具体的实现细节,如发券又包含一系列的细业务流程,有准入条件检测、风控过滤、发券、发券消息等。大部分的需求都是在这些细的流程中变化的,今天增加一个新的条件判断,明天又增加另外一种条件判断,但这些细的流程中也包含了固定的流程,这些细的流程并不在同一层次。

所以从上面的分析来看,我们提供的能力基础不变,变化的是能力实现细节的流程,如有多个判断条件、不同的风控业务、操作前后的附加逻辑,每个其实都是一个扩展点。扩展点表示一个占位符,表示了未来可以做的事,至于做什么就不关心了。

最近在思考"做什么和怎么做"的问题,这个很有意思,之前听一个讲,一流的公司定标准/接口,当时就想,咋不上天呢?为什么定个标准就是厉害的,他连实现都不做,只是那里说说而已,辛辛苦苦干活的还没有他厉害。后面我想明白了,标准是一种抽象和约定,它是从复杂问题中定义解决思路和方案,至于具体的实现它又不限定发挥,如这里要存储,你想用mysql,还是redis,它不限制你,存储就是要做的事,怎么做他不care。

做什么是让人思考整个业务它的核心流程是什么,核心能力是什么,一个业务不可能什么都是自己做的,要放弃什么,所以核心能力是竞争的关键,如果整天做需求没有深入的思考是对人的提升有限的,这个时候要想想你的价值是什么,业务价值是什么,思考哪些是不变的,哪些是变化的,至于怎么变化的思考我也写了一篇文章<<设计模式应对变化之道>>,有兴趣可以看看。把变化的东西抽象出来形成扩展点,不管是自己实现还是业务方实现我们视具体的业务场景再说。

三、业务开放实现思路

扩展点我们统一定义为ExtPoint, 每个扩展点的实现都要实现这个接口,我们可以做一个平台来上传这些扩展点实现模块,在业务方引用我们写好的jar包,在业务运行的过程中找到对应的可扩展点并动态加载执行。看起来并不算复杂,但思想还是挺好的,之前阿里有一些部门也是按照这个思路来做的,做完这一个事,对人的提升还是不小的,比如类的动态加载执行器是一个关键、为了提高性能,还要引入缓存,缓存失效机制等等,这一路做下来,会有不少的收获的。代码的关键实现部分单独会放在一篇文章中写。

开放思路的关键是定义关键业务流程、找出可扩展点有哪些,这种能力是通用的,不管你做哪个业务,都可以用到相同的方法论。对业务而言,我们要快速的支持和实现业务价值,技术就是解决这个问题,并不是技术没有含金量,也不只是增、删、改、查,关键我们要有深入的思考才会有收获。

四、总结

最近在思考一些架构和设计上的事,之前知道原理是什么,最近在想为什么要这么设计,这种设计的上一层思想是什么(即抽象出通用的思想,目前是具体的实现),如SPI我们熟悉,为什么要SPI呢?SPI解决了什么问题?它是通用解决方案吗?这些想明白了就清晰多了。看源码不仅要知道是这么做的,深层次的要知道为什么要这么做,它的通用思想是什么。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值