落地系统解决方案探讨

落地系统的高收入让很多开发商趋之若鹜,但同样高昂的开发和维护成本,让很多开发商伤不起。扣去功能研发外,如何降低成本,是落地系统的解决方案不得不面对的关键。

落地系统的最佳解决方案就是不落地,这话可不是在开玩笑,而是一个朴素的道理,能不落地的,尽量不落地。落地系统之所以有难度,主要在于以下几点痛点:

1、落地系统是被部署于一个封闭的环境中,难以及时获取实时信息,运维和监控难度较大。这一点有点类似于硬件,一旦被用户买走,只能靠后期售后服务了,一旦需要召回,生产商就要付出巨大的代价。

2、落地系统难以标准化,用户之所以出高价开发私有系统,就是要实现自己的需求。这意味着落地系统千人千面,定制化程度比较高。随着系统升级,需要维护的版本号会越来越多。随着用户规模扩大,就要投入更多的研发力量应对不同的需求。成本也随着这两点而上升。

3、落地系统通常需要现场部署,因此需要实施人员配套,特别是上线新功能时,没准还要把测试人员甚至开发拉上凑数。实施队伍庞大,必须常备,而且还不是随时都能用上,这是一个巨大的成。

落地系统最典型的场景就是金融机构,比如银行、券商,以及交易所。这些金融机构资金雄厚,再简单的系统,只要需要,都可以不计成本。这些机构往往又有驻场的要求,因此要推广落地系统,这些硬性成本不可小觑。

归根结底,成本是落地系统的核心问题,而标准化程度是解决落地系统成本问题的关键。微软的视窗操作系统是一个标准化做得比较好的系统,他同样是部署在一个封闭的环境中,而微软公司只能通过升级程序,由用户选择何时升级或者干脆不升级,微软公司对于本地部署系统的控制,其实和落地系统并没有太大差别。

视窗系统提供丰富的功能选项和其他衍生软件,构筑一个完整的生态,即使大部分功能,用户完全用不上,却保证了视窗不需要定制。而个性化需求,可以由第三方来提供。视窗系统的这种特性,确保微软即使每套几千块钱的售价,也能让老板比尔盖茨雄踞世界首富多年。

一个标准化的落地系统,对于开发商来说可以极大的降低成本。原因有这么几个:

1、可以有效提高开发和测试效益,注意,不是提高效率。因为同样的系统被部署在多处,收入增多,但开发测试成本不变。这一点尤为重要,开发测试成本被有效分摊,从而降低单位成本。

2、可以缓冲个性化带来的成本冲击。个性化和定制化不同,定制化是以特定版本为基础,从整体里面选择自己需要的功能,而个性化是开发和其他人不同的功能。标准化做得越多越完善,则个性化需要完成得就越少。同时,还可以将个性化功能转化成定制化的功能选项。

3、间接降低部署和运维维护成本。标准化做得越完善,可覆盖的范围越广,就能够避免开发测试资源被分摊到个性化功能中,进而提高开发测试资源的使用密度。开发测试资源投入越多,错误就会进一步降低,那么后期的运维维护成本就随着降低。这是一个良性循环。

4、可以分摊更多开发测试资源到研发运维系统。落地系统的成本有很大一部分来自于解决运维引出的问题。完善运维系统,平滑运维学习曲线,简化到让用户自己可以维护系统,最好遇到问题简单的重启一下就可以恢复。部署也是一样,发个升级包给用户,傻瓜式点击一下,到边上喝个咖啡就搞定了。这样就一举两得,用户和实施人员都开心。

标准化虽然是好解决方案,但多数情况下是做不到,或者说只能做到一部分,因此我们就只能将他作为一个目标,努力的方向。因为甲方是出资方,作为强势的一方,多数开发商看在钱的面子,是很难拒绝的,除非你有足够优秀的行业专家和技术专家,甲方没有想到的,你比他想的更多,更周到。

退而求其次,一部分开发商已经转到了云解决方案,再高级一点,就是SAAS。云解决方案这个好理解,阿里够强势,自家基金都在云上跑,给金融机构做了一个良好的示范。虽然应者寥寥,但至少已经不像早先那么排斥了。关于SAAS,我会再开一篇,谈谈PAAS和SAAS之间,到底距离有多远,不可轻易动辄SAAS,仿佛他就是万能灵药。云解决方案实际上就是将原来落地系统变成不落地的解决方案,只要用户接受,则皆大欢喜。多租户架构,也能解决用户的安全和个性化需求。

但基于金融机构的安全特性,必然有大量系统是运行在自身独立机房中。再加上金融机构资金雄厚,没有开发商能够拒绝高额报酬。为在竞争中胜出,金融机构必须有独门绝技,个性化也就自然存在。如此一来,落地系统就会继续存在,所以云解决方案或者SAAS,对金融机构来说,存在一定局限性。

借鉴于视窗操作系统的原理,可以将落地系统做成一个分布式操作系统,除了底层核心外,所有功能都相当于运行其上面的应用程序。个性化功能同样可以依托于这个操作系统,第三方开发系统也是一样的道理。这种解决方案实际上是标准化原则的一个深化,他们将各种功能系统的基础框架整合,又引入微服务的理念,不断将公共组件下沉到基础框架中。功能只需要专注于特有的业务逻辑即可,所需要的开发量也跟着减少,错误概率和运维难度也随之降低。

将落地系统构建成一个通用业务平台,在技术难度上较高,人力和时间的初始投入也大。对于大部分开发商来说,更切实际的是,先预先构建技术和行业领域基础组件,这个过程可以在开发过程中不断提炼,或者在重构的时候,有意识的设计。

再简单一点的,在开源项目基础上定制适合自己需求的代码。通常来说,知名开源项目的质量都较高,即减少开发量又能确保软件质量,一举两得,这个做法在软件行业也越来越流行,为众人所接受。

你可能感兴趣的:(沉思拾遗)