DevOps到底是什么?

DevOps是什么?

其实DevOps是两个英文字的缩写,Development(开发)和Operations(运维),同时DevOps其实是一个文化和概念,并不是特定指某一个做法。

这个其实和敏捷(Agile)是一个概念,敏捷也是一个文化和概念。敏捷基本核心概念是把周期缩短,通过快速开发,通过失误提前发现问题,提前做调整,也就是Fail Fast的概念。

摘抄自网络的一句话,非常有代表意义,敏捷执行下来能够带来的一个好处

所有系统都有bug,但是当bug被修复的速度超过客户能够发现和反馈的时候,就不算是bug。
对DevOps来说,DevOps的核心理念是:

减少开发和运维之间的隔阂,让很基于敏捷的开发能够快速的上线并且整个流程非常流畅。

在这里插入图片描述
​DevOps是一个流畅的流程用白话一点来说,Dev代表着开发者,Ops代表着运维,代表开发结果上线。其实DevOps流行起来和敏捷开发有直接关系,我们常说敏捷对项目开发有多好,从项目管理来看如何执行,但是很少有人提到从工程师和实际开发的角度上面来说到底需要什么才能够支撑这种快速开发模式。

在比较严谨云环境发布过软件系统的人就知道,其实要更新一个软件版本,要经过很多流程,当遇到开发速度变快的时候,常常运维和开发可能脱节造成敏捷更本跑不动。所以,要跑好敏捷开发,没有DevOps基本上是不可能的。别说Ops了,如果你的Dev都被一些琐事浪费掉了时间(例如手动构建,手动测试等),那效率该有多低呢?

举个例子,在团队中开发的时候,常常遇到的事情是有些人commit 代码的时候忘记把一些程序上到版本控制中,结果另外一个工程师发现整个系统无法构建,而本来的开发者因为出差或者请假所以找不到的时候,那大家工作都会被耽误,这个还算小事,如果因此耽误到debug正式系统突发性问题的时候,麻烦就很大了。

结论,DevOps是技术上支撑敏捷开发可能性的环境。而要达到快,自动化是最为关键的地方,也是整个DevOps的核心。

DevOps主要关注的两个方面

关注组织架构

在这里插入图片描述
一致性理念,高效沟通,敏捷型、学习型团队
Ø统一思维、目标、技术栈及工具链
Ø协作机制和沟通机制
Ø响应变化的敏捷度
Ø软件架构设计能力
Ø快速试错,持续学习和创新

关注软件生命周期
在这里插入图片描述
高度自动化持续集成、持续部署和发布

Ø持续集成
Ø配置管理
Ø持续部署
Ø持续发布

DevOps中的构建和发布

DevOps中关于软件生命周期的东西,莫过于CI/CD(持续集成,持续发布),首先我们从DevOps这个单词说起。

DevOps中的Dev基本上有以下几个阶段
在这里插入图片描述
构建循环其实又对应到了几个不同的名词Continous Integration、Continous Delivery和Continous Deployment。

什么是Continuous Integration (CI)

作为开发人员,在开发的时候,最好是完成一个小的功能就要build一下,以校验有没有问题,越早发现问题,越容易处理。比较问题积累了一堆在解决的话,通常来说处理时间相对的短。当一个人开发的时候都有构建不成功的时候,合论一个团队多人开发呢。所以同样道理,越早将大家的代码一起构建,越早发现问题,越容易解决问题。CI讲的就是这个,如何越早和越快把大家的应用程序做构建,并执行测试以确保从最基本层面保证没有问题。

在这里插入图片描述

什么是Continuous Delivery(CD)

当程序构建没有问题,测试也没问题后,下一个步骤就是将其发布到线上。依照不同类型程序有不同上线方式,如果是微服务架构的,可能是发布docker容器,所以在这个阶段就是自动产生出对应的docker image 。如果是网站项目,可能就是发布tar包Java 程序,只需要将package提供给运维就可以快速上线了,所以CD主要指的是build package 的动作。

在这里插入图片描述
从整个阶段来说就是打包(build Package)

什么是Continouous Deployment(CD)

这个Continouous Deployment和Continous Delivery差异在于,Continous Delivery只产生出可用来上线的内容,传统上线或者更新还是要由人来操作的。Contiouous Deployment 则是连上线都自动化处理。比如以Docker image来说,就是自动把Docker image发布到容器服务里面,然后更改负载均衡的设置,让这个容器上线服务。到了这里,可以看到,整个过程变为,编译代码,测试代码,打包程序,发布程序的一条龙服务,开发完城后,可以一键完成上线。

希望大家对于DevOps 中的CI/CD有所了解。整个DevOps重点就是快,而要快就要能够重复执行,也就是达到自动化。

### 什么是 DevOpsDevOps 是一种综合性的方法论,融合了开发(Development)和运维(Operations)的实践,旨在通过自动化和协作来提升软件开发、测试、部署和运维的整体效率[^1]。其核心在于打破传统开发和运维团队之间的壁垒,实现更紧密的协作和更高效的流程集成。DevOps 通过采用现代工具链(如 CI/CD 流水线、自动化测试、基础设施即代码等)和文化变革,推动持续交付和快速迭代,从而缩短产品上市时间,并提升软件交付的质量和可靠性[^2]。 DevOps 的作用不仅体现在技术层面,还深刻影响了团队文化和组织结构。它鼓励团队以改进和学习为核心,推动从僵硬、顺序式开发向灵活、协作式方法的转变,从而更好地适应市场变化和客户需求。此外,DevOps 与敏捷方法结合使用,可以进一步提升组织的响应能力和创新能力,形成更高效的工作模式[^5]。 ### 什么是 SaaS? SaaS(Software as a Service,软件即服务)是一种基于云计算的服务模型,用户通过互联网按需访问和使用软件,而无需安装、维护或管理底层基础设施[^3]。SaaS 通常采用订阅制,由服务提供商负责软件的部署、更新和运维,用户只需通过浏览器即可访问。 SaaS 在软件交付中具有重要作用,尤其适用于那些希望专注于业务逻辑而非底层设施的企业。例如,CRM(客户关系管理)系统、ERP(企业资源规划)系统等通常以 SaaS 形式提供,这样可以降低 IT 成本、提升可扩展性,并加快业务上线速度[^3]。 ### DevOps 与 SaaS 的关系 尽管 DevOps 和 SaaS 属于不同范畴,但它们在现代软件开发和交付中密切相关。DevOps 提供了高效构建、测试和部署软件的方法,为 SaaS 应用的持续交付提供了技术基础。同时,SaaS 模式依赖于高度自动化的运维体系,而 DevOps 正是支撑这种运维模式的关键方法论。在 SaaS 服务中,服务提供商通常采用 DevOps 实践来确保高可用性、快速迭代和持续优化[^3]。 此外,站点可靠性工程(SRE)作为保障 SaaS 服务稳定性的关键技术,其核心正是 DevOps 范式的体现[^4]。 ### 示例代码:使用 DevOps 工具链部署 SaaS 应用 以下是一个使用 GitHub Actions 实现自动化部署到 AWS S3 的示例: ```yaml name: Deploy SaaS App to S3 on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Deploy to S3 run: | aws s3 sync ./dist s3://my-saas-app-bucket --delete ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值