DevOps

什么是DevOps

DevOps是Development和Operations的组合,是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。

可以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。

落实DevOps的指导思想

首先我们还是要回到什么是DevOps,如果大家忘记了可以回到之前再温故一下,包括我总结的DevOps公式。

其实DevOps核心思想就是:“快速交付价值,灵活响应变化”。其基本原则如下:

高效的协作和沟通;

自动化流程和工具;

快速敏捷的开发;

持续交付和部署;

不断学习和创新。

实施DevOps的具体方法

  • 建立快速敏捷团队

  • 实现自动化的流程

技术栈

为大家介绍下目前常见的一些开源DevOps技术工具,大家可以根据自己的需求选择使用,当然也可以使用像VSTS(Visual Studio Team Services)这样的集成团队环境。

敏捷管理工具

  • Trello

  • Teambition

  • Worktile

  • Tower

产品&质量管理

  • confluence

  • 禅道

  • Jira

  • Bugzila

代码仓库管理

  • Git

  • Gitlab

  • Github

开发流程规范

Git Flow

Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践。Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具。Git Flow模型如下图:

Github Flow

Github Flow是Git Flow的一个更简单的替换方案,它只有一个feature分支和一个master分支,简单而干净。Github Flow模型如下图

自动化构建脚本

  • Gradle

  • Maven

  • SBT

  • ANT

虚拟机与容器化

  • VMware

  • VirtualBox

  • Vagrant

  • Docker

持续集成(CI)&持续部署(CD)

  • Hudson

  • Travis CI

  • CircleCI

自动化测试

  • Appium

    Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。

  • Selenium

    Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Mozilla 和 Firefox 中运行。

  • Mock测试

    Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。这个虚拟的对象就是Mock对象,Mock对象就是真实对象在调试期间的代替品。Java中的Mock框架常用的有EasyMock和Mockito等。

  • 消费者驱动契约测试

    契约测试是一种针对外部服务的接口进行的测试,它能够验证服务是否满足消费方期待的契约。当一些消费方通过接口使用某个组件的提供的行为时,它们之间就产生了契约。这个契约包含了对输入和输出的数据结构的期望,性能以及并发性。而PACT是目前比较流的消费者驱动契约测试框架。

自动化运维工具

  • Ansible

  • Puppet

  • Chef

监控管理工具

  • Zabbix

    Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。

  • ELK Stack日志分析系统

    ELK Stack是开源日志处理平台解决方案,背后的商业公司是Elastic。它由日志采集解析工具 Logstash、基于 Lucene 的全文搜索引擎 Elasticsearch、分析可视化平台 Kibana三部分组成。

  • 云监控(如Amazon CloudWatch)

    Amazon CloudWatch 是一项针对 AWS 云资源和在 AWS 上运行的应用程序进行监控的服务。您可以使用 Amazon CloudWatch 收集和跟踪各项指标、收集和监控日志文件、设置警报以及自动应对 AWS 资源的更改