美文网首页DevOps
CI/CD和 DevOps还在傻傻分不清吗?今日一文让你通透

CI/CD和 DevOps还在傻傻分不清吗?今日一文让你通透

作者: 博学谷狂野架构师 | 来源:发表于2022-09-16 14:53 被阅读0次
    file

    基本概念

    持续集成

    (Continuous Intergration)

        持续集成的重点在于构建编译及测试,开发人员每天要提交很多次代码到分支,在分支合并到主干前,需要通过编译和测试识别出问题。持续集成的流程就是通过自动化的构建(主要是构建编译、自动化测试)来验证,从而尽早地发现集成错误。
    

    持续集成的核心意义:通过自动化测试尽早的发现代码的问题。

    file
    持续交付

    (Continuous Delivery):

        持续交付指的是将产品尽可能快的发布上线的过程。持续交付是在持续集成基础上的扩展,也就是说除了自动化编译、自动化测试,为了尽快上线我们还需要自动化发布流程,整个流程实现后,根据实际需要,可以周期性的进行产品上线发布,上线方式为人工点击部署实现快速上线。部署环境的先后部署顺序,一般在公司都是开发环境、测试环境、预发布环境(类生产环境)和正式生产环境,如果代码在预发布环境测试通过,那么就可通过手动的方式部署生产环境实现上线的目的。
    

    持续交付的核心意义:尽快的将最终的产品发布到线上环境,给用户使用。持续交付是每个企业追求的目标,我们常说的CI/CD里的CD一般指的就是持续交付。

    file
    持续部署

    (Continuous Deployment):

        持续部署就是在持续交付的基础上,将编译、测试、打包部署到生产环境的过程做成自动化。
    
        持续部署的核心意义:持续的将迭代的需求自动化的方式部署到生产环境。一般来说,非生产环境的持续部署基本都能实现。但生产环境的持续部署并不是每个企业都能做到,主要原因是受限于各种系统功能依赖、自动化测试不完善等因素,自动化一旦部署到生产,将可能造成严重生产事故。
    
    file

    说明:无论是持续集成、持续交付还是持续部署,如果要实现整个流程,基本上离不开CI服务器。

    持续集成

    特点
    • 快速定位错误,测试环节可以及时暴露问题;
    • 避免大幅度偏离主干,借助统一的代码库;
    • 减少不必要的成本投入,可以自动化解决的重复乏味的事情,没必要浪费人力和时间;
    工作流程
    file
    工作阶段

    持续集成工作流程大体包括这么几个阶段:

    • 初始化CI流程

      基本的CI流程的配置,比如脚本、定时任务等。

    • 拉取最新代码

      从源码仓库拉取最新代码到构建服务器磁盘上。

    • 构建

      一般源码仓库自包含构建,可通过配置的脚本触发执行构建。比如Java的构建一般基于Maven或Gradle。

    • 执行测试

      测试阶段一般包含单元测试和集成测试。Java中的单元测试常指JUnit。

    • 结果处理

      CI流程执行的最后结果要么是成功,要么是失败,结果需要通知给对应的人员,一般的通知方式有邮件、钉钉、短信。

    集成工具
    • Travis CI

    • Bamboo

    • TeamCity

    • CircleCI

    • Gitlab CI

    • Jenkins

    DevOps

    概念

    DevOps这个词,其实就是Development(开发)和Operation(运维)两个词的组合。

        DevOps 不是一项技术,也不是一套流程和方法论,更不是一套简单的工具产品。DevOps的维基百科定义是这样的:DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营(运维)和质量保证(QA)部门之间的沟通、协作与整合。
    
        通过实践 DevOps,可以将开发、测试、运维之间的工作串联起来,以持续构建、自动化测试、持续发布为目标,将所有流程全部自动化,最大化减少了重复性的人力投入。同时,基础环境的自动化构建也降低了由于人的原因带来的意外风险。下图为DevOps所包含的流程:
    
    file
        DevOps 这个词是Patrick Debois 于2009 年创造的。出生于比利时的Patrick 先生曾经是一名苦闷的IT 咨询师,饱受开发和运维相互割裂及伤害之苦。2009 年他参加了一个技术大会,在会上听了名为10+ Deploys Per Day: Dev and Ops Cooperation at Flickr 的演讲,深受启发,并创造了DevOps 这个词。
    
        目前,DevOps处于高速增长的阶段。尤其是在大企业中,DevOps受到了广泛的欢迎。越大的企业,越喜欢DevOps。包括Adobe、Amazon、Apple、Airbnb、Ebay、Etsy、Facebook、LinkedIn、Netflix、NASA、Starbucks、Walmart、Sony等公司,都在采用DevOps。
    
    工具链
        由于DevOps是一种跨职能的工作模式,因此实践过程需要使用不同的工具集(被称为 "工具链"),而不是单一的工具集。这些工具链应该符合以下一个或多个类别,这些类别反映了开发和交付过程中的关键环节:
    
    • 编码---代码开发和审查、源代码管理工具、代码合并

    • 构建---持续集成工具,构建状态

    • 测试---持续测试工具,提供快速、及时的业务风险反馈

    • 发布---变更管理、发布审批、发布自动化

    • 配置---基础设施配置和管理,基础设施作为代码工具的基础设施

    • 监控---应用性能监控、终端用户体验

    DevOps生态圈工具链图:


    file
    常用工具
        DevOps 需要要通过技术工具链完成持续集成、持续交付、用户反馈和系统优化的整合。工具链包括版本控制&协作开发工具、自动化构建和测试工具、持续集成&交付工具、部署工具、维护工具、监控,警告&分析工具等等。
    
    • 版本控制&协作开发:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
    • 自动化构建和测试:Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit
    • 持续集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
    • 容器平台:Docker、Rocket、Ubuntu(LXC)、第三方厂商如(AWS/阿里云)
    • 配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
    • 微服务平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere
    • 服务开通:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
    • 日志管理:Logstash、CollectD、StatsD
    • 监控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kiban
    DevOps的目标
    • 更快的上市时间

    • 提高部署频率

    • 更短的修复时间

    • 降低发布失败率

    • 更快的平均恢复时间

    总结来说DevOps的目标是最大限度地提高运营流程的可预测性、效率、安全性和可维护性。

    小结

    两者关系
    • 由DevOps的流程和工具链我们可以得知,DevOps 是持续集成思想的延伸

    • 持续集成/部署是 DevOps 的技术核心,在没有自动化测试、持续集成/部署之下,DevOps就是空中楼阁。

    本文由育博学谷狂野架构师发布
    如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力
    转载请注明出处!

    相关文章

      网友评论

        本文标题:CI/CD和 DevOps还在傻傻分不清吗?今日一文让你通透

        本文链接:https://www.haomeiwen.com/subject/vppjortx.html