随着软件发布迭代的频率愈来愈高,传统的「瀑布型」(开发—测试—发布)模式已经不能知足快速交付的需求。2009 年左右 DevOps 应运而生,开发运维一体化,经过自动化工具与流程让整个软件开发构建、测试、发布更加快捷、频繁、高效和可靠。docker
本系列将详细讲解Devops落地细节。将构建整个持续集成与交付的一整套体系与流程。对于将来要开篇的系列博文列表以下:shell
【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/ (欢迎转发、请注明出处!)