Wiki的解释:
DevOps(Development和Operations的混成词)是一种重视"软件开发人员(Dev)"和"IT运维技术人员(Ops)"之间沟通合作的文化、运动或惯例。
通过自动化"软件交付"和"架构变更"的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
DevOps经常被描述为"开发团队与运维团队之间更具协作性、更高效的关系"。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。
个人理解
开发角度:从事软件行业,自动化流程才应该是软件的归宿,编写代码的过程本身就是为了让业务自动化,让业务人员不受技术的阻隔,在页面上"点点点"即可,实现他所需要的业务需求。
代码本来就是内部的东西,包装成产品卖给不懂技术的人员,但是编写代码的过程中,有很多自动又非自动的流程,比如常见的低代码平台,为了写代码让更多人不写代码来实现更多人的自动化,当然由于需求更多是定制化的,我们只有在完善了代码->中间流程->系统,这中间流程的自动化,才能解放开发者的双手,让写代码成为一种享受;
最终达到一种形态:自动化测试、自动化部署、自动化交付,减少编写代码后,搭建测试环境、提交代码分支、测试、上线服务器、提交容器等频繁操作的流程的手工操作问题;
现在软件开发流程的发展,DevOps越来越成为趋势,也由于容器化的使用,部署流程的复杂度,让CI/CD也不可或缺。
DevOps的职责,更多是运维的职责,减少开发人员的后顾之忧,负责公司DevOps平台架构建设,搭建合理高效的软件开发过程管理流程,自动化能力建设。
推送DevOps平台在业务组有效落地,持续提升研发效率和质量,熟练使用流程编排引擎,不断完善CI/CD流程,并促进实现运维自动化。
DevOps涉及很多层面,代码管理(Gitlab)、配置管理(Ansible)、漏洞检测、自动化测试(JMeter、Selenium、JUnit)、CI/CD(Jenkins)、自动化监控(Grafana)、自动化运维、协作(JIRA)、容器化部署(Docker、k8s)等。
DevOps 工具链包括软件编码、构建、测试、打包、发布、配置、基础设施自动化和监控。
目前使用自动化流程:
代码仓库Git -> Gitlab代码管理系统 -> Jenkins的使用(CI/CD) -> 正式/测试服务器(测试服前端对应的上传小工具) -> 堡垒机Jumpserver(服务端人员使用)
个人理解:DevOps准确的说是一整套解决方案,以上使用到的部分工具,只是不断地完善这一套流程,让devops更加智能化,完全自动化需要一个长期的过程,不断在业务的升级中完善。