[吐糟向][感悟向]说说呆在金融行业 IT 这几年

2015-09-05 16:21:45 +08:00
 miemiekurisu
在金融行业 IT 呆着也到了 8 个年头,职位也上到架构师级了,吐点糟吧,说说我眼中的印象。

[印象一] 封闭,极端封闭。
这是个极端封闭的行业, N 年来应用架构方案只有有限几种: struts , spring MVC ; EJB, spring ; hibernate , mybatis 。数据库方案屈指可数: MS sqlserver, DB2, oracle.
有很大一部分是由于行业的极端需求决定的,对新技术的应用都非常谨慎。
不过现在也开始有些转变,部分公司的外围系统开始出现一些 hadoop , node.js 之类的新兴技术框架。
其实我个人对此的观点是,应用架构都是领域驱动的,技术是一码事,新技术未必适合这个领域。片面追求技术是危险的。
不过有很多明显可以提高生产力的技术却没有得到应用,就有点让人觉得不可理解,这个印象三里会讲到。

[印象二] 不差钱,买买买。
所有东西都是“买买买”,从应用到维保。
我完全理解“专业的事情要交给专业人士处理”这种观点,并且认为这是种正确观点。
但是我不觉得光花钱就可以买来专业。

[印象三] 一些反思
这部分想说说曾经经手的几个项目,和一些反思,就当是回顾总结吧。
普通的应用项目,我觉得都不值一提, Java 的企业应用基本就那么回事吧,体现在对技术框架本身和业务理解上。

1. 某 DW/BI 项目
这个项目比较有意思,当时 Global 对这个 local 的项目并不是很感冒,所以没有资源支持,所以基本上一个人担纲设计到开发的所有任务,而且还没有预算。
项目的主要问题有 4:
数据源复杂: 公司运作了几十年,各种数据源都会有, AS400 , Oracle , MS SQLServer, Excel, Access, Txt ( CSV )……
数据是有时限的: 有一堆特定数据是需要在特定时间导出的,简而言之,过了这个村,就没这店了。
没有数据内涵的 support: 其实这是最难的,给你一堆英文首字母组成的表名和列头,跟乱码有什么区别……对吧……
数据量大:这个是所有像样一点的 DW/BI 项目都会遇到的问题
所以当时做了这样的设计:
ETL 用了著名的 Spoon ,当时还叫 Kettle 。解决了复杂数据源问题。作为一个成熟的开源 ETL 工具,几乎完美的解决了多数据源问题(说几乎是因为我始终没能解决 AS400 的双字节乱码问题,最后是通过开发插件处理二进制流,部分解决的)。
定时抽取问题是 shell 脚本配合 cron 解决的,利用系统级定时调度器也是 spoon 官方推荐的方案。
数据内涵完全是靠表数据和业务数据逆向出来的,此过程之痛苦真难以用笔墨形容……一边对照业务流程操作,一边对比 spoon 增量更新数据,花了差不多两个月把大约 200 张表和业务的逻辑勾稽搞清楚了。
数据量大本来不是问题,但是当 global 对项目不怎么感冒,而且对应用管理严格的时候就成了个问题。不能在服务器上架设 policy 以外的数据库,开源数据库统统阵亡,因此可选的数据库只有 2 种( MS SQLSERVER, oracle, 其实…… access 如果算数据库的话可以认为是 3 种),而 Oracle 的 license 不够,所以就只能选择 SQL server 。实话实说,巨硬产品相对来说还是比较靠谱的,最后把仓库架在了 SQL server 的多节点负载均衡上(别跟我说巨硬有 DW 专用组件,那个没买),当然其中使用了各种不愿再回想起来的奇技淫巧。
报表展现层其实有诸多选择,当时考虑的是开源项目中比较成熟的 Jasper Report 。开始用 Eclipse BIRT ,那玩意只能说是“勉强可用”。 BI 部分,在 DW 上架上了 SpangoBI, 但是只用了其中一小部分功能( MDX 及其展现)。
当时报表和多维分析时效是 T+1 的,后来想想,既然有时间戳增量更新,其实可以做到 T+0 ,如果把数据模型细分,可以做到准实时,只不过当时没这样的要求罢了。
项目前后大约折腾了 3 个多月,主要时间还是花在逆向表数据上。
反思一下的话,如果用 PostgreSQL 性能应该更好些,可以避免很多奇技淫巧的坑。总的来说,没留下什么坑,也不怎么需要维护。不过前面所说的“封闭”,可见一斑。

2. 某数据分析项目
这个项目就更有意思了。项目详情不能透露,大体上是找麦肯锡做的咨询,花费是千万级的(不差钱,买买买)。
神奇的地方在于,麦肯锡给了 2 张无法实施的纸就拿走了千万。两张纸的模型精度是多少呢? 据说α=0.3 。看到这里估计有童鞋要喷老血了,这不是只比瞎蒙高那么一点么…… 好吧,项目还真就跟着这个比瞎蒙高一点的模型走下去了,看起来也像成功了……至于是不是真的成功那只有用的人自己知道了。
这个项目可反思的东西就多了。
建模方面看的话,觉得建模方法本身就有些问题。对于达到 TB 规模,变量超过几千的数据,我的感觉是传统的统计方法有一部分不再适用,并不是说统计没有用,而是方法需要转变。
这种情况下,我更倾向于先进行无监督聚类,再通过一定程度的抽样即可将现有数据都打上分类。模型生成方法更倾向于 AdaBoost 或者随机森林,速度快,精度也不低。
实际上有偷偷试过几下,裸数据聚类并分类生成的模型( AdaBoost )预测准确率大概在 76.4%左右,调整一下应该能上 80%。
不过呢,这事情有点微妙,你总不能说那千万都白花了吧。
架构方面看(……当然不是我搭的,当然,如果是我搭的糟点也许会更多也不一定),采用传统的 SAS+Java+Oracle 真是充满了糟点。完全可以采用 ETL+hadoop+RHadoop (对不起我是用 R 的,也许有更好更快的方案,比如 spark )。 首先,对一个没有遗留系统的项目,没有看出采用 SAS 的必要性;其次, Oracle procedure 处理的效率跟 hadoop 和相关组件根本不在一个数量级上。

(待续了)
15510 次点击
所在节点    职场话题
79 条回复
li24361
2015-09-05 21:47:35 +08:00
来来来,我也说一下,曾经保险 IT 狗,做数据仓库的,说是数据仓库,不过是海量的上游数据,抽取,运算,统计而已,也是用的 kettle ,数据真 tm 的多啊,普通表上千万,保单,流水表上亿,以至于,后遗症是写什么 sql 都要考虑效率,哪怕只有几十条数据表,都要检查是否走到索引,禁止三表以上链接查询,尽量缩小范围,不能用函数来查询,防止无法命中索引,等等。

技术,我 14 年走的时候,项目 jdk1.5 , struts+hibernate ,额,但是全套 oracle 和 weblogic ,都是买买买,用的盗版 myeclipse 。。。

ant ,但是到处拷贝 jar , jenkins 形同虚设,有一阵用了,只不过用构建成功率,来统计绩效

每天一办时间用来回邮件,撇清责任和解释,这个不用多说,做过的都懂。

新技术,的确不敢用,除非你能兜住。

福利,前几年很好,是真的好,吃饭,过节费,生日金,体检,旅游,
现在,呵呵
WildCat
2015-09-05 22:08:42 +08:00
@li24361 现在不好的原因是经济大环境么?
miemiekurisu
2015-09-05 22:20:56 +08:00
@WildCat 我觉得我只是厌倦了这个变化缓慢的行业
miemiekurisu
2015-09-05 22:21:41 +08:00
@li24361 ...兜住也不让你用....万一你走了这东西就成黑盒了...
WildCat
2015-09-05 22:27:35 +08:00
@miemiekurisu
=。=
前辈不嫌弃的话简单叙述下我自己的情况:从小就热爱计算机然而知识个兴趣并没有深入,高考由于状态不好只学了当前这个专业,没有学成计算机。大约四五年前父亲朋友的姑姑非要给我算命,说我是剑锋金命, IT 行业是火,火克金。本来我不信这些事情的,但是这么多年过去了对这个还是记忆犹新,前段时间去父亲另外一个朋友(某大学教授,博士时在清华研究周易)那里请教了下,他说确实是这样,还是建议我搞好当前专业(金融)。

互联网行业自己非常喜欢,但是家里都觉得比金融行业的声望低(我们这里属于四线城市)。
gangsta
2015-09-05 22:53:24 +08:00
看到标题就进来了,想起几年前在各个银行客户出差的日子,每个项目上线前的不眠夜,还有年终决算时每个人紧绷的神经。 DB2 , Infomix , Oracle 是用的最多的数据库,也曾经写过几十张表联查的单条 SQL 语句给润乾报表,项目里还不时穿插着在 JSP 页面手动打开一个 jdbc 连接, fetch 数据,然后冷静 close/flush 的代码,那时我们还不知道 maven 和 gradle ,连一个 ant 脚本也没有,每天半夜两三点大家轮流 build 一个 war 包然后扔到 AIX 上去,如果有人 SVN/CVS 覆盖了别人的代码,买可乐是必须的。

现在弃坑很久了,但偶尔有空了也会看看过去项目的代码,想想生命浪费在了哪些地方,又有哪些时间可以节省出来。
liprais
2015-09-05 23:09:58 +08:00
26 楼了还没有人来吐槽 teradata...到底是 teradata 太好还是你们所谓的金融公司太穷?
Quaintjade
2015-09-05 23:17:18 +08:00
有天一个老头在草地上放羊,一辆崭新的吉普大切诺基在他身边急刹停下。开车的是个年轻人,穿着 Brioni 西装、 Cerutti 皮鞋,戴着雷朋眼镜、尊威表、 BHS 领结,他下车询问牧羊人:“如果我能猜出你有多少只羊,你能给我一只吗?”牧羊人看了看年轻人,又看了看草地上散布的羊群,说可以。

年轻人停好 SUV ,飞快地取出台 ThinkPad 笔记本,通过无线数据连接到 NASA 网站,利用卫星进行 GPS 定位和航拍,接着将数据导入 120 张设置了复杂算法的 Excel 表中进行处理,然后将结果打印装订成一本 300 页的报告。最后他对牧羊人说:“这里总共有 1,586 只”。

牧羊人说:“答对了,你可以拿走一只羊。”

年轻人抱起一只就往车里装。牧羊人看着他,问道:“如果我能猜出你是哪家公司的,你能把刚才的酬劳还给我吗?”

“当然可以。”年轻人回答。

牧羊人说:“你是麦肯锡公司的。”

“对!你怎么知道的?”年轻人问。

“很简单,”牧羊人说道,“第一,你不请自来。第二,你告诉我一件我本来就知道的事情,还要为此问我收很高的费用。第三,你对我的工作一无所知——快把我的牧羊犬还给我。”
miemiekurisu
2015-09-06 00:27:50 +08:00
@liprais 是太傻,我都怀疑很多公司听都没听说过
miemiekurisu
2015-09-06 00:32:03 +08:00
@liprais 不知道为什么,我手里的项目都比较穷,都买不起高大上的 teradata, 只能考虑 spoon 集群……其实即使开源狗如我,也想体验一把高大上的商业 ETL 啊 www (你不是体验过巨硬的么 -泥垢-
miemiekurisu
2015-09-06 00:35:16 +08:00
@WildCat 金融专业学好数学吧, 我一直觉得金融专业是个迷信数学的学科……
andyhenry
2015-09-06 00:45:16 +08:00
应该是银行的吧,看级别应该是总行 IT 。

能透露下做 DW/BI 的目的是什么吗?

另外像我这种非 IT 岗位的银行员工,是不是基本上不可能进分行的 IT 部门,更别说总行了。。。
twl007
2015-09-06 01:02:50 +08:00
@wy315700 那天正好我说请同学吃饭吧…… 然后结账刷不了卡了…… 那是连着第三次说我请同学吃饭然后种种原因成了同学买单了……
nareix
2015-09-06 01:37:23 +08:00
~~助手我喜欢你~~

以前大学在银行实习的时候,好像用的是 IBM S350 (好像是)大型机。代码严格精确对齐到 Col ,现在应该不会再用了吧。也有听说过 IBM 一个 pdf 卖 500w 的传闻。
ichigo
2015-09-06 02:25:51 +08:00
同金融,就职某大型券商。
一开始去技术部的时候我也不懂为什么思想这么迂腐,为什么系统这么老旧。
直到我转到业务部门,真的,稳定是最重要的,这个行业技术更新慢自有他的道理。
各位看官,还记得“光大乌龙指”吗?听在光大的同学说,光大证券因这事儿两年没翻来身。
paulagent
2015-09-06 02:49:36 +08:00
这个所有金融机构都是一样的,说白了就是谁最后来背锅。你有能耐来背锅,那就可以上新技术,没有能耐就老实干活。

你们行 CEO 今天心血来潮,上高大上开源系统也不是不可能。

买买买也是一个道理,可以比作保险,就像天津一次炸了上万辆车,可能几十年也遇不到一次。 哪个公司敢不买保险吗? 出一下就够喝好几年西北风的。新技术也是一样,买的出了问题,可以找十八摸和 oracle 啊,人家赔钱啊。 你用开源的谁给你赔钱?
leeoo
2015-09-06 08:00:07 +08:00
@miemiekurisu 慢慢部入新石器时代了。。 Jekins 上季度开始用上了,只是还是很多地方有待改进。可是俺人微言轻,提的建议人家都不搭理。
PS :话说各位都是国内的金融企业吧?就我一个干外企金融 IT 的?
miemiekurisu
2015-09-06 08:10:30 +08:00
@paulagent 厂商永远不会承认问题也不会赔钱,只会告诉你需要升级打补丁,它才不会做冤大头咧,反正你也看不到代码。只不过厂商强势,就算确认是 bug 公司也不能把厂商怎么样,要打官司可以啊,厂商都是法律部门组成的。只不过厂商会把整个事情处理的让人接受而已,最后皆大欢喜,谁都不用背锅。
miemiekurisu
2015-09-06 08:14:56 +08:00
@ichigo 所以其实我没怎么吐糟技术陈旧,领域需要而已。
miemiekurisu
2015-09-06 08:16:11 +08:00
@leeoo Jenkins 里的坑其实也不少的……每次遇到就想吐糟“不愧是开源的”…………

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/218402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX