运维工程师,刚入职一个之前没有运维的公司,该做什么?
下面内容,只谈技术工作方面的,人情世故的方面自己体会吧。。。。
前言
写这个,主要是有一个朋友,也是运维工程师,五年以上运维经验了吧,中小公司都待过。最近又入职了一家公司,这家公司开发团队大概十多个人,三十多台服务器,测试、开发、正式环境没有做好区分,开发人员都是手动上线,服务器在阿里云三个账号下,中间件比如对象存储、MySQL、Redis、MQ都用的云服务。最近这家公司换了领导,好像也是打算梳理一下业务,就招了一个专职运维。
我这个朋友感觉
之前没有运维,现有的工作一团乱麻,且现在都用了云服务,运维还能干啥?
万一出现裁员,运维还是第一波被裁
现在刚入职连干劲都没了。。。。我也是服了。
接着昨天的文章来写,说一下我的一些看法。
对于一些中小型公司,开发团队10人一下,有时候还真的没必要专门招一个运维工程师。服务器规模太小,业务也处于快速迭代阶段,开发、测试、正式,没有区分,再正常不过了。出现了问题,就及时改,反正用户量不大,客户不多,影响不大。甚至开发一天发布上线十多次都不在话下。没有测试、外面找的UI/UE,LNMP架构甚至就搞定了。
但是当业务趋于稳定,开发团队规模上来之后、服务器规模不断变大,比如20-30人团队,服务器在30台以上,肯定要招专门的UI/UE、测试工程师、运维工程师、小程序、安卓、IOS、产品经理、项目经理,不会只是前端、后端,甚至只有几个兼职全栈。
记住一句话:专业的人做专业的事,才能得到专业的结果!
回到正题,在这种情况下,到这种规模和团队的公司,怎么开展工作?
1. 梳理资源
要梳理运维负责的范围内的所有资源,比如:
云资源:
用的都有哪几个云厂商?有几个云账号?都在谁手里?谁在管理?
云账号下都有哪些资源?CDN、对象存储、关系数据库、缓存数据库redis、MQ、SLB、域名、CA证书等等,都用了哪些?
服务器有多少台?怎么登陆的?是直接SSH,还是通过VPN(大概率不会是VPN,一个是付费,还有开源的并不好配置)
这些云资源,有没有快到期的,比如域名、CA证书要续费
这些云资源,配置是什么样的?每个月使用情况怎么样?每个月大概需要花多少钱?
云服务有没有专门的供应商对接群?有没有优惠?
费用:
购买云服务需要走什么流程,报销该怎么走?
(记住:购买云服务绝对不要自己垫钱,然后走报销流程!!!)
权限管理:
梳理所有的账号及权限,都在谁手里?需要不需要运维管理?
备份:
有没有数据备份策略?如果有的话,大概多少天备份一次?
是用脚本做的备份?还是云厂商有备份策略?
代码管理:
是自建的,还是用的云服务,用量怎么样?
容器:
有没有用到docker、k8s
监控与告警:
有没有监控告警?有自建的监控告警系统吗?是基础的系统告警,还是带有业务、访问、带宽更高级一些的?
域名:
有几个域名,都关联的什么业务?后面对应的什么服务?什么语言?怎么部署的?
数据库与中间件:
都用了哪些?哪些服务用到了?量大吗?自建的还是云服务的?
自建机房:
有些公司还有硬件设备,一些老的服务器,之前没有用上,运维来了,就得用上。
服务器在哪?有没有专线?自建机房还是托管机房?有没有公网IP?有多少台服务器?服务器跑着没有?配置怎么样?有几台能用的?
要不要用到VPN?交换机和防火墙什么配置?能不能直接做端口映射?
服务器要不要做超融合,还是用破解的Vcenter+Esxi,还是用其它虚拟机平台开源方案?
2. 熟悉流程
现有的代码开发流程是什么样的?
前后端开发代码都部署到那里了?
开发、测试、正式,有没有做大区分?就是至少域名、服务器全分开
一般多长时间发版一次?什么时间发版?怎么发版?发版流程是什么样的?发版的时候需要运维配合什么?
这么报销的?都哪些可以报销?
日常加班吗?加班有补助还是有调休?还是义务加班?
3. 提出建议与计划
上面的1、2和这个3,并不是孤立的,很可能是交叉着来的,甚至有时候领导安排了一个新活儿,你要先去干其他的
当你摸清楚情况后,只有你一个人,领导还要看到你的工作成绩,就要提出自己的工作计划与建议
针对上面的一些情况,可以作出一些安排
对于云资源和云服务,以及云服务付费,可以汇总成一个表格,统计好相关的情况,每周、每月汇报一次。
第一次可能会比较麻烦,但是后面就是修修改改了。可以试试用CMDB了。
开发的权限、运维的权限,做好梳理后,就是进一步规范,谁能做什么,怎么做?草台班子要一步步走向正规,权限细分是必须的。
可以尝试用到堡垒机了。
代码管理,如果用的是云的,那就还让开发来管。
监控告警,可以考虑用夜莺、zabbix,或者grafana+prometheus+alert,或者云服务。服务器基础告警、业务流量带宽告警、页面可用性告警,能想到的都安排上。
前后端分离、高可用、CDN缓存、弹性伸缩,等等,都安排上。
容器化如果之前没有用上,可以不着急推,因为刚开始的配置管理很麻烦,用起来之后倒是很省事。
日志收集与分析系统,安排上,elk那一套就行,用云服务也行,只要不怕花钱。主要是可以用来分析用户访问情况(收集nginx日志)、排查程序出错(收集程序日志)。
程序发布,要不要用jenkins做流水线发布?
主要围绕下面几个方向来考虑:
- 数据库管理
- 中间件管理
- 云服务管理
- 服务器管理
- 流水线发布
- 容器平台
- 监控告警系统
- 日志收集与分析系统
- 代码管理
- 域名与证书管理
- 域名配置管理
- 网络安全与VPN
- 云服务费用管理
- CDN
- 自建机房与超融合、自建虚机平台
上面的这些,摊开来做,每一项都需要花一段时间。有的甚至你一个人就搞不定。
所以,别怕没活干!
4. 按照计划逐步推进
1 2 3,都了解完,做完了,估计就要一段时间了,然后按照计划逐步推进就行了。让领导看到你干活了,让开发看到你干活了。
把这些东西跑顺了之后,活就好干了,就不会那么忙了。
上面的工作,你自己想要搞定,没有半年以上的时间是不行的!
正常进度,对于一家公司来说,有些需要两三个运维才能搞定。甚至对于刚开始烂摊子状态,一年也不一定能搞完,只能搞完一部分。
有些模块,对于一些公司来说,没那么重要。看需求来做就行。
这个过程中,也可能会招新人。如果不招新人,那就慢慢干,有进度就行