Skip to main content

moregeek program

ci/cd和 devops还在傻傻分不清吗?今日一文让你通透_博学谷狂野架构师的博客-多极客编程

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就是空中楼阁。





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



©著作权归作者所有:来自51CTO博客作者博学谷狂野架构师的原创作品,请联系作者获取转载授权,否则将追究法律责任

[spring framework]第三方资源配置管理_wx62ecbc3bcee87的博客-多极客编程

文章目录​​第三方资源配置管理​​​​加载properties文件​​​​基本步骤​​​​注意事项​​第三方资源配置管理前面我们IOC容器中装的都是我们自己写的类,现在我们尝试去管理第三方jar包中的类。此处我们就拿alibaba的druid来做例子:首先我们先引入它的依赖坐标(在项目的配置pom文件中):<!-- https://mvnrepository.com/artifact/com

javascript之面向对象_紫轩蝶泪的博客-多极客编程

📦个人主页:紫轩蝶泪 🏆简介:一个大二的科班出身的,主要研究Java后端开发 ⏰座右铭:成功之前我们要做应该做的事情,成功之后才能做我们喜欢的事 💕 过客的你,可以给博主留下一个小小的关注吗?这是给博主最大的支持。以后博主会更新大量的优质的作品!!!! 1、JavaScript面向对象 1.1、面向对象介绍 ​ 在 Java 中我们学习过面向对象,核心思想是万物皆对象。在 JavaScrip

adobe premiere elements(pre)2022软件安装包下载及安装教程_乐乐软件管家的博客-多极客编程

Adobe Premiere Elements(PRE)2022软件简介:Adobe Premiere Elements 2022使用可帮助用户加快视频工作流程,提供视频的处理和音频的整理等功能和操作,提供丰富的自动生成和自动创作,让用户能够快速的进行自动化制作,告别手动,更轻松,而且还可以访问幻灯片以及照片和视频拼贴画,以突出您难忘的时刻。允许自由编辑和保存自动创作以及分享它们,方便您后续再次使

多维分析利器druid_枫叶飘飘的博客-多极客编程

Druid是一个用于大数据实时查询与分析的分布式列式数据存储系统。为了应对海量数据的实时查询和多维分析,Druid应运而生。 Druid诞生于MetaMarkets公司,而互联网广告分析正是MetaMarkets最重要的业务之一,基于同样的业务需求背景,微博广告也开始尝试将 Druid 作为监控平台后端数据引擎的技术方案之一。一、Druid特性Druid的特性如下: 支持部分嵌套数据结构的列式存储

安装oracle 11gr2(x64) (静默安装)_雍州无名的博客-多极客编程

安装前准备:1.内存(RAM)的最少 2GB 及以上2.虚拟内存 swap 建议:内存为 1GB~2GB 时建议swap大小为内存大小的 1.5 倍;内存为 2GB~16GB 时建议swap大小为内存的大小;内存超过 16GB 时swap保持16GB3.要求临时文件目录,如 /tmp 的磁盘空间至少 1GB4.由于是静默安装,所以不需要图形界面5.修改系统时间为北京时间 cp /usr/shar

数据中心监控工作原理_枫叶飘飘的博客-多极客编程

数据中心各类监控系统,主体模块一般可分为:代理层、汇聚层、核心层、展现层。以目前市面上比较流行的日志监控解决方案ELK(Elasticsearch+Logstash+Kibana)为例,其中,Logstash是工作于代理层和汇聚层的用于日志数据收集的代理(Agent);Elasticsearch是工作于核心层的开源的分布式搜索引擎,提供日志数据检索、分析、存储;Kibana是工作于展现层的开源免费

qtableview相关操作_五个板栗的博客-多极客编程

添加表头//需要先创建一个模型QStandardItemModel *theModel = new QStandardItemModel();//设置列数theModel.setColumnCount(3);//设置表头信息theModel->setHeaderData(0,Qt::Horizontal,"序号");theModel->setHeaderData(1,Qt::Horiz

低代码实战 | 1分钟,从0到1创建一个简单的微应用_mb625d3d7a6c262的博客-多极客编程

首先,我们来聊聊什么是低代码?⤵低代码(Low-Code)从字面意思,低就是少,在一般标准或平均程度之下,那低代码自然就是少代码,也就是说不需要付出太多的代码成本。如果想要从0实现一个可以在Web中访问的网页,那最好要掌握的技术必然是html、Css、JavaScript,大部分情况下仅仅有了以上三种技术的加持是不够,为了让所生产出来的Web页面有着高维护和高灵活性,一般要根据网页中的功能进行模块

java -jar配置系统服务_wemux的博客-多极客编程

#nohup java -jar test-project.jar &项目环境[root@appdockerenv project]# pwd/project[root@appdockerenv project]# ll-rw-r--r--. 1 root root 1112 9月 3 10:31 application.yml-rw-r--r--. 1 root root

多维分析利器druid_枫叶飘飘的博客-多极客编程

Druid是一个用于大数据实时查询与分析的分布式列式数据存储系统。为了应对海量数据的实时查询和多维分析,Druid应运而生。 Druid诞生于MetaMarkets公司,而互联网广告分析正是MetaMarkets最重要的业务之一,基于同样的业务需求背景,微博广告也开始尝试将 Druid 作为监控平台后端数据引擎的技术方案之一。一、Druid特性Druid的特性如下: 支持部分嵌套数据结构的列式存储

数据中心监控工作原理_枫叶飘飘的博客-多极客编程

数据中心各类监控系统,主体模块一般可分为:代理层、汇聚层、核心层、展现层。以目前市面上比较流行的日志监控解决方案ELK(Elasticsearch+Logstash+Kibana)为例,其中,Logstash是工作于代理层和汇聚层的用于日志数据收集的代理(Agent);Elasticsearch是工作于核心层的开源的分布式搜索引擎,提供日志数据检索、分析、存储;Kibana是工作于展现层的开源免费

云计算架构设计原则_枫叶飘飘的博客-多极客编程

基于云计算进行架构设计,所有的技术解决方案都应遵循一定的原则,这也是架构设计中要追求的目标。这6大原则,包括合理部署、业务持续、弹性扩展、性能效率、安全合规、持续运营。这6大原则代表了架构设计中需要考虑的不同角度,只有同时遵循这些原则才能设计出完善的架构方案,但在实际情况中,并不需要在所有架构设计中把所有设计模式都融入进去,构建繁杂的架构方案。1、合理部署业务系统在公有云上的部署包括使用虚拟机形式