【DevOps】团队敏捷开发系列--开山篇

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

image.png

本系列教程目录

本系列将详细讲解Devops落地细节。将构建整个持续集成与交付的一整套体系与流程。对于将来要开篇的系列博文列表以下:shell

【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等工具,能够快速实现每个环节的发布。
image.png

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/ (欢迎转发、请注明出处!)

相关文章
相关标签/搜索