作者:admin

devops

了解devops

DevOps 是指对企业文化、业务自动化和平台设计等方面进行全方位变革,从而实现迅捷、优质的服务交付,提升企业响应能力和价值。只有通过快速迭代的 IT 服务交付,这一切才能实现。DevOps 可以将传统应用和最新的云原生应用与基础架构彼此相连。

DevOps是什么


从字面上来看,”DevOps”一词是由英文 Development(开发)和 Operations (运维)组合而成,但它所代表的理念和实践要比这广阔的多。DevOps 涵盖了安全、协作方式、数据分析等许多方面。但它是什么呢?

DevOps 强调通过一系列手段来实现既快又稳的工作流程,使每个想法(比如一个新的软件功能,一个功能增强请求或者一个 bug 修复)在从开发到生产环境部署的整个流程中,都能不断地为用户带来价值。这种方式需要开发团队和运维团队密切交流、高效协作并且彼此体谅。此外,DevOps 还要能够方便扩展,灵活部署。有了 DevOps,需求最迫切的工作就能通过自助服务和自动化得到解决;通常在标准开发环境编写代码的开发人员也可与 IT 运维人员紧密合作,加速软件的构建、测试和发布,同时保障开发成果的稳定可靠

当然,这意味着更改代码会更频繁,基础架构的使用也会更灵活。所以传统的管理策略无法满足这种需求。需要有灵活快速的cicd才能解决。

容器与 DevOps

DevOps 可以加快一个想法从提出到部署的整个过程。DevOps 的核心在于,在应用的整个生命周期中,都要确保日常运维任务自动化和环境的标准化。容器可以提供标准化的环境,你需要一个平台来管理它们,同时提供内置的自动化功能并支持各种基础架构。raging-hub就是一个支持DevOps的企业就绪型Kubernetes平台。

devOps优点

1、标准化的流程
如果需要做到devops,重要的前提是把项目和代码的流程标准化,各角色如何配合,各项目阶段如何做到准入。同时需要把人为的执行流程,使用工具管理起来。既保证了流程标准化,也同时对于项目的数据做到集中共享。
2、增加测试广度宽度
devops是一种框架,需要安装各个组件才能发挥最大作用。从项目开始,devops就开始保障项目质量。从深度上讲,单测、模块自动化、集成自动化、系统自动化,多层覆盖;从广度上讲,功能测试、性能测试、兼容性测试、静(动)态代码扫描,多维度覆盖。这些测试组件,有的叫测试服务化。在配合项目流程场景下,分别从代码开发、提测准入、功能回归、全链路压测、线上回归等等,对项目提供质量保障。
3、提升整体质量
没有devops时,测试服务(工具/平台)是游离在项目之外的,即使有工具平台,但缺少完善的使用场景,对于不同的业务,不同的端,不同的测试同学,所使用的工具平台是不一样的,同时对测试场景的制定,也需要线下制定,然后手动,非常费时成本较高。而devops是无需人力干预,从项目开始就在保障了,整个流程中,都是自动的,且在每个环节都有标准,保证质量的持续提升。此外,在不停地持续构建部署中,做到测试前置,在交付给QA的代码,是保证高质量的。

参考链接

CICD

  • cicd简介
  • 持续集成(ci)
  • 持续交付(cd)
  • 持续部署(cd)
  • cicd优点

一、cicd简介

持续集成:指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误,使团队更加紧密结合,更好地协作。

持续交付:在持续集成的基础上,最小化部署或释放过程中固有的摩擦。它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下),将集成后的代码部署到更贴近真实运行环境的「类生产环境」中。

持续部署:当交付的代码通过评审之后,自动部署到生产环境中。

二、持续集成(ci)

通过持续集成,开发人员能够频繁将其代码集成到公共代码仓库中。开开发人员能够在任何时候多次向仓库提交作品,而不是独立地开发每个功能模块并在开发周期结束时一一提交。
这里的一个重要想法是让开发人员更快,更频繁地做到这一点,从而降低集成成本。实际情况中,开发人员在集成时经常会发现新代码和已有代码存在冲突。如果集成较早并更加频繁,那么冲突将更容易解决且执行成本更低。当然,还有一些权衡。此流程变更不提供任何额外的质量保证。实际上,许多组织发现这种集成变得更加昂贵,因为它们依赖于手动过程来确保新代码不会引入新的错误,并且不会破坏现有代码。为了减少集成任务期间的摩擦,持续集成依赖于测试套件和自动化测试执行。
CI 的目标是将集成简化成一个简单、易于重复的日常开发任务,这将有助于降低总体构建成本,并在周期的早期发现缺陷。要想有效地使用 CI 必须转变开发团队的习惯,要鼓励频繁迭代构建,并且在发现 bug 的早期积极解决。

三、持续交付(cd)

实际上是 CI 的扩展,其中软件交付流程进一步自动化,以便随时轻松地部署到生成环境中。CD 集中依赖于部署流水线,团队通过流水线自动化测试和部署过程。此流水线是一个自动化系统,可以针对构建执行一组渐进的测试套件。CD 具有高度的自动化,并且在一些云计算环境中也易于配置。在流水线的每个阶段,如果构建无法通过关键测试会向团队发出警报。否则,将继续进入下一个测试,并在连续通过测试后自动进入下一个阶段。流水线的最后一个部分会将构建部署到和生产环境等效的环境中。这是一个整体的过程,因为构建、部署和环境都是一起执行和测试的,它能让构建在实际的生产环境可部署和可验证。

四、持续部署(cd)

持续部署扩展了持续交付,以便软件构建,在通过所有测试时自动部署。在这样的流程中,不需要人为决定何时及如何投入生产环境。CI/CD 系统的最后一步将在构建后的组件/包退出流水线时自动部署。此类自动部署可以配置为快速向客户分发组件、功能模块或修复补丁,并准确说明当前提供的内容。

五、cicd优点

代码的提交直接触发:消除等待时间,快速反馈

每个变化对应一个交付管道:使问题定位和调试变得简单

全开发流程高效自动化:稳定,快速,交付结果可预测

持续进行自动化回归测试:提升交付质量

设施共享并按需提供:资源利用最大化