当前位置: 首页 > 科技观察

运维工作到底是做什么的?

时间:2023-03-22 12:04:29 科技观察

互联网运维工作以服务为中心,以稳定、安全、高效三个基本点确保公司互联网业务能够24/7全天候为用户提供优质服务。服务。运维人员加强公司互联网业务所依赖的基础设施、基础服务、线上业务的稳定性,进行日常巡检,发现服务中可能存在的隐患,优化整体架构,屏蔽常见运营故障,多-数据接入,提升业务容灾能力。通过监控、日志分析等技术手段,及时发现并响应服务故障,减少服务中断时间,使公司互联网业务达到预期的可用性要求,为用户提供持续稳定的服务。在安全方面,运维人员需要关注业务运营中涉及的方方面面,确保用户能够安全、完整地访问在线服务。从网络边界划分、ACL管理、流量分析、DDoS防御,到操作系统、开源软件漏洞扫描修复,再到应用服务XSS、SQL注入防护;从安全流程梳理、代码白盒黑盒扫描、权限审计,到入侵行为检测、业务风控等,运维人员需要确保公司提供的互联网行业运行在安全可控的状态,保证公司业务数据和用户隐私数据的安全,同时还需要具备抵御各种恶意攻击的能力。在保证业务稳定和安全的前提下,还要保证公司内部业务的高效运行和快速输出。运维工作需要对业务的各个方面进行优化。例如IO优化提升数据库性能,图片压缩降低带宽占用等,所提供的互联网服务以相对较小的资源投入带来最大的用户价值和体验。同时,还需要通过各种工具平台,提高内部产品发布和交付的效率,提高公司内部运维相关的工作效率。运维作业分类有很多工作方向。随着业务规模的不断发展,越是成熟的互联网公司,运维岗位的划分就会越细。目前,很多大型互联网公司在起步阶段只有系统运维,逐步根据服务规模和服务质量的要求进行工作细分。总的来说,运维团队的工作分类(见图1-1)和职责如下。系统运维系统运维负责IDC、网络、CDN和基础服务(LVS、NTP、DNS)的建设;负责资产管理、服务器选择、交付和维护。详细岗位职责如下:1、IDC数据中心建设收集业务需求,预估数据中心未来发展规模,从骨干网分布、数据中心建筑、互联网接入、网络攻击防御能力、扩展能力和空间预留。从保留能力、对外专线能力、现场服务支持能力等方面评估和选择数据中心。负责数据中心的建设和现场维护工作。2、网络建设设计规划生产网络架构,包括:数据中心网络架构、传输网络架构、CDN网络架构等,以及网络优化等日常运维工作。3.LVS负载均衡和SNAT搭建LVS是整个站点架构中的流量入口,根据网络规模和业务需求搭建负载均衡集群。完成网络与业务服务器的连接,提供高性能、高可用的负载调度能力,统一的网络层攻击防御能力。SNAT。集中提供数据中心的公网访问服务,通过集群部署保证出站服务的高性能和高可用。4、CDN规划建设CDN工作分为第三方和自建两部分。建立第三方CDN选择和调度控制;根据业务发展趋势,规划新CDN节点的建设和布局;完善CDN业务和监控,确保CDN系统稳定高效运行。分析业务加速通道的文件特征和数量,制定最优加速策略和资源匹配;负责CDN用户劫持等日常故障排除。5.服务器选型、交付及维护负责服务器测试选型,包括对整机及组件的基础测试和业务测试,降低整机功率,增加机架部署密度等。结合对公司业务方面,推广新硬件和新解决方案以减少服务器业务投资规模。负责服务器硬件故障的诊断和定位,服务器硬件监控和健康检查工具的开发和维护。6.OS、内核选型及OS相关维护工作负责整体平台的OS选型、定制和内核优化,以及Patch更新和内部版本发布;建立基础的YUM包管理和分发中心,提供通用的包版本库;跟进各种日常操作系统相关的故障;针对不同业务类型提供针对性的优化支持。7、资产管理记录和管理与运维相关的基础物理信息,包括数据中心、网络、机柜、服务器、ACL、IP等各种资源信息,并制定有效的流程,确保信息的准确性;开放API接口,为自动化运维提供数据支持。8、基础服务建设业务对DNS、NTP、SYSLOG等基础服务的依赖性很强。需要设计高可用架构,避免单点,提供稳定的基础服务。应用运维应用运维负责在线服务变更、服务状态监控、服务容灾和数据备份、服务日常排查、故障应急处理等。详细的工作职责如下所述。1、设计评审在产品开发阶段,参与产品设计评审,从运维角度提出评审意见,使服务满足运维接入的高可用需求。2、服务管理负责制定线上业务升级变更及回滚方案,并实施变更。掌握负责的服务和服务之间的关系,以及服务所依赖的各种资源。能够发现服务中的缺陷,及时报告并推动解决方案。制定服务稳定性指标和准入标准,同时不断完善和优化程序和系统的功能和效率,提高运行质量。完善监控内容,提高报警准确率。当在线服务出现故障时,会立即响应,已知的在线故障可以按流程上报,按计划执行。对于不明故障,将组织相关人员联合排除故障。3、资源管理对各服务的服务器资产进行管理,梳理服务器资源状况、数据中心分布、网络专线和带宽状况,可以合理使用服务器资源,根据不同服务的需求分配不同配置的服务器保证服务器资源的充分利用。4、例行检查制定服务例行检查要点,并持续改进。根据建立的服务检查点,定期对服务进行检查。调查过程中发现的问题,要及时排查,消除可能存在的隐患。5、应急预案管理确定业务需要的监控、系统指标的阈值或临界点,以及情况发生后的处理方案。建立和更新服务计划文件,并根据日常故障情况不断补充完善,提高计划的完备性。能够制定和审查各种应急预案,并定期进行应急预案演练,确保应急预案的可行性。6、数据备份制定数据备份策略,按规范进行数据备份工作。确保数据备份的可用性和完整性,定期进行数据恢复测试。数据库运维数据库运维负责数据存储方案设计、数据库表设计、索引设计和SQL优化,以及数据库的变更、监控、备份和高可用设计。详细的工作职责如下所述。1、设计评审在产品开发初期,参与设计方案的评审,从DBA的角度提出数据存储方案、数据库表设计方案、SQL开发标准、索引设计方案等,使服务可以满足数据库使用的高可用性和高性能要求。2.容量规划把握服务所负责数据库的容量上限,清楚了解当前的瓶颈点,在服务未达到容量上限时及时进行优化、拆分或扩容。3、数据备份和容灾制定数据备份和容灾策略,定期完成数据恢复测试,确保数据备份的可用性和完整性。4.数据库监控提高数据库生存和性能监控,及时了解数据库运行状态和故障。数据库安全建立数据库账户体系,严格控制账户权限和开放范围,降低滥用和数据泄露风险;加强离线备份数据管理,降低数据泄露风险。5、数据库高可用和性能优化针对数据库单点风险和故障设计相应的切换方案,降低故障对数据库服务的影响;不断优化数据库的整体性能,包括引入新的存储方案、硬件优化、文件系统优化、数据库优化、SQL优化等,在保证成本不增加的情况下,数据库可以支持更多的业务请求或略有增加。6、自动化系统建设,数据库自动化运维系统的设计与开发,包括数据库部署、自动扩容、分库分表、权限管理、备份与恢复、SQL审计与上线、故障转移等功能。7、运维研发运维研发负责通用运维平台的设计研发,如:资产管理、监控系统、运维平台、数据权限管理系统等.提供各种API,供运维或研发人员封装更高层次的自动化运维系统。详细的工作职责如下所述。8、运维平台对服务及其关联关系进行记录和管理,辅助运维人员自动化、流水化地完成日常运维操作,包括机器管理、重启、更名、初始化、域名管理、流量切换和故障预案的实施。9、监控系统负责监控系统的设计与开发,完成公司服务器及各类网络设备的资源指标、在线业务运营指标的采集、报警、存储、分析、展示和数据挖掘,并不断提高报警性能。及时、准确、智能促进公司服务器资源的合理配置。10、自动化部署系统参与自动化部署系统的开发,负责自动化部署系统所需的基础数据和信息,负责权限管理、API开发、Web端开发。结合云计算,开发并提供PaaS相关的高可用平台,进一步提升服务部署速度和用户体验,提高资源利用率。运维安全运维安全负责网络、系统和业务的安全加固,进行日常安全扫描、渗透测试、安全工具和系统研发、安全事件应急响应等工作。详细的工作职责如下所述。1、安全制度的建立根据公司内部的具体流程,制定切实有效的安全制度。2、安全培训定期对员工进行有针对性的安全培训和考核,建立全公司安全责任人制度。3.风险评估通过黑白盒测试检查机制,定期生成对物理网络、服务器、业务应用、用户数据的整体风险评估结果。4、安全建设根据风险评估结果,加强薄弱环节,包括设计安全防线、部署安全设备、及时更新补丁、病毒防护、源代码自动扫描、业务产品安全咨询等。为了降低可能泄露的数据价值,通过加密、匿名化、混淆甚至定期删除等技术手段和流程来达到目的。5.安全合规为了满足支付牌照等合规需求,安全团队负责安全合规的对外接口。6、应急响应建立安全报警系统,通过安全中心收集第三方发现的安全问题,并组织各部门对发现的安全问题进行修复,评估影响区域,事后追溯安全原因。在运维工作发展过程中,前期运维团队主要从事数据中心建设、基础网络建设、服务器采购、服务器安装交付等工作,人员较少。很少参与在线服务的变更、监控、管理等。这时候运维团队更多的是一个基础设施的角色,提供一个简单易用的网络环境和系统环境。随着业务产品的逐渐成熟,对服务质量提出了更高的要求。这个时候运维团队也会承担一些服务器的监控工作,也会负责LVS、Nginx等4/7层的与业务逻辑无关的运维工作。这时候服务的变更更多的是手工操作一项一项,或者出现一些简单的批处理脚本。监控的重点更多的是服务器状态和资源使用情况。很少有服务应用状态的监控,更多的监控使用Nagios、Cacti等各种开源系统。由于业务规模和复杂度的不断增加,运维团队将逐渐分为应用运维和系统运维两部分。应用运维开始接管线上业务,逐步开展服务监控整理、数据备份和服务变更等工作。随着服务的深入,应用运维工程师有能力开始对服务进行一些简单的优化。同时,为了应对每天大量的服务变更,我们也开始编写各种运维工具,可以方便地针对某些特定的服务进行批量变更。随着业务规模的扩大,由于容量规划不足或抗风险能力弱导致的基础设施故障越来越多,迫使运维人员开始将更多的精力投入到多数据中心容灾和应急预案管理中。方向。业务规模达到一定规模后,开源监控系统在性能和功能上已经不能满足业务需求;大量的服务变更和复杂的服务关系,以往人工记录和工具变更的方式效率不高,准确性不高。不能满足业务需求。在安全方面,大大小小的各种事件也时有发生,迫使我们在安全防御上投入更多的精力。运维团队逐渐形成了上述五大类工作,每类都需要专门的人才。此时系统运维更侧重于基础设施建设和运维,提供稳定高效的网络环境,将服务器等资源输送给应用运维工程师。应用运维更关注服务运行状态和效率。数据库运维属于应用运维工作的细化,更侧重于数据库领域的自动化、性能优化和安全防御。运维研发和运维安全提供各种平台和工具,进一步提高运维工程师的工作效率,让业务服务运行更稳定、高效、安全。我们将运维开发过程分为四个阶段,如图1-2所示。图1-2运维开发流程人工管理阶段:业务流量不大,服务器数量相对较少,系统复杂度不高。对于日常的业务管理操作,大家一个一个登录服务器进行手工操作,属于单独操作。每个人都有自己的操作方法,缺乏必要的操作标准和流程机制。各种各样的。工具批量运行阶段:随着服务器规模和系统复杂度的增加,完全手动的运行模式已经不能满足业务快速发展的需求。因此,运维人员逐渐开始使用批量操作工具,针对不同的操作类型出现了不同的脚本程序。但是每个团队都有自己的工具,每次运营需求发生变化时都需要对其进行调整。这主要是由于环境和操作规范不够,导致可编程处理能力较弱。这时候虽然效率有所提升,但很快就遇到了瓶颈。运行质量并没有太大的提升,甚至可能因为批量执行而导致更大规模的问题。我们开始建立大量的流程规范,比如审核机制,先上线观察一台服务器10分钟再继续后续操作,升级完成至少观察20分钟。这些主要是靠人来监督和落实,但在实际过程中,往往落实不到位,降低了工作效率。平台管理阶段:这个阶段对运维效率和误操作率有更高的要求。我们决定着手建设运维平台,通过平台承载标准和流程,从而解放人力,提升质量。此时服务的变更动作被抽象出来,形成了操作方式、服务目录环境、服务运行方式等统一标准。例如,程序的启停界面必须包括启动、停止和重新加载。通过平台对操作流程进行约束,比如上面提到的某台服务器在线观察10分钟。强制在平台设置暂停检查点。第一台服务器运行完成后,运维人员需要填写相应的检查项,才能继续进行后续的部署动作。系统自调度阶段:服务规模更大,服务关联更复杂,运维平台种类繁多,原来批量操作转为平台操作的方式已经不适用,服务变化需要更高。一层抽象。将每台服务器抽象成一个容器,调度系统根据资源使用情况将服务调度部署到合适的服务器上,并自动完成与周边运维系统的联动,如监控系统、日志系统、备份系统,ETC。。通过自调度系统,可以根据业务运行状态动态扩容,自动处理常见的业务故障。运维人员的工作也会被转发到产品设计阶段,协助研发人员进行业务改造,接入自调度系统。在运维的整个开发过程中,我们希望所有的工作都实现自动化,减少重复性工作,降低知识传递的成本,让我们的运维交付更高效、更安全,让产品运营更高效。稳定的。对于故障的处理,也希望从事后处理到早期发现,从人工处理到自动系统容灾。