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

希望这是我最后一次谈论DevOps!

时间:2023-03-16 17:18:16 科技观察

【.com原创稿件】什么是DevOps?“DevOps”是“开发”开发和“运维”运营的结合。图片来自PexelsDevOps可以算是一个文化风向标。在这种文化的引导下,可以促进项目团队成员之间的开发、测试、运维、产品等无缝协作。它通过有效的自动化和可重复的方法更快地将代码部署到生产环境,提高企业交付应用程序或服务的速度,从而更好地为客户提供高质量的产品,获得更强的进入市场的强大竞争优势。因此,DevOps可以看作是一条在企业项目团队中不断优化、紧密协同、相互配合的“无形生产链”。为什么需要DevOps?项目组在没有DevOps实践的那些日子里经历了什么:项目内部开发团队和运维团队完全独立。当开发团队根据需求设计/构建代码时,测试任务和部署任务也是完全隔离的活动,往往导致实际的整体项目周期比预期的构建时间更长。团队成员将大量时间单独用于设计、开发、测试和部署,而不是集中于整个项目构建本身(即,分开但不组合)。手动部署代码经常会出现人为错误,即使通过Jenkins进行持续集成,这也只是构建的一部分。产品、开发、测试、运维团队各有时间线,不同步,会导致累积延迟。在保证产品质量的前提下,不断提高团队产品的交付率,缩短交付时间,是每个项目团队的共同目标。然而,理想与现实之间总是存在着难以逾越的鸿沟。世界知名研究机构Forrester曾指出,只有17%的团队能够在足够快的时间内交付客户所需的产品。在没有引入和实践DevOps文化的情况下,不难从上面列出的五个主要痛点中找出导致团队生产力低下、协同工作效率不理想的原因。DevOps与传统IT的区别为了清楚地了解引入DevOps给项目运营带来的变化,下面将结合一个场景来对比一下“传统研发模式”VS“DevOps”的区别。假设当前项目团队工作进度如下:“传统研发模式”VS“DevOps”对比图如下:DevOps的价值在敏捷项目研发大规模盛行的当下,DevOps更好地帮助敏捷团队实施持续集成和持续交付,进而帮助项目团队更快地将他们开发的产品/系统/平台推向市场。此外,DevOps的优势不仅限于此,它还有其他值得关注的因素:可预测性:DevOps有效降低了新版本的失败率。可复现性:DevOps可以对所有项目的内容进行版本控制,以便随时恢复到更早的版本。可维护性:DevOps可以在新版本崩溃或当前系统不可用时轻松执行恢复过程。上市时间:DevOps通过简化的软件交付流程大幅缩短上市时间(保守估计至少缩短50%的上市时间),这一市场领先的数据绝对是当今移动应用程序的亮点。更高质量:DevOps中的基础架构构建有助于团队提高应用程序开发的质量。降低风险:DevOps将安全性纳入软件交付的生命周期,从而显着减少整个生命周期中的缺陷。将较大的代码库分成较小的部分:DevOps基于将较大的代码库分解为较小的可管理模块的敏捷编程方法。DevOps生命周期DevOps在开发和运营之间建立了深度集成的桥梁。只有充分理解DevOps生命周期,才能进一步体会到持续集成和持续部署(CI/CD)的实际意义。DevOps(CI/CD)生命周期中各个阶段的核心任务如下:小规模迭代加速软件开发和软件交付过程。②测试(Testing)QA团队通过自动化手段辅助测试,协助开发人员识别和修复新代码中的错误。③ContinuesIntegration这个阶段会将新的功能集成到之前的代码中进行集成测试;言下之意,我们可以从逻辑上得出结论,只有通过持续集成和持续测试,才能有效地验证持续开发。这样可以保证顺利进入下一阶段的迭代。④ContinuesDeployment在DevOps中,除了强调持续集成(CI)之外,部署过程也是持续的。在持续部署(CD)过程中,必须确保任何时候对代码所做的任何更改都不会影响当前已经上线的网站/系统(尤其是那些高流量网站)的功能。⑤监控(Monitoring)在这个阶段,运维团队会密切关注系统/平台的任何异常行为,例如错误、Bug,并实时反馈所有异常情况。DevOpsVSAgile项目利益相关者和沟通链是IT流程中的典型核心要素。如果说敏捷模型的引入是为了解决客户与研发团队之间的沟通鸿沟,那么DevOps的植入则填补了研发团队与IT之间的鸿沟。运营团队之间的差距。“敏捷”VS“DevOps”对比图如下:DevOps原则DevOps有以下六个不可或缺的原则:以客户为中心:DevOps团队必须采用以客户为中心的原则,客户是产品和服务的投资者。端到端问责制:DevOps团队需要提供持续的性能支持。持续改进:DevOps专注于持续改进,以最大限度地减少资源浪费,并不断加快产品开发/服务交付的改进速度。自动化一切:自动化是DevOps流程的重要原则,不仅适用于软件开发,还适用于整个基础架构。Teamwork:DevOps定义了设计、开发、测试、运维的角色,整个团队通力合作,齐心协力。监控一切,测试一切:对于DevOps团队来说,拥有可靠的监控和测试流程尤为重要。DevOps自动化工具DevOps提倡自动化所有流程并对其进行配置。在大型DevOps团队中,维护大型IT基础设施面临的困难可以简单分为以下六类:基础设施自动化配置管理自动化部署性能管理日志管理监控管理基于以上六类。在DevOps实践中,有相应的工具/服务来解决自己的问题。下面将一一介绍。①基础设施自动化AmazonWebServices(AWS):亚马逊的云计算服务平台,几乎可以在云端运行所有应用程序,无前期硬件成本,易于按需扩展,为遍布全球的用户提供一整套基础设施天地和云解决方案,包括弹性计算、存储、数据库、应用等一整套云计算服务,有效帮助企业降低IT投资成本和维护成本,实现万物轻松部署上云。②配置管理Chef:这是一个非常好用的DevOps工具,可以实现速度提升、大规模扩展、整体一致性。有了这个工具,DevOps团队可以避免跨多台服务器进行更改,只需要在一个地方进行更改,相应的更改会自动同步到其他服务器。③Jenkins的自动化部署:可以促进持续集成和持续测试,持续集成后定期触发自动化测试,有助于更轻松有效地将变更集成到现有项目中。④PerformanceManagementAppDynamic:提供实时性能监控的DevOps工具。该工具收集的数据有助于开发者及时调试问题。⑤日志管理Splunk:是一款优秀的日志分析软件,可以处理常规的日志格式,如apache、squid、系统日志、mail.log等,支持日志索引、交叉查询、复杂查询语句等,以及可以以非常直观的方式显示。日志可以通过文件方式传输到Splunk服务器,也可以通过网络实时传输,也可以采用分布式日志收集的方式。总之,它支持多种日志采集方式,是对所有日志进行汇总、存储和分析的基础。⑥监控管理Nagios:确保当基础设施和相关服务出现故障时,能够及时将消息通知相关人员,并能够实时响应并开始处理。Nagios可以协助DevOps团队及时发现并纠正产品/系统/服务中的问题。NagiosDevOps监控管理亚马逊CTOWernerVogels曾提到,在DevOps实践中,他们的研究着眼于“有多少团队正在运行基于产品的应用程序/服务”,无论是研发团队、运营团队还是软件发布成员或其他项目利益相关者都有有权定义监测指标。基于上述一系列用于DevOps实践的自动化辅助工具,我们以Nagios事件管理为例,简单展示其在自动化监控管理方面的优势。NagiosIncidentManager是一个企业级的、基于Web的事件管理应用程序,它允许团队或个人通过其强大的Web应用程序更快地跟踪和解决问题,除了安全性和移动性之外,它还具有与第三方。NagiosIncidentManager中主要包的菜单有:Dashboard、Incidents、Reports、Admin和Help菜单。下面我们一一介绍事件管理器的基本用法,包括但不限于创建、管理和关闭事件、跟踪统计等。智能仪表盘(Dashboard)如上图所示:事件摘要(IncidentSummary):显示当前需要关注的事件数,直接点击链接进入相应事件页面。最近的操作:显示最近5个操作。您可以通过事件名称(链接)查看对应事件的操作。在Dashboard页面中,您可以通过点击右上角的“新建事件”来创建新事件。事件在事件页面中,我们可以创建新事件和管理现有事件。①事件过滤器:当您点击事件菜单时,默认会显示所有打开的事件。可以通过单击页面顶部的选项卡来过滤不同状态的事件(打开'open',关闭'closed',解决'resolved',新'new'或'all')。当前事件列表也可以按名称“标题”、创建“创建”或更新日期“上次更新”、事件类型“类型”、事件状态“状态”和优先级“优先级”进行排序,方法是单击每列的标题种类。②事件管理:选中要处理的事件(复选框),点击“删除选中”,可以批量删除事件;点击“更新选中”,可以批量更改事件的优先级、状态或类型。③新建事件:点击右上角“新建事件”,新建事件;填写必要的事件信息后,点击页面底部的“保存事件”,保存新创建的事件。④活动编辑:点击活动名称进入活动编辑页面,在该页面添加活动更新消息,输入相应消息,点击“发布消息”发布消息。单击编辑详细信息或删除事件可以查看、编辑或删除特定事件。报表在报表页面,点击报表名称,可以指定开始和结束日期/时间,点击“更新”生成相应的报表。该报告包含以下四种类型的数据:一般统计:概述报告,包括来自其他三个报告的数据,即:平均解决时间(MTTR)、第一响应时间和已关闭事件。MeanTimetoResolution(MTTR):包含解决每个事件所花费的平均时间,总MTTR也显示在页面底部。FirstResponseTimes:包含每个事件首次响应的平均时间,首次响应的总平均时间也显示在页面底部。已关闭事件:已关闭事件的总数。管理(Admin)管理页面由四部分组成:用户和团队(Users&Teams)事件(Incidents)服务器设置(ServerSettings)系统备份(SystemBackups)各部分负责的任务如下图所示:(Users&Teams)创建用户:点击左上角“添加用户”,输入所需信息,保存后生效。创建团队:点击“添加团队”添加团队,输入所需信息,保存后生效。②事件(Incidents)该版块专门用于管理事件类型,回调API,查看每个事件当前上传的文件;点击左上角的“新建类型”,添加一个新的事件类型;单击右侧的“删除事件类型”按钮删除事件类型。在“回调API”页面,您可以添加新的回调函数,编辑或删除已有的回调函数;点击右上角“新建回调”,新建一个回调API,填写必填信息,勾选“启用此回调”复选框,启用此回调,保存后生效。③服务器设置(ServerSettings)服务器设置包括通用服务设置、LDAP/AD集成、许可证设置、邮件设置和检查更新;在“MailSettings”页面,可以更改使用的邮件协议,PHP邮件是默认设置的。总结与传统的IT项目研发流程相比,DevOps可以帮助企业将产品部署周期从数年缩短至数月、数周,并在流程中的各个环节提供可维护性和可预测性,确保更高的质量成本、工作效率和时间。市场。DevOps正在成为IT人员的一项重要技能,例如,一项针对Linux招聘的调查发现,25%的受访者是DevOps专业人士。总而言之,面对更加复杂的项目、不断变化的环境和基础设施,传统企业和个人必须做出改变。DevOps工程师应该具备解决问题??和快速学习的能力。只有这样,才能在保证质量的前提下,不断优化,快速发展,个别企业应该如此。作者:罗小罗简介:英国计算机专业TOP10,计算机科学与技术硕士,曾就职于汇丰银行、摩根大通、惠普、交通银行、阿里等国内外知名企业。涉及的项目领域主要包括:互联网金融、电子商务、教育、医疗等。目前就职于某世界500强企业,作为测试开发团队的负责人,带领团队搭建并持续优化自动化测试框架,并开发自动化测试辅助工具;擅长领域:单元/接口/性能/安全/自动化测试/CD/CI/DevOps;个人持续研究领域:自动化测试模型/数据分析/算法/机器学习等。编辑:陶佳龙征稿:如有意向投稿或寻求报道,请联系editor@51cto.com【原创稿件请注明原作者和出处为.com,合作网站转载】