时 间 记 忆
最 新 评 论
专 题 分 类
最 新 日 志
最 新 留 言
搜 索
用 户 登 录
友 情 连 接
博 客 信 息
 
实战总结:某管理平台项目的苦辣酸甜
[ 2014/11/11 10:00:11 | By: 铁托 ]
 

  某公司为了解决各部门信息孤岛效应,为了向客户提供具有公司品牌的、内容全面、高质量、个性化、统一的优质信息服务,树立公司形象、提高客户忠诚度,同时打造一个优质的客户品牌;需要建立一个完善的XXX系统管理平台,以全方位地解决公司的信息服务的问题,实现资讯数据的共享。

  该平台主要包含信息中心数据库建设和围绕该中心数据库建设的相关项目建设。

  系统硬件

  该项目的系统架构方案从最初初稿到最终定稿,先后经过了几十个版本的不断修改、调整和优化,最终在机器上架前一天才算告一段落。

  该系统架构方案包含硬件(服务器、防火墙、交换机、存储设备等共计约50多台,硬件费用将近1000万)

  该系统网络结构比较复杂,包括internet网络、网通网络、电信网络、中心机房网络、与其它系统网络。

  系统软件

  操作系统:AIX5.0,Linux5.3,Windows Server2003

  数据库:Oracle10g for Linux and cluster ware

  系统监控软件:Nagios

  系统集成难点:网络部署、系统监控、数据库同步、数据库集群等

  系统开发软件

  开发工具:Java、Delphi

  开发软件架构:B/S & C/S

  B/S缓存:OS Cache+ Eh Cache

  B/S架构:Structs Spring + Hibernate/ Structs Spring + iBatis

  其它:ASP,dll

  中间件:resin

  系统同步和接口

  MQ、Webservice接口,与外围基础数据同步

  Oracle Stream数据同步,大部分数据采用

  Oracle PL/SQL存储过程同步,双向同步部分

  程序同步,与外围系统大量数据同步

  该平台系统构成

  中心数据库系统

  3个纯web系统

  1个B/S+C/S系统

  相关接口开发

  系统监控开发

  系统规模

  耗时将近12个月,总计120个人月,核心开发团队12人,参与总人数28人,2个分项目经理。

  XXX管理平台系统架构

  系统架构是项目中技术实现的最重要的环节。系统架构的良好与否关系到系统的性能指标、安全指标、稳定性指标、可扩展性、业务实现等等。

  系统架构涉及到系统硬件的选型、网络拓扑、操作系统选型、数据库选型、B/S与C/S的选型、B/S各框架的选择、缓存的实现、数据库设计等诸多方面。

  在大型IT企业中,项目经理和架构师是分离的;但对于国内IT公司尤其是小企业来说,就成了一种奢望。项目经理一肩挑的现状至少短期之内还是无法改变的,这自然也增加了项目经理的痛苦指数和工作量。

  关于系统架构是什么?我最认同一句话:架构即关注点分离。

  项目经理不是万能的,系统架构需要更广博的知识,当然某些方面专业的知识也是必须的,这取决于平时知识的积累和总结,也需要其他团队成员共同的努力。

  系统硬件

  关于系统硬件的选型,首先是根据业务需求和性能指标确定硬件的需求数量和相应型号;举例说:一个普通的B/S系统需要有web应用服务器,数据库服务器,如果对于性能有较高的要求,则需要增添cache服务器;如果对于稳定性和高可用性有特殊的要求,则需要对相应的服务器进行集群处理。

  关于系统硬件的选型,一是关于厂商的选择(有IBM和HP之争),一是关于机器架构的选择(PC服务器和小型机),再则是某种机型的选择(在本系统中主要为HP360和HP580);再细的话就是更细型号的选择了(HP360、HP580都至少有十几种型号),最后是机器选件,比如是否需要扩充硬盘、内存或者CPU。

  其实最重要的一项就是预算,呵呵。本系统的硬件采购是由甲方采购的,但是架构是由自己做的,方案如果有之前的案例就会很轻松很多,很不幸,这个方案改了几十版,跨度达到4个月。无他,对硬件,我不熟。

  系统软件

  关于系统软件的选择主要上是操作系统、数据库、开发工具

  选择什么样的操作系统与计算机硬件本身有很密切的联系,当然也与甲方的要求有关。Linux/Windows/专有UNIX都是可选项,windows囿于安全性原因,一般不为推崇;UNIX与硬件有很大关联,一般也很少用;所以普遍选择的是Linux;

  关于操作系统版本的选择,一般建议选择目前市面比较稳定的版本,最新的版本往往意味着兼容性问题,太老的版本一般有性能问题;

  关于操作系统的32/64位的选择,这个需要硬件的支持;在64位CPU上安装32位的操作系统意味着资源的浪费;在这个项目上曾经考虑有所欠妥,结果造成了一定的问题。

  关于数据库的选择,与操作系统有一定关系,也和对系统的安全性、稳定性、高并发性有一定关系;虽然一个好的DBA在任何一种数据库上都可以构建出高可用性的数据库,呵呵。

  关于开发工具的选择,与操作系统相关,也与甲方的要求有关,开发工具一向有java和微软两条线路之争;在本系统中采用的当然是java了。

  关于web中间件的选择,与开发工具、操作系统都有关系,JBOSS,websphere,tomcat,resin,web logic都有一定的拥蹇和市场;取决与甲方的要求和本团队对相应系统的熟悉程度。

  B/S架构

  关于系统软件架构通常是指的是B/S部分实现的具体框架,此部分仍属于技术架构部分。

  众所周知,B/S的框架有不下数十种,常用的有SSH(Structs + Spring + Hibernate)和SSI(Structs + Spring + iBatis),SSH和SSI从本质上没有什么不同,就是实现业务逻辑层、控制层、数据持久层和展现层的分离。

  B/S缓存的架构:OS Cache + Eh Cache

  说到软件架构,我就不太在行了;我做过Powerbuilder,ASP,java(JSP,HTML,CSS,Javascript,structs,spring,xml,xsl,ajax,web service)不过都是入门级水平,实在连个称职的程序员都算不上,唯一的好处就是对方方面面都略知一二,查资料方便一点而已,呵呵。我个人只是在数据仓库和数据库开发、设计方面还算有点研究。

  幸亏下面有相应的项目经理,也是项目中的技术经理,他在这方面是权威,B/S技术架构本来就是一个虚虚实实的框架,呵呵。

  系统同步和接口架构

  关于数据同步,在本平台中是最重要的环节,缺少数据的系统是无用的;为了实现系统数据同步架构,我曾先后在虚拟机上进行过oracle高级复制、Oracle Stream的测试,也曾为了该同步和公司技术总监吵过N多次,他主张用程序来实现,不过在他那边总是不了了之。

  尽管通过测试,高级复制和stream都可以实现实时数据同步,不过我知道在实际生产环境中是远远不会这么简单的;

  首先源数据和目标源的结构并非完全一致,允许目标源的结构大于原数据源的结构

  其次多环节数据实时同步,从中心数据库到电信数据库,再从电信数据库同步到网通数据库。

  再次各数据库均采用RAC方式,现实的例子中很少有类似应用。

  最后Oracle的stream有许多的bug,需要进行不断调试和patch升级。

  事实上,在同步方案的过程中,也遭遇到很大的困难,前后的测试和最终顺利实施经历了2个月之久,不过stream仍需要不断的人工监控和干预。我相信到目前为止即使市面上也没有任何一种完全稳定的同步方案。

  关于MQ、Webservice、LDAP接口,目前的业务和技术虽然已经完全实现,但是还缺乏稳定性和一致性。

  总结

  系统架构是项目最重要的技术部分,它是否应该是项目经理的职责,暂且不谈;从现实的角度而言,技不压身,技能服众还是很有意义的;从项目经理角度来看,你能够准确的对项目进度、难度、工作量进行评估,对团队成员面临的困难迅速给出解决方案,减少项目经理和团队成员的沟壑;从团队成员角度来看,信任自己的项目经理,也是项目成功的一个重要因素。

  项目经理能够通过对系统架构的设计,尽快评估出各部分的工作量,以安排相应的人力资源和工作计划,做到有的放矢,实际上本项目虽然包含几个业务系统,加上对本公司相关资源和技能的评估,但我个人认为系统集成和数据同步等在项目实施中占据了50%的工作量.

 

发表评论:

    昵称:
    密码:
    主页:
    标题: