运维教给我什么
运维教会我们什么?
特殊说明:为了不出现一些版权的纠纷,我将公司的名称替换为XX公司,技术平台替换为:XXX平台。
作为一位奋斗在税务系统十多年的老员工,我也想用我的工作经历和大家探讨一下我们如何从工作中获得提高。当前一部大部分员工从事的是征管系统运维工作,很多场合都能听到一些抱怨的声音:运维工作比较简单、枯燥、没有技术含量,学不到新知识,对自己没有提高,甚至是不想干了。这些抱怨会产生消极工作态度,为了获取更好的发展,他们往往会考虑更换工作,更换部门,甚至考虑离职。从主观来说,任何人都有追求更好发展和美好事物的权利,并为之付出努力的过程都是应该得到支持鼓励的,但问题是我们是否对工作的环境做出客观的评价,当前的环境不能为你的继续发展提供空间?当前环境中已经没有你想追求的东西:技术、荣誉、成就感等?日常生活中,我们习惯于将眼光关注外边的世界,但对自身周围却缺乏正确的认识,如果我们能静下心来,重新审视自身,审视我们的工作环境,也许我们追求的东西就存在于我们日常运维工作中,只是没有留意罢了。下面我将用我的工作经历,告诉大家我从系统的运维中学到了什么:
一:技术。2003年5月,我尚未完全毕业,有幸来到XX公司这个大家庭。当时参与开发郑州市地税局的征管平台,当时使用的开发工具是Jbuilder+WebLogic7.0+oracle.使用的平台是:XXX1.0+CQAP1.0,这些东西对于刚从学校出来的我来说,已经太神奇了,我不会Struts,不会Oralce,也不会WebLogic,但借助XXX平台和平台使用手册,开发工作也可以快速上手。虽然不知道平台的运行机制,但也可以开发一些简单的功能,我相信每一个进入团队的新人都会经历过这个阶段。经过一段时间的开发使用,伴随平台的熟练使用,对平台产生了浓厚的兴趣:平台是怎么工作的?怎么实现MVC?怎么实现了事务的控制?系统异常处理机制怎么实现?平台也是基于标准Struts1.0的封装,XXX平台和标准Struts的差异在什么地方?封装的优点在什么地方?这个平台是不是在某些地方可以改进呢?总之,这里面充满了疑问,这些疑问也就是需要我学习研究的方向,经过一段时间加班加点的学习,逐渐对理解了平台的实现方式,这个学习的过程中提高自己Java程序的编写能力,并且平台级的设计理念的学习将对你后期的职业发展产生极大的影响。估计很多人,在平台使用一定阶段之后也会有同样的疑问,关键是你有没有将这些疑问全部解决,将平台设计的理念和知识转换为自己的知识。通过运维过程中,经常迫于项目的需要,学习一些主机管理、数据库调优,中间件维护等相关的知识,结合项目的实际情况,都将这些知识转化为项目的生产力,同时又加强自身对着这些知识的掌握,提升自己的技术水平。围绕着运维项目,会出现很多外延的新技术,如果我们感兴趣,我们都可以学习。如果我们积极一点,我们可以学习到很多东西。
二:沟通。运维项目的工作性质要求运维项目组的成员经常面对客户和纳税人,在和他们进行沟通过程中经常会面对一些对立的问题,这些问题如果处理不好都将产生严重的后果,因此如何才能达到对公司、对项目组最有利的结果,甚至安抚一些纳税人的过激情绪,这都需要一些沟通技巧。刚进入项目组时,我比较内向,不太喜欢和其他人交流,这种性格将限制自身的发展。为了求得发展,必须超越自己,多交流多沟通,和内部沟通交流获取帮助,和客户沟通交流,让他们对自身的工作进行认可。当然前提是必须对本次沟通的目标一定要明确,同时要做好相应的准备工作,掌握好沟通的时间、地点、语气等,可以让沟通取得事半功倍的效果。通过一段时间的努力,使自己的沟通能力有了很大的提高。
三:分析解决问题的能力。运维项目中经常会出现紧急的突发问题:基层反映程序运行速度慢、程序的BUG影响业务办理、系统宕机等问题。这些问题的出现直接将影响到基层的业务办理工作,客户和纳税人都会通过各种途径给运维项目施加很大的压力,迫使问题尽快解决。这就要求运维人员有很高的分析问题,解决问题的能力。在问题面前一定要保持头脑清醒,思路慎密,先思而后行。我们也需要在日常工作中扩大我们的知识面,做好各方面的积累,各方面的只是可能都将为我们解决问题提供帮助。问题解决之后,做好记录,认真总结,让以前出现的问题今后不再出现。从某种意义上讲,我很感谢运维项目,有机会可以面对这些问题,解决问题是时让我学到了一些主机、网络、中间件和数据库一些相关知识和问题的解决办法,这些经验在我今后参与的项目中起到了很大的帮助作用。这种面对问题的态度也是我人生中一个很大的财富。
截止到现在,在进入XX公司10年多的时间中,有超过6年都在运维项目组中度过,参与运维项目的工作,我到现在依然没有对运维项目感觉到厌倦,依然对运维工作充满了热情,为什么呢?我觉得运维是一个很大的宝藏,蕴藏着各方面的知识,虽然已经做了很多年,但里面的很多东西都仍然值得我们去认真学习和研究。另外,大部分管理信息系统的建设中,业务处理过程可能存在差异,但系统建设流程大致相同,见一叶而知秋,完全可以从正在运维的系统建设着手,掌握信息系统建设流程和技术,积累项目建设的经验,同时可以总结日常运维中暴露的问题,扬长避短,提升信息项目建设能力。运维项目对已经开发完成的信息项目的运行和维护,要求运维人员对项目的建设的背景,运维需求、分析设计文档,信息系统使用的技术平台,系统部署结构等进行了解和学习,这个过程,实际上也信息系统建设过程的一个回顾,对于参与者也是一个学习的过程。我们运维项目中,在完成日常运维工作的同时,需要多现有的系统多思考,多研究,要在不同阶段制定不同的目标,巩固已经知道的的,学习未知的知识和技术。对于省局征管系统来说,他是一个支撑省级应用的超大型的系统,可能在我们人生的经历中,能参与这种的项目的机会不会很多,当前系统运行高效稳定,因此系统的建设和规划中,很多核心的思想和设计理念都值得我们去学习和研究,经过简单梳理,可以从如下方面着手学习:
1. 信息项目建设过程
信息系统建设会经历多个阶段,每一个阶段都有自己的特点和目标,根据阶段的特定进行分析和设计,最终形成每一个阶段的产出物。详见下图。
征管系统的建设也是按照这个过程建设的,每一个阶段也都有自己的产出物,我们可以参照StartTeam中征管系统建设的文档进行关联学习。另外征管系统在建设过程中也借鉴了一些业界一些先进的理念和技术,如:征管系统需求编写是采用的FEA的架构法,数据库设计时一些大数据量表的设计规范、数据回流的设计、拉链表设计、征管系统整合技术,SOA架构等,需要我们去仔细体会和理解。
2. 技术平台
(1) XXX平台
XXX平台作为基础平台,支撑征管系统和网报系统的运行。从使用效果来说,XXX平台是一个非常优秀的平台,它简化了开发流程,使用过程中,效率较高,可以支持省局应用的大业务量的并发,提供的日志管理组件非常方便对系统进行审计,可以快速的定位错误和发现影响效率的程序。我们可以在我们的日常开发过程中,研究和探讨XXX的实现机制,学习XXX平台级的设计理念。
(2) SOA组件
平台提供了优秀的SOA组件,通过简单的配置实现了服务的实现和调用。我们可以结合XXX平台研究SOA的调用的机制,体会平台的服务处理的思想。同时可以学习研究原生SOA服务的设计和开发过程,比对两者差异,思考平台封装的优势。
(3) CQAP组件
CQAP平台可以通过前台简单的定义实现快速查询统计的开发,尤其引入了一些数据分析思想去实现一些轻量级的数据挖掘技术,需要我们去思考和学习。
(4) Portal平台
征管和网报系统都使用了轻量级的SSO组件,实现了单点登录。可以学习SSO的原理和实现。同时考虑平台为什么要引入SSO?系统如何通过引入SSO后系统实现高的可用性。
3. 数据库
(1) 数据库的基本操作
通过日常工作,可以学习基础SQL的写法和Oracle对象的用户。比如:存储过程,函数、同义词、JOB、TRIGER、Sequence、DBLINK等的用法,以及每一种对象的使用场景。
(2) 数据库的优化
在会基本使用数据库的基础上,需要考虑怎么样更好的使用数据库。怎么使用最合理,效率最高和开销最小。可以学习SQL语句的优化写法,索引的创建规范,SQL语句的分析和优化等知识。
(3) 数据库高级应用
可以学习使用一些Oracle字典表的用户以及一些特点的函数的使用。可以学习分区表管理,物化视图、分析函数等用法。
(4) 数据库的管理
可以学习数据库的管理的相关知识,如何对数据库进行监控。同时可以学习oracle的RAC机制,数据同步机制如OGG,等这些技术在征管系统都有使用。
4. 中间件、数据库和操作系统
(1) 中间件和数据库的安装配置
学习中间件和数据库在不同操作系统上的安装和配置,初始化参数等。
(2) 操作系统的基本命令
学习操作系统的基本命令,可以结合中间件和数据库,对系统的运行进行监控,尽早的发现系统存在的问题。
(3) 相关问题的处理方式
做好相关的知识的积累,学习不同软件出现问题的解决方式。比如:监控主机的资源使用情况,分析应用占用资源情况,比如数据库占用资源比较多,可以查看Oracle的日志文件,看是否存在问题,通过Oracle的字典表查询Oracle的运行情况,锁等待、SQL耗时等,定位问题,然后处理掉。如果中间件出现问题,需要分析中间件的生成的日志文件,通过可以DUMP中间件Java进程的信息,通过专门的软件进行查看,从而分析定位问题。
(4) 部署结构
可以学习省局征管系统和网报系统部署接口,学习如何部署一个超大型的信息系统。
5. 网络相关
(1) 基本的网络分析
可以学习一些基本等网络命令,对系统的运行环境进行监控。比如通过Ping命令检查网络的联通性,Ping+数据包的命令检查网络的吞吐量,通过Tracert可以监控网络流转的路由信息等。这些命令都比较简单但可以快速的定位问题。网络分析对网报维护小组特别有用,前一段时间久通过这些网络命令做了一个可执行文件,生成客户端的网络状况报告,帮助快速定位问题。
6. 安全相关
(1) 内外网隔离的结构
可以学习总局关于网络结构的相关要求,比对现在又征管系统网络结构的划分,比如核心征管区、外部交换区。内外网业务系统之间需要实现网络隔离,系统的内外网隔离结构的实现。
(2) CA相关
省局的外网系统支持CA的模式,可以学习CA的相关知识。
7. 运维体系建设和团队合作
征管系统维护项目组是一个将近20个人的小团队,需要进行团队合作。当前的信息化建设已经不再讲求个人英雄主义,任何工作需要靠团队的配合才能完成。因此我们在维护中学会如何将自己融入到团队中,增强团队的凝聚力和战斗力,共同向一个目标迈进,同时也需要在团队中展现自己的风采,让自己脱颖而出。
如果对运维的流程有兴趣,可以学习一下ITSS(信息技术服务标准), 它是一套体系化的信息技术服务标准库,全面规范了信息技术服务产品及其组成要素,用于指导实施标准化的信息技术服务,以保障其可信赖。他是有工业和信息化部软件服务业司联合国内中国电子技术标准化研究所、神州数码、中软、东软、浪潮等主流IT公司2010年标准。总局相关系统的运维采用此标准。
以上,是我简单列举的部分项目学习切入点,类似这种知识点还有很多,如果我们能将这些零散的知识学好了,都可能成为这个行业专家:业务专家,系统分析师、架构师,DBA等。运维的信息系统包含这么多的知识,我们需要怎么学习呢?我的建议采用循序渐进的方法,先培养自己的基本技能,如:负责模块业务熟悉、平台的熟练应用,SQL语句的基本使用、团队合作、沟通能力等,在具备基本技能的基础上,确定自身的发展方向,如:业务学习、分析设计、数据库、中间件、Java技术等,确定自己的一个或者几个目标,结合运维的特点,进行深入的研究和学习,同时也兼顾了解一些其他的知识,完善的自己的知识体系,假以时日,我们一定实现自己的目标。
附件列表