知行社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

知行社区 门户 技术 查看内容

运维工程师的职责和前景

2013-3-11 19:18| 发布者: 知行| 查看: 220| 评论: 0|原作者: 知行

摘要: 转自 QQ空间运维中关键技术点解剖:1 大量高并发网站的设计方案 ;2 高可靠、高可伸缩性网络架构设计;3 网站安全问题,如何避免被黑?4 南北互联问题,动态CDN解决方案;5 海量数据存储架构一、什么是大型网站运维? ...
转自 QQ空间

运维中关键技术点解剖:1 大量高并发网站的设计方案 ;2 高可靠、高可伸缩性网络架构设计;3 网站安全问题,如何避免被黑?4 南北互联问题,动态CDN解决方案;5 海量数据存储架构



一、什么是大型网站运维?



首先明确一下,全文所讲的”运维“是指:大型网站运维,与其它运维的区别还是蛮大的;然后我们再对大型网站与小型网站进行范围定义,此定义主要从运维复杂性角度考虑,如网站规范、知名度、服务器 量级、pv量等考虑,其它因素不是重点;因此,我们先定义服务器规模大于1000台,pv每天至少上亿(至少国内排名前10),如sina、baidu、 QQ,51.com等等;其它小型网站可能没有真正意义上的运维工程师,这与网站规范不够和成本因素有关,更多的是集合网络、系统 、开发工作于一身的“复合性人才”,就如有些公司把一些合同采购都纳入了运维职责范围,还有如IDC网络规划也纳入运维职责。所以,非常重要一定需要明白:运维对其它关联工种必须非常了解熟悉:网络、系统、系统开发、存储,安全,DB等;我在这里所讲的运维工程师就是指专职运维工程师。



我们再来说说一般产品的“出生”流程:



1、首先公司管理层给出指导思想,PM定位市场需求(或copy成熟应用)进行调研、分析、最终给出详细设计。



2、架构师根据产品设计的需求,如pv大小预估、服务器规模、应用架构等因素完成网络规划,架构设计等(基本上对网络变动不大,除非大项目)



3、开发工程师将设计code实现出来、测试工程师对应用进行测试。



4、好,到运维工程师出马了,首先明确一点不是说前三步就与运维工作无关了,恰恰相反,前三步与运维关系很大:应用的前期架构设计、软/硬件资源评估申请采购、应用设计性能隐患及评估、IDC、服务性能\安全调优、服务器系统级优化(与特定应用有关)等都需运维全程参与,并主导整个应用上线项目;运维工程师负责产品服务器上架准备工作,服务器系统安装、网络、IP、通用工具集安装。运维工程师还需要对上线的应用系统架构是否合理、是否具备可扩展性、及安全隐患等因素负责,并负责最后将产品(程序)、网络、系统三者进行拼接并最优化的组合在一起,最终完成产品上线提供用户使用,并周而复使:需求->开发(升级)->测试->上线(性能、安全问题等之前预估外的问题随之慢慢就全出来了)在这里提一点:网站开发模式与传统软件开发完全不一样,网站一天开发上线1~5个升级版本是家常便饭,用户体验为王嘛,如果某个线上问题像M$ 需要1年解决,用户早跑光了;应用上线后,运维工作才刚开始,具体工作可能包括:升级版本上线工作、服务监控、应用状态统计、日常服务状态巡检、突发故障处理、服务日常变更调整、集群管理、服务性能评估优化、数据库管理优化、随着应用PV增减进行应用架构的伸缩、安全、运维开发工作:



a 、尽量将日常机械性手工工作通过工具实现(如服务监控、应用状态统计、服务上线等等),提高效率。



b、解决现实中服务存在的问题,如高可靠性、可扩展性问题等。



c、大规模集群管理工具的开发,如1万台机器如何在1分钟内完成密码修改、或运行指定任务?2000台服务器如何快速安装操作系统?各分布式IDC、存储集群中数PT级的数据如何快速的存储、共享、分析?等一系列挑战都需运维工程师的努力。



在此说明一下其它配合工种情况,在整个项目中,前端应用对于网络/系统工程师来说是黑匣子,同时开发工程师职责只是负责完成应用的功能性开发,并对应用本身性能、安全性等应用本身负责,它不负责或关心网络/系统架构方面事宜,当然软/硬件采购人员等事业部其它同事也不会关心这些问题,各司其职,但项目的核心是运维工程师~!所有其它部门的桥梁。



上面说了很多,我想大家应该对运维有一些概念了,在此打个比方吧,如果我们是一辆高速行驶在高速公路上的汽车,那运维工程师就是司机兼维修工,这个司机不简单,有时需要在高速行驶过程中换轮胎、并根据道路情况换档位、当汽车速度越来越快,汽车本身不能满足高速度时对汽车性能调优或零件升级、高速行进中解决汽车故障及性能问题、时刻关注前方安全问题,并先知先觉的采取规避手段。这就是运维工作~!



最后说一下运维工程师的职责:”确保线上稳定“,看似简单,但实属不容易,运维工程师必须在诸多不利因素中进行权衡:新产品模式对现有架构及技术的冲击、产品高频度的升级带来的线上BUG隐患、运维自动化管理承度不高导致的人为失误、IT行业追求的高效率导致流程执行上的缺失、用户增涨带来的性能及架构上的压力、IT行业宽松的技术管理文化、创新风险、互联网安全性问题等因素,都会是网站稳定的大敌,运维工程师必须把控好这最后一关,需具体高度的责任感、原则性及协调能力,如果能做到各因素的最佳平衡,那就是一名优秀的运维工程师了。



另外在此聊点题外话,我在这里看到有很多人要sina、QQ、baidu,51.com等聊自已的运维方面的经验,其实这对于它们有点免为其难:



a、各公司自已网络架构、规模、或多或少还算是公司的核心秘密,要保密,另外,对于大家所熟知的通用软件、架构,由于很多公司会根据自已实际业务需要,同时因为原版性能、安全性、已知bug、功能等原因,进行过二次开发(如apache,php,mysql ),操作系统内核也会根据不同业务类型进行定制的,如某些应用属于运算型、某些是高IO型、或大存储大内存型。根据这些特点进行内核优化定制,如sina就在 memcache上进行过二次开发,搞出了一个MemcacheDB,具体做得如何我们不谈,但开源了,是值得称赞的,国内公司对于开源基本上是索取,没有贡献;另外,服务器也不是大家所熟知的型号,根据业务特点,大部份都是找DELL/HP/ibm进行过定制;另外,在分布式储存方面都有自已解决方案,要不就是使用现成开源hadoop等解决方案,或自已开发。但90%都是借鉴google GFS的思想:分布式存储、计算、大表。



b、各公司业务方向不一样,会导致运维模式或方法都不一样,如51.com和baidu运维肯定区别很大,因为他们业务模式决定了其架构、服务器量级、 IDC分布、网络结构、通用技术都会不一样,主打新闻门户的sina与主打sns的51.com运维模式差异就非常大,甚至职责都不大一样;但有一点,通用技术及大致架构上都大同小异,大家不要太神化,更多的公司只是玩垒积木的游戏罢了,没什么技术含量。



c、如上面所讲,目前大型网站运维还处于幼年时期理念和经验都比较零散,没有成熟的知识体系,可能具体什么是运维,大家都要先思索一番,或压根没想过,真正讨论也只是运维工作的冰山一角,局限于具体技术细节,或某某著名网站大的框架,真正运维体系化东西没有,这也许是目前网上运维相关资料 比较少的原故吧。或者也是国内运维人员比较难招,比较牛的运维工程师比较少见的原因之一吧。



二、运维工作师需要什么样的技能及素质



做为一名运维工程师需要什么样的技能及素质呢,首先说说技能吧,如大家上面所看到,运维是一个集多IT工种技能与一身的岗位,对系统->网络 ->存储->协议->需求->开发->测试->安全等各环节都需要了解一些,但对于某些环节需熟悉甚至精通,如系统 (基本操作系统的熟悉使用,*nix,windows ..)、协议、系统开发(日常很重要的工作是自动运维化相关开发、大规模集群工具开发、管理)、通用应用(如lvs、ha、web server 、db、中间件、存储等)、网络,IDC拓朴架构;



技能方面总结以下几点:



1、开发能力,这点非常重要,因为运维工具都需要自已开发,开发语言:perl、python、php(其中之一)、shell(awk,sed,expect….等),需要有过实际项目开发经验,否则工作会非常痛苦。



2、通用应用方面需要了解:操作系统(目前国内主要是linux、bsd)、webserver相关 (nginx,apahe,php,lighttpd,java。。。)、数据库(mysql,oralce)、其它杂七八拉的东东;系统优化,高可靠性;这些只是加分项,不需必备,可以边工作边慢慢学,这些东西都不难。当然在运维中,有些是有分工偏重点不一样。



3、系统、网络、安全,存储,CDN,DB等需要相当了解,知道其相关原理。



个人素质方面:



1、沟通能力、团队协作:运维工作跨部门、跨工种工作很多,需善于沟通、并且团队协作能力要强;这应该是现代企业的基本素质要求了,不多说。



2、工作中需胆大心细:胆大才能创新、不走寻常路,特别对于运维这种新的工种,更需创新才能促进发展;心细,运维工程师是网站admin,最高线上权限者,一不小心就会遗憾终生或打入十八层地狱。



3、主动性、执行力、精力旺盛、抗压能力强:由于IT行业的特性,变化快;往往计划赶不上变化,运维工作就更突出了,比如国内各大公司服务器往往是全国各地,哪里便宜性价比高,就那往搬,进行大规模服务迁移(牵扯的服务器成百上千台),这是一个非常头痛的问题;往往时间 非常紧迫,如限1周内完成,这种情况下,运维工程师的主动性及执行力就有很高的要求了:计划、方案、服务无缝迁移、机器搬迁上架、环境准备、安全评估、性能评估、基建、各关联部门扯皮,7X24小紧急事故响应等。



4、其它就是一些基本素质了:头脑要灵光、逻辑思维能力强、为人谦虚稳重、亲和力、乐于助人、有大局观。



5、最后一点,做网站运维需要有探索创新精神,通过创新型思维解决现实中的问题,因为这是一个处于幼年的职业(国外也一样,但比国内起步早点),没有成熟体系或方法论可以借鉴,只能靠大家自已摸索努力。



三、怎样才算是一个合格的运维工程师



1、保证服务达到要求的线上标准,如99.9%;保证线上稳定,这是运维工程师的基本责职所在。


12下一页

鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

相关分类



QQ|小黑屋|手机版|知行技术社区 ( 湘ICP备11020288号-1 )

GMT+8, 2020-4-5 11:05 , Processed in 0.022148 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部