DevOps思想
DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠
DevOps是为了填补开发端和运维端之间的信息鸿沟,改善团队之间的协作关系
DevOps希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作
除了触及工具链之外,作为文化和技术的方法论,DevOps还需要公司在组织文化上的变革
三个阶段:瀑布式开发、敏捷开发、DevOps
DevOps 2016年度报告给出了一个运维成本的计算公式: 停机费用成本 = 部署频率 * 版本迭代失败概率 * 平均修复时间 * 断电的金钱损失
DevOps使用的工具
源代码库
开发人员使用源代码库签入和修改代码。源代码库管理签入的各个版本的代码,这样开发人员不会覆盖彼此的工作成果。
源代码控制已有 40 年的历史,至今依然是持续集成的主要组件。流行的源代码管理工具有 Git、Subversion、Cloudforce、Bitbucket 和 TFS。
构建服务器
构建服务器是把源代码库中的代码编译为可执行代码的自动化工具。流行的工具有 Jenkins、SonarQube 和 Artifactory。
配置管理
配置管理定义服务器或环境的配置。流行的配置管理工具有 Puppet 和 Chef。
虚拟基础设施
亚马逊的 Web Services 和微软的 Azure 是典型的虚拟基础设施。虚拟基础设施由销售基础设施或平台即服务 (PaaS) 的云厂商提供。这些基础设施提供 API,以便使用 Puppet 和 Chef 这样的配置管理工具编程创建新机器。
此外,还有 VMware 的 vCloud 这样的私有云。私有的虚拟基础设施使在自有数据中心的硬件上运行云成为可能。
虚拟基础设施与自动化工具一起,给实践 DevOps 的组织赋能,配置服务器不再需要任何键盘操作。如果想要测试新开发的代码,可以自动把代码发到云基础设施、构建环境、运行所有测试,而无需人为干预。
自动化测试
自动化测试由来已久。DevOps 测试关注构建流水线中的自动化测试,以确保对可部署的构建有足够的信心。要做到持续部署,就要能相信在没有任何人工干预的情况下,代码是可部署的。而如果没有全面的自动化测试,就不可能达成持续部署。流行的工具有 Selenium 和 Watir。
流水线编排
流水线如同一条制造装配线,从开发人员提交完工的代码,一直到代码部署在生产环境,或后期的预生产环境。
一体化的企业级软件开发和交付
VersionOne VS 整合敏捷应用生命周期管理和 DevOps,在一个平台上提供了整个软件交付流水线的全貌。VersionOne® Continuum™ For DevOps 是企业级的持续交付解决方案,支撑整个软件交付周期变更流程的编排、自动化和可视化
测试需要了解的DevOps组件
代码管理: Gitlab
镜像管理: docker, harbor(可以创建一个公司内部使用的镜像仓库)
发布: jenkins ,K8s
测试: Jmeter, junit,sonar,各种自动化测试框架等
查看日志: kibana (filebeat,logstash用于日志采集, elasticsearch用于可伸缩查询,最好把结果集成到kibana上)