DevOps概述
Devops概念
转载自 devops实践-开篇感想
DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。[1]外文名DevOps全称 Development和Operations的组合优点尽可能地自动化用途协作与整合等。
Devops工具
长话短说,这些写这个专题主要是在实践两个字,在实践总总结,然后再总结中优化自己的实践方案。我们先来来看看devops工具链吧。上图。
看到这张图,我第一感觉就想骂娘。太TM多了,而且很多很多平常都没有听,更别说接触过了。不过还好的是,我们只研究开源工具,一方面是要进行devops实践,另一方面也是想提高自己的能力,通过阅读源码,去研究开源工具的系统架构,以及编程思想,日积月累后,自己也会有一个质的提高。而且收费软件可不是那么便宜一年的license可不是普通企业能买得起的。
选择工具
首先来回顾一下整个开发流程:
需求-开发-测试-发布-部署-监控运维
项目管理(需求&BUG):redmine
代码托管:gerrit(gitlab)
持续集成:jenkins
测试:单元测试:maven等,Jmeter,或者是自己编写脚本
代码扫描:sonar
制品库:JFrog,或者其他工具,这个我也没有想好JFrog收费版可以支持docker,maven, npm等等等,多得不行,制品这方面目前没有什么好的开源的软件。
持续部署:K8S
日志收集:ELK + KAFKA
监控显示:zabbix,grafana
其他工具:nginx, lvs,HA, redis,rabbitmq,ldap, ansible。
实践想法
认证:LDAP 发现好多的开源的工具都会选择ldap来做认证。OPENLDAP。
项目管理:redmine,开源,有丰富的插件,至少感觉好像还是挺火的。
代码托管:gerrit或者是gitlab吧,我这边我会选择gerrit
持续集成:jenkins, 可惜jenkins竟然不开源,不过插件丰富。
代码扫描:sonar
额说得有点重了。LDAP作为所有工具链的一个认证,这样用户信息就统一起来了。
来个场景吧.
1. BA接收到需求之后将其录入Redmine, 指定好开发人员。
2. 开发人员接收到任务之后,然后从gerrit拉取代码到本地,然后进行开发,开发完成后,将写好的代码弄成一个评审单上传到gerrit,并通知相关的评审人员进行评审。
3. 在你提交上去的那个刻,jenkins收到你创建评审单事件,然后开发触发构建的你配置的任务,先拉取你最新提交的代码,然后进行编译构建,扫描你的代码是否符合。代码符合之后,然后进行测试(在构建的时候会先进行单元测试),然后把构建好的包,在测试环境上进行部署,然后拉取自动测试脚本进行测试,测试没有问题之后。jenkins会对你本次的评审单进行打分。通过了就打2分,不过打-2分。这样就避免了浪费大家的时间,在打分通过了的情况下,评审人员才会去评审。
4. 评审人员到gerrit上进行评审,如果评审不合格,直接拒绝,开发人员重新进行开发。在提交然后再重复3步骤。如果评审通过,进行代码合入,然后再次触发jenkins的构建任务,不过这个任务是构建beta测试版本,构建到测试版本之后,然后发布到制品库中,然后通知测试人员可以进行测试了。然后这个时候将redmine的任务状态更改会开发完成。这个时候会通知测试人员可以进行测试了。
5.测试人员收到测试任务之后,从制品库中拉取beta包进行部署测试,这个部署测试环境,有了docker容器其实也是可以一键部署哦,然后再用自动化脚本进行测试,对于个别场景可以进行手工测试,如果有bug,测试人员在redmine进行录入,然后通知开发人员,这个时候流程又从1开始,直到这个bug测试通过了,然后redmine会更改bug状态。
6.如果测试人员测试通过了,然后又可以出发一次构建任务。将最新的代码构建成release版本发到制品库中或者是进行自动部署。而且现在有灰度发布,可以一点一点切流程到新的版本上,看一下运行情况,如果不行直接回退。
DevOps概述的更多相关文章
- 第一章 DevOps概述
什么是软件开发 软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程. 软件开发是一项包括需求捕捉,需求分析,实现和测试的系统工程 软件开发有哪些困难? 软件开发的本质困难 复杂性 不可见性 ...
- [转载]你所不了解的DevOps
DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...
- 从 DevOps 到 Serverless:通过“不用做”的方式解决“如何更高效做”的问题
作者 | 徐进茂(罗离) JAVA 开发工程师 导读:近年来,Serverless 一词越来越热,它已经逐渐成为了一种新型的软件设计架构.和 DevOps 概念提倡的是通过一系列工具和自动化的技术来 ...
- 云计算时代,你所不了解的 DevOps
在本文中,我们讨论如何快速地从更高的层面理解DevOps,介绍准备改变文化的最佳实践.我们将讨论DevOps的目标以及从组织管理层得到支持的方法,为DevOps的概念打下基础.我们将试着从根本上介绍使 ...
- Devops 导论
第一章 DevOps概述 第二章 个体软件过程 第三章 敏捷软件开发 第四章 软件架构演化 第五章 云原生与容器技术 第六章 XaaS和IT服务标准 第七章 DevOps工具链 --学习总结自< ...
- 基于Kubernetes 的Cloud Native 实战 培训课程安排
课程安排: 基于Kubernetes 的Cloud Native 实战 课程介绍: 云计算.虚拟化.容器微服务PaaS 技术已经广泛应用于新兴互联网企业(如电商平台.搜索引擎.社交平台网站.位置服务平 ...
- [转载]金融行业 DevOps 解决方案概述
2009 年 6 月份,John Allspaw 及 Paul Hammond 在速度大会 (Velocity) 上分享了在 Flickr 中如何通过加强 Dev(开发团队)和 Ops(运维团队)之间 ...
- devops工具链概述
1. devops工具链概述 1)devops工具篇 2) 持续集成 3) 持续交付 4) 持续部署 2. devops工具链概述
- 一,Devops核心要点及kubernetes的架构概述
目录 1,devops的简述及要点 2,kubernetes的简单介绍与组成 特性 集群构成 pod的基本概念 kubernetes网络 1,devops的简述及要点 DevOps,分层架构 ---& ...
随机推荐
- Django admin自定制功能
一:基础设置 1.应用注册 1)方式一 若要把app应用显示在后台管理中,需要在admin.py中注册.打开admin.py文件,如下代码: from django.contrib import ad ...
- 对称加密算法 ~ Des
一.对称加密 (Symmetric Key Encryption) 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret ...
- Zabbix-server 3.4 安装详细和修改web界面中文出现的乱码(一)
1. 老套路先来个Zabbix简介: Zabbix是一个企业级的.开源的.分布式的监控套件: Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送Email. ...
- 【重学计算机】操作系统D3章:存储管理
1. 存储管理的基本概念 逻辑地址:用户地址,从零开始编号 一维逻辑地址:(地址) 二维逻辑地址:(段号: 段内地址) 主存储器的复用方式 按分区:主存划分为多个固定/可变分区,一个程序占一个分区 按 ...
- 闲聊js中的apply、call和arguments
JavaScript提供了apply和call两种调用方式来确定函数中的this的指向,在现实编码中,我确实 很少接触到这两个方法.但很无奈,很多面试题都要考这两种方法,我又没怎么用到,所以我们先来 ...
- iftop命令使用范例
iftop 介绍 iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能.必须以root身份才能运行. 实例 默认是监控第一块网卡的流量 iftop 监控eth1 iftop - ...
- Jenkins忘记admin密码处理方法
1.先找到enkins/config.xml文件,并备份. 此文件位于Jenkins系统设置的主目录,根据自己的配置情况而定.我的位置如下 /data/temp/jenkins/config.xml2 ...
- 【Android】用Cubism 2制作自己的Live2D——官方App样例源码学习(1)!
前言- 上几篇文章,我们一个一个的研究了Cubism官方提供的Android使用Live2D的简单例子,但是依旧和大家平时见到的还是有很大差距的.在研究了代码差不多一周以后,我决定还是用文字的形式记录 ...
- Android之webview详解
文章大纲 一.webview基本介绍1.什么是webview2.为什么要使用webview3.webview基本操作 二.webview高级使用1.WebView状态2.资源加载3.WebView加载 ...
- linux用curl发送post请求
1.curl -X POST “http://XXXXXXX”这种请求方式参数直接写在URL里面的,而不是body