银行核心系统,本质上看就是财务会计系统,其核心就是由会计业务上的借贷平衡算法构成的联机交易算法。
银行经过长时间的技术积累,核心系统的技术已经非常成熟,除非有技术上本质的突破(主要是IBM技术的突破),否则核心系统技术会相当稳定,因此其技术含量和发展迅速的Java技术相对比较低:
1) 应用系统和数据库的交互:使用最原始的数据库连接方式;没有类似weblogic或者Websphere的数据库连接池技术;
2) 多并发只能使用多个进程的方式;
3) 数据缓存:必须自己编写。
总之,核心系统就是用最原始的方式编写应用系统,没有什么资源可供使用。更没有什么开源系统借鉴。核心系统在一个完全封闭的环境里面、使用unix C技术完全独立、封闭地发展。
银行核心系统的难点在于业务复杂、多变,需要用简单、原始的技术来应对业务是难点所在。从业务角度,核心系统也将负责的业务进行了最大程度的简化:即把复杂多变的业务分解为一个个独立的交易。所以,我认为要建设高质量的核心系统,最重要的就是吃透业务、设计好方案、利用好技术,核心还是设计,而不是编码。交易的划分和功能设计,是制造核心系统能否成功的关键。
对于开发银行核心系统的软件供应商而言,存在两难的困境:
1) 开发银行核心的软件技术:技术上相当保守,仍然在沿用非常传统的技术,很多银行的核心系统已经开发了十多年,技术体系上没有大的改变:仍然是IBM小型机+嵌入式C的技术架构。银行内部的技术人员技术水平难以提高,被银行绑定了,只能在银行终老。
只有在真正了解了什么是银行核心系统之后,才明白,这个市场为什么如此低迷!技术上长期稳定,技术人员卖不上好价格,只能以外包的方式卖给银行开发部门。抠门的老板,不慷慨的客户,涣散的人心,如何能开发出精致的核心系统?
2) 无限接近核心,还是远离核心?远离核心,对于银行来说,离核心越远,项目价值就越小,愿意付出的价格就不会高。越接近核心,那么银行自身控制的就越严格,价值也不一定会很大。对银行来说,她的人员需要具有如下能力:
(1)深刻理解现有系统的业务和技术架构的能力;
(2)跟踪新需求,设计新功能的能力;
(3)管理项目开发的能力;
上述人员如果能少而精,个个具有项目经理级别的能力,那么她就不需要日常维持一只庞大的开发队伍,只需要在大规模开发时,让自己的人员设计、组织项目即可。而开发公司只能以人头外包方式参与,以产品方式参与项目几乎无可能,公司的利润无法最大化;公司的知识根本无法价值化,开发人员的收入也无长期、稳定的保证。开发企业基本只能以外包、卖人头的方式参与开发,人员完全为银行打工,不参与技术架构设计、业务需求分析、软件设计,只是开发或者测试,纯粹打工;这也是我坚决不愿意做外包开发的原因。即使有经验丰富的技术人员,也难于参与到项目的核心架构设计,因为几乎每个银行都有自成体系的一套技术架构,外来人员只能适应其技术架构。
3) 开发人员向银行业务咨询方向发展就有前途吗?
第一条道路:软件技术和业务知识的结合。银行项目做到最后,都只是纠结于业务,而没有什么技术含量。银行业务纷繁复杂,如果向大而全方向发展,则可能无法精通一门;而如果向少而精方向发展,则可能并不能保证能参与到自己精通的项目中。而在我看来,如果能精通面向银行业务的专门软件技术,倒是一条可能的发展道路。例如:精通能处理大数据量的Oracle、DB2数据库技术、精通记账程序设计、精通复杂报表设计,这些技术即和银行业务有联系,同时又是精专的软件技术,能充分发挥技术人员的价值。
第二条道路,就是我现在这样的技术全能型,C、Java、VB什么样的软件语言都懂一点,也比较精通一门语言,如此来应对复杂的IT系统。但是,我在这条路上已经走到尽头,我需要选择精专的软件技术(例如:数据库、软件架构、软件项目管理)等方向上去突破。
原文链接:http://blog.sina.com.cn/s/blog_61ade42f0100m1vx.html
【编辑推荐】