【DevOps】团队敏捷开发系列--开山篇
随着软件发布迭代的频率越来越高,传统的「瀑布型」(开发—测试—发布)模式已经不能满足快速交付的需求。2009 年左右 DevOps 应运而生,开发运维一体化,通过自动化工具与流程让整个软件开发构建、测试、发布更加快捷、频繁、高效和可靠。

本系列教程目录
本系列将详细讲解Devops落地细节。将构建整个持续集成与交付的一整套体系与流程。对于未来要开篇的系列博文列表如下:
【DevOps】团队敏捷开发系列(一)--开山篇
【DevOps】团队敏捷开发系列(二)--版本控制之道Git
【DevOps】团队敏捷开发系列(三)--代码管理之道Gitlab
【DevOps】团队敏捷开发系列(四)--前后端分离契机Swagger
【DevOps】团队敏捷开发系列(五)--代码编译MAVEN
【DevOps】团队敏捷开发系列(六)--自动化CI工具Jenkins
【DevOps】团队敏捷开发系列(七)--自动化流程编排
【DevOps】团队敏捷开发系列(八)--自动化单元测试Junit
【DevOps】团队敏捷开发系列(九)--自动化性能压测Jmater
【DevOps】团队敏捷开发系列(十)--持续部署流程编排
【DevOps】团队敏捷开发系列(番外篇)--Linux常用命令
相关概念解释
DevOps 概念
Ops"是一个总括术语,泛指系统工程师、系统管理员、操作人员,发布工程师、DBA、网络工程师、安全专家和各种其他分支和头衔。"Dev"是开发人员的简称,但真正在实践中意味着更广泛的"参与开发的产品"的所有人,可包括产品,质量保证,和其他种类的学科。
DevOps 发展
DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。 从2009年起,相关的工作组、专业组织和博客快速涌现。
自动化概念
自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人的直接参与下,按照人的要求,经过自动检测、信息处理、分析判断、操纵控制,实现预期的目标的过程。自动化技术广泛用于工业、农业、军事、科学研究、交通运输、商业、医疗、服务和家庭等方面。采用自动化技术不仅可以把人从繁重的体力劳动、部分脑力劳动以及恶劣、危险的工作环境中解放出来,而且能扩展人的器官功能,极大地提高劳动生产率,增强人类认识世界和改造世界的能力。因此,自动化是工业、农业、国防和科学技术现代化的重要条件和显著标志。
DevOps自动化
全面自动化 —— 部署、 升级、 扩展、 维护、 数据、 测试、 监测、 安全和策略管理。在自动化方面投入巨资,目标是100%的自动化,不考虑低于90%的可能性。但是,全面自动化也可能会引起自动化泛滥。集中审查和调整可以控制Chef或Puppet脚本库的无序增长。
DevOps战略必须获取本组织自顶向下的全面支持。整个行政领导团队 ——不只是首席信息官 ——应知道它为什么重要和怎样使它取得成功。
为什么DevOps
为什么我们采用DevOps,首先来看一下传统的开发运维模式。
传统开发模式
首先,开发人员开发完毕,并进行简单自测,和 手动 功能测试。
其次,开发人员利用IDE 手动 打包。
然后,将构建后的文件 手动 复制到公网服务器指定目录。
最后,启动程序并进行手工测试。
很明显,在这个过程中,有太多重复性的东西,会严重影响团队效率。
自动化方案
我们可以简单的来将我们的系统优化,最终形成强大的自动化敏捷体系。
自动化单元测试
我们可以通过一些自动化平台例如jenkins 进行自动化单元测试的集成。可以很高效的对整个开发进行系统的单元测试,简化测试流程,提升测试效率
自动化打包构建
通过一些列的代码与版本控制管理工具,例如Git与Gitlab可以非常有效的管理代码、版本、分支、标签等等。当然不仅于此,还有很多比较优秀的工具供我们使用。但是目前市场最流行的当属Git与Gitlab体系。
自动化发布
针对于后端服务用Java开发的应用程序,我们大可以使用MAVEN或者Gradle进行统一的依赖管理及代码编译打包控制。可以通过一些列Wiki进行配置触发器,集成到jenkins等工具上,然后进行自动化的远程节点打包。当然可以在jenkins建立多个节点去持续多点出发集成。
自动化部署
通过强大的shell命令,让我们可以在每个服务器、每一个环境当中,自由穿梭。对于自动化部署,需要按照实际需求,编写不同的shell脚本,然后将相关流程进行配置,结合jenkins等工具,可以快速实现每一个环节的发布。

DevOps团队需要做什么
DevOps团队执行各种任务, 如:
1. 新虚拟服务器的配置
2. 配置网络设备
3. 应用程序部署
4. 收集和聚合的日志
5. 性能监视服务
6. 报警和自动修复的问题
7. 服务器和服务可用性监控
DevOps团队工具
| 工具名称 | 工具用途 |
|---|---|
| Docker | 虚拟化容器技术,快速构建独立隔离服务 |
| Jenkins | 自动化平台,可以配置自动化测试与持续部署 |
| New Relic | 应用性能监测 |
| Ansible | 自动化(配置管理工具)平台,持续集成与编排 |
| Kubernetes | 开源的docker编排工具,可以发布与回滚 |
| JMeter | 基于Java的压力测试工具。用于对软件做压力测试 |
还有很多工具可以使用,这个具体我们后续慢慢讲来。
番外篇
除了一整套DevOps的体系,我们会在整个系统当中,穿插讲解Docker容器的使用。对于我们很多时候遇到的依赖或者安装流程复杂的问题,都可以容器的方式快速解决,并且可以快速启动或销毁多个服务。
未尽之处将会在系列博文中详细说道。本文只是对系列博文的概要说明,本文也参考了互联网很多资料整理所得。
源码
本文出处:http://www.hanyahong.com/
(欢迎转发、请注明出处!)
【DevOps】团队敏捷开发系列--开山篇的更多相关文章
- 【转载】Android Metro风格的Launcher开发系列第二篇
前言: 各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客Android Metro风格的Launcher开发系列第一篇写了如 ...
- DEVOPS 运维开发系列
DEVOPS 运维开发系列四:ITIL事态管理流程.事态监控系统设计以及基于Devops的效率提升实践 - watermelonbig的专栏 - CSDN博客https://blog.csdn.net ...
- 敏捷开发系列之旅 第二站(走近XP极限编程)
http://blog.csdn.net/happylee6688/article/details/21551065 上篇文章,我们探讨了什么是敏捷开发,以及敏捷开发的方法学.在这篇文章中,我们将继续 ...
- [高并发]Java高并发编程系列开山篇--线程实现
Java是最早开始有并发的语言之一,再过去传统多任务的模式下,人们发现很难解决一些更为复杂的问题,这个时候我们就有了并发. 引用 多线程比多任务更加有挑战.多线程是在同一个程序内部并行执行,因此会对相 ...
- 微信小程序购物商城系统开发系列-工具篇
微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统.新的生态,未来大部分应用场景都将 ...
- DevOps之敏捷开发
初步了解一下敏捷开发及其流程 1 为什么要敏捷开发? 敏捷开发描述了一套软件开发的价值和原则,在这些开发中,需求和解决方案皆通过自组织跨功能团队达成. 1.1 背景与动机 当需求的不明确性和工程实现的 ...
- [转载] Android Metro风格的Launcher开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用.但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的 ...
- chromium浏览器开发系列第二篇:如何编译最新chromium源码
说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 1. ...
- Android Metro风格的Launcher开发系列第一篇
前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用.但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的 ...
随机推荐
- windows 上rsync客户端使用方法
1.1 获取 windows上实现rsync的软件(cwRsync) cwRsync是Windows 客户端GUI的一个包含Rsync的包装.您可以使用cwRsync快速远程文件备份和同步. 1.1. ...
- 使用Apache Commons Email 发生邮件
Apache Commons Email的Maven依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-e ...
- 提取URL的搜索字符串中的参数
function urlArgs(){ var args = {}; var query = location.search.substring(1); if(query){ if(query.ind ...
- 使用spring框架中的组件发送邮件
首先进入自己的QQ邮箱,在设置中修改账户信息 然后来至底部 点击开启,再用手机发送对应信息到指定号码,然后点击我已发送 获取授权码 注意提示: 到这里,相信你已经开通了SMTP服务,这样就可以在 ...
- Red Hat 7.0 DNS服务配置笔记
先挂载镜像,然后配置yum,然后安装yum install -y bind 配置静态 IP.DNS就是他本身的IP地址. 修改DNS的配置文件,在后面加入区域配置信息.vim /etc/named.c ...
- Struts2开发文档
struts2配置 struts2核心配置文件约束 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts ...
- SQLServer2008R2 发布订阅及相关问题解决办法
前言: 前两天接到领导的任务,将一个系统A的客户数据同步到另一个系统B中,以后客户录入入口只有A系统,B系统不提供录入入口,因为各种原因不能使用接口方式A系统和B系统直接交互同步,只能通过数据库重A库 ...
- C#利用UdpClient发送广播消息
首先写个接受消息的客户端.这里偷了点懒,new UdpClient(11000)就是用Udp方式侦听11000端口,侦听任何发送到11000端口的消息都会接收到. 代码 : ); Byte[] sen ...
- 件测试博客日记Day03-11.17日 —— 赵天宇 —— 禅道的使用和配置详细版
说在维基百科先查找关于禅道相关知识,发现有关于禅道这个项目管理软件的详细介绍,然后将相关的介绍进行整理写入文档,在禅道的介绍中也有下载地址并进行安装. (1)软件的基本情况 a.中文名称:禅道项目管理 ...
- JVM菜鸟进阶高手之路十四:分析篇
转载请注明原创出处,谢谢! 题目回顾 JVM菜鸟进阶高手之路十三,问题现象就是相同的代码,jvm参数不一样,表现的现象不一样. private static final int _1MB = 1024 ...