什么是DevOps?

    xiaoxiao2022-07-13  220

        最近的DevOps的概念很火,大家都在讨论DevOps,有人说DevOps是自动化运维,有人说DevOps是流程和管理,还有人说DevOps是一种文化,以前的运维工程师也纷纷变成了DevOps工程师。

        那DevOps究竟是什么?

    传统的运维模式以及面临的挑战

        在传统的瀑布模型开发中,软件生命周期中的运行维护工作是由运维工程师来完成的。

        开发人员完成编码,测试人员测试验收通过后,到发布时,就会将程序交给运维人员部署发布到生产环境。   

    除了程序的部署更新,传统运维工程师最重要的职责就是保障线上服务的稳定运行,对服务器24小时监控,有意外情况发生时需要及时处理和解决。

    除此之外,还有日常的更新维护比如安装升级操作系统、安装更新应用软件、更新数据库配置文件等。

    早些年这种运维模式运行的很好,但是这些年互联网发展对传统的运维模式产生了很大挑战:

    服务器规模快速增长和虚拟化技术的高速发展

    以前企业服务器数量不多,运维工作手工为主,自动化为辅,但这些年技术的快速发展,大型互联网公司的服务器数量越来越庞大,中小公司业务也开始往云服务上迁移,基于Docket的虚拟化技术来搭建在线服务的基础架构,这样需要更多的自动化和基于容器技术或者相关工具的二次开发,对于运维来讲需要更多的开发能力。

    高频的部署发布

    传统的软件部署频率不高,一般几天甚至几个月部署一次,而敏捷开发和持续交付的概念兴起后,更新的频率越来越高,每周甚至每天都会有若干次的更新部署。高频部署带来的挑战,会导致开发和运维的冲突,开发想快速更新部署版本而运维想保持系统稳定。

    所以为了解决开发和运维之间的沟通协作问题,提升运维开发和自动化能力,DevOps出现了。

    什么是DevOps?

    DevOps可以理解为一种开发(Development)和运维(Operations)一起紧密协作的工作方式,从而可以更快更可靠的构建、测试和发布软件。

    那当我们的团队采用DevOps的方式工作的话,会带来哪些好处呢?

    整个软件的构建、测试和发布过程高度自动化

            DevOps一个很重要的基础就是自动化,通过对自动化的应用,是最简单有效的打破开发和运维之间壁垒的方式。应用自动化后,对于运维来说,自动化的交付流程减少了繁重的手工操作,自动化测试可以有效对产品质量提供更好的保障,对于开发人员来说,就方便高频率地进行部署,如果你的团队还没有开始实施自动化,可以先从持续交付开始。

    2.信息更加透明和易于测量

    传统的开发和运维合作模式,两者之间的信息不是那么透明,对于开发来说,不了解程序在服务器上运行的情况,对于运维来说程序就是一个黑盒子,无法对程序内部进行监控,出现问题只能重启或者版本回滚。当采用DevOps时,信息变得透明,通过日志和工具,可以更直观的看到开发到部署需要的时间,哪个环节薄弱需要改进,当前服务运行情况如何,每分钟访问数多少,API出错率多少,当前用户数多少,有多少新增用户?这些数据,可以很好的帮助运维预警,帮助开发更好的优化程序,还可以帮助业务团队更好地了解服务的运营情况。

    3.培养跨职能协作的文化

    DevOps的核心文化就是不同职能工种之间的紧密协作的文化,不仅仅限于开发和测试之间,如果你的团队真正地实践了DevOps的工作方式,就会积极拥抱这种跨职能协作的文化,在日常工作中包容错误、对事不对人,能对项目的开发流程持续改进,鼓励创新。

    DevOps的基本原则:自动化、信息透明可测量、构建协作文化,这意味着:

    你需要去构建自动化部署的系统,从构建、测试到部署实现高度的自动化建立数据监控的系统,让信息透明可测量最后要形成跨职能协作的文化

     

    DevOps工程师到底要做什么事情?

        首先,DevOps工程师要帮助团队建立基于持续集成和持续交付工作流程。

        这套工作流程是业界公认的好的实践,但是很多中小团队普及率还不高,主要的难点之一就是搭建比较复杂,还可能涉及二次开发;另一个就是不知道怎么建立这样的流程。

        其次,要建立一套基于日志的监控报警的系统,以及故障响应的流程。

        对于线上系统,应急响应非常重要,要在故障发生后第一时间作出响应,及时恢复生产,避免更大损失,这同样离不开工具和流程的支持。我们需要能建立一套基于日志的监控报警系统,设置报警阈值,将应用程序还有运行环境的各项数据监控起来,发现异常及时触发报警,进入应急响应的流程。对于应急响应,我们首先要能第一时间通知最合适的人去处理,不如值班的开发人员,至于怎么恢复要有计划,最后还需要对故障进行复盘总结,避免再次发生。

        然后,要建构基于云计算和虚拟化技术的基础设施。

        并非每一个软件项目都是基于云计算或虚拟化技术来搭建的,但云计算和虚拟化技术方面的计数其实是横跨开发和运维的,这就需要有人同时了解软件开发和云计算或虚拟化技术,或者一起协作,才能搭建出真正适合云计算或虚拟化技术的架构。

        最后,要形成DevOps文化。

        DevOps最核心的本质就是工作方式和协作的文化,多沟通、互相学习、出现问题不推诿、不指责,而是分析原因,共同承担责任,找出改进的方案。

    总结

        DevOps是一种文化,是建立一种相互合作的工作方式,总结起来如下几点可以帮助团队实践DevOps的工作方式:

    建立1.基于持续集成和持续交付的工作流程建立基于日志的监控报警的系统,以及故障响应的流程构建基于云计算和虚拟化技术的基础设施形成DevOps的文化
    最新回复(0)