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