• DevOps


    1 - CI与CD的联系与区别

    持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)的过程,其实就是一个软件开发优化的过程。

    • 统一流程:自动化地触发编译、集成、测试、交付和部署
    • 保证集成的有序性、可靠性,减少版本发布的不合规性,避免手工打包、测试不充分等
    • 版本可控,问题可追溯:可以回溯到具体版本

    三者有着不同的目的

    • 持续集成的目的是尽早发现问题
    • 持续交付的目的是实现快速发布
    • 持续部署的目的是在生产环境中进行发布,虽然对发布时间没有明确要求,但要考虑随时发布的情况,确保服务在发布期间不会中断

    而且,三者有着不同的软件自动化交付周期和作用:

    • 持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
    • 持续交付建立在高水平自动化持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的类生产环境中,进行更多的自动化测试。
    • 持续部署是指当交付的代码通过评审之后,自动部署到生产环境中,可以相对独立地部署新的功能,并能快速地收集真实用户的反馈。

    由此可见,各种持续方法并不是完全独立地工作,只是对持续开发服务或持续改善服务所需的步骤进行了区分。

    2 - 为什么要构建CI&CD平台?

    利用开源工具和技术可以搭建一个相对完善的CI&CD体系,能够应对大规模软件开发所面对的交付问题。

    • 更新缓慢:代码改动需要很长才能部署
    • 包管理混乱:依赖复杂、版本混乱
    • 安全性低:软件包容易被篡改
    • 资源利用不充分:人工分配方式下,部分硬件资源无法被有效利用
    • IP和端口紧张:被长时间的固定占用,导致不够用
    • 维护成本高:复杂的工具组合和框架,导致难以有效维护
    • 服务难伸缩:无法根据实际服务需求快速扩充和缩小服务规模

    3 - CI&CD工具栈

    在实施DevOps过程中,构建自动化、流程化、智能化的CI&CD,是必不可少的重要事项和核心部分。
    CICD也是一个宽泛的的技术栈,包含众多的工具与方法,主要包括如下环节和内容

    • 源代码管理:版本管理(GitLab)、代码扫描(Sonar)、代码审核(Gerrit)等
    • 集成部署:编译打包(Maven)、流水线(Jenkins)、容器化部署(Docker)等
    • 自动化测试:单元测试(Junit/PyUnit)、测试框架(Robotframe)、接口测试(RESTful)等
    • 生产发布:镜像仓库、镜像管理、网络管理(VLAN)、持久化方案、服务发现、服务编排(Kubernetes)等
    • 运维与监控:配置(Ansible)、监控(Zabbix)、日志(ELK)等
      在实现CICD的过程中,不仅要理解理论,更要围绕问题讲思路、讲办法,讲实际行动 ,也就是要掌握原理、要点和操作。

    4 - CI&CD所需要具备的要素

    • 全面的自动化测试:构建实用的自动化测试流程和选择合适的工具
    • 灵活的基础设施。容器,虚拟机、云平台等
    • 版本控制工具与代码仓库
    • 自动化的构建和软件发布流程的工具
    • 反馈和分析机制:快速地反馈结果到相关人员,并迅速分析

    5 - CI&CD的衡量指标

    • 代码发布频率与周期
    • 代码从提交到发布的速度
    • 故障变更率
    • 事故恢复时间
    • 等等

    6 - CI&CD实施云平台化

    容器技术能够让应用一次构建,到处运行(物理机、虚拟机、公有云、私有云、各类型系统等),加快了开发和构建,实现了快速交付和部署,同时还在系统操作层面提供资源隔离服务。
    因此,CI&CD的虚拟化、容器化、云平台化是大规模部署最适合的途径,也是企业提升生产力的合适选择。

    针对于大多数中小型企业来说,可能没有资源或技术储备去构建一个私有化的云平台,但可以选择在公有云上实现CI&CD。
    当前主流云平台都提供了从代码库下拉代码、编译打包、单元测试、镜像制作、容器发布的功能,基本上具备了完整的持续集成、持续发布和持续部署的服务能力。

    7- CI&CD与DevOps的关系

    DevOps是一套工具集合、一组过程与方法、一种组织形式与文化。
    DevOps工具和方法的实践与落地,具体的可见的结果就是构建一套高效可用的CI&CD平台。
    简单的来说,在应用CI&CD后,再加上Web版本的门户,集中的账户管理系统以及运维监控体系,即可打造一个基础的自动化DevOps平台。

  • 相关阅读:
    【JS】事件传播
    【JS】鼠标跟随
    【JS】使用JS实现回到顶部按钮功能
    【JS】DOM获取元素方法
    【JS】DOM操作元素
    【JS】实现全选功能
    【JS】定时器的开启与关闭
    【JS】动态渲染页面
    【JS】标签页切换
    Elasticsearch(ES)简介
  • 原文地址:https://www.cnblogs.com/anliven/p/6376257.html
Copyright © 2020-2023  润新知