简介
什么是DevOps?
DevOps是开发和IT运营之间的合作,以一种自动化和可重复的方式进行软件生产和部署。DevOps有助于提高组织交付软件应用和服务的速度。DevOps是 "Development"和 "Operations"的缩写。
它使组织能够更好地服务于他们的客户,在市场上更有力地竞争。简单地说,DevOps可以被定义为开发和IT运营的统一,有更好的沟通和协作。
为什么需要DevOps?
- 在DevOps之前,开发和运营团队的工作是几乎完全孤立的。
- 测试和部署是在设计完成后进行的孤立的活动。因此,它们消耗的时间比实际的构建周期还要多。
- 如果不使用DevOps,团队成员会花费大量的时间进行测试、部署和设计,而不是构建项目。
- 手动部署代码导致生产中的人为错误。
- 编码和运维团队有独立的时间表,而且不同步,导致进一步的延误。
DevOps与传统IT有何不同
我们假设该应用程序计划在2周内上线,编码完成80%。 我们假设该应用程序是全新发布,购买服务器以运送代码的过程刚刚开始 。
-
旧流程
- 在下了新服务器的订单后,开发团队开始进行测试。运营团队在企业中从事大量的文书工作,以部署基础设施。
- 关于故障转移、冗余、数据中心位置和存储要求的预测是有偏差的,因为没有来自对应用程序有深入了解的开发人员的投入。
- 运营团队对开发团队的进展一无所知。运营团队根据他们的理解制定监控计划。
- 在上线之前,负载测试发现应用程序崩溃,发布被推迟。
-
新流程
- 在下了新服务器的订单后,开发和运营团队一起工作,处理建立新服务器的文书工作。这样基础设施要求的更好可见性。
- 由于开发人员的输入,关于故障转移、冗余、灾难恢复、数据中心位置和存储需求的预测是相当准确。
- 在DevOps中,运营团队完全了解开发者的进展。运营团队与开发人员互动,共同制定一个满足IT和业务需求的监控计划。他们还使用先进的应用性能监控(APM)工具。
- 在上线之前,负载测试时应用程序变得有点慢。开发团队迅速解决了瓶颈问题,应用程序按时发布。
为什么使用DevOps?
DevOps允许敏捷开发团队实施持续集成和持续交付,这有助于他们更快地将产品推向市场。
其他重要原因有。
可预测性。DevOps提供的新版本的失败率大大降低。
再现性。任何改变都是版本,可以随时恢复早期版本
可维护性。在新版本崩溃或禁用的情况下,很容易回退。
上市时间:DevOps通过简化的软件交付将上市时间缩短50%。尤其适合数字和移动应用。
更高的质量。DevOps帮助团队提供更高质量的应用程序开发,因为它在基础架构方面的合作。
降低风险:DevOps在软件交付生命周期中纳入了安全,它有助于减少整个生命周期的缺陷。
弹性。软件系统的运行状态更加稳定、安全,而且变化是可审计的。
成本效率。DevOps在软件开发过程中降低了成本,提高了效率。
将较大的代码库分解成小块。基于敏捷的编程方法、将较大的代码库分解成较小的、可管理的块。
什么时候采用DevOps?
DevOps适用于大型分布式应用程序,例如电子商务站点或托管在云平台上的应用程序。
什么时候不采用DevOps?
它不应该被用于关键任务的应用,如银行、电力和其他敏感数据网站。这类应用需要对生产环境进行严格的访问控制,制定详细的变更管理政策,以及对数据中心的访问控制政策。也可以采取半自动的方式加入审核。
DevOps工作流程
工作流程提供了输入顺序的可视化概述。它还描述了所执行的动作,以及为操作所产生的输出。
工作流允许分离和安排用户最紧急工作的能力。它还可以在配置工作中反映他们的理想过程。
DevOps与Agile有何不同?DevOps Vs Agile
敏捷解决了客户和开发的裂痕。
DevOps解决了开发和运维的裂痕
敏捷与DevOps的区别
-
敏捷
- 强调打破开发人员和管理层之间的障碍。
- 解决了客户需求和开发团队之间的问题。
- 注重功能和非功能的就绪。
- 关于开发方式。
- 敏捷开发强调培训所有的团队成员,让他们拥有全栈技能。
- 在 "冲刺 "上进行管理。这意味着时间表要短得多(少于一个月),而且要在这段时间内制作和发布几个功能。
-
DevOps
- 强调打破开发和运维的障碍。
- 解决了开发和运营团队之间的问题。
- 注重运营和业务的就绪。
- 强调以最可靠和最安全的方式部署软件,而这些方式并不总是最快的。
- DevOps喜欢分而治之,在开发和运营团队之间传播技能。它还保持一致的沟通。
- DevOps追求的是综合的最后期限和基准,有重大的发布,而不是更小更频繁的发布。
DevOps原则
此部分参考DevOps职业生涯手册1路径更准确!
以下是采用DevOps时必不可少的六个原则。
以客户为中心。DevOps团队必须不断采取以客户为中心的行动,对产品和服务进行投资。
端到端责任。DevOps团队需要提供性能支持,直到它们成为终结者。这增强了责任水平和工程产品的质量。
持续改进。DevOps文化注重持续改进,以减少浪费,它不断加快改进所提供的产品或服务。
自动化:自动化是DevOps过程的重要原则,这不仅适用于软件开发,也适用于整个基础设施领域。
团队协作。在DevOps文化中,设计者、开发者和测试者已经被定义,他们所需要做的就是作为一个团队完全协作地工作。
监控和测试。
DevOps工程师
DevOps工程师是一个IT专业人员,他与软件开发人员、系统操作员和其他生产型IT人员一起工作,管理代码发布。DevOps应该具备硬技能和软技能,与开发、测试和运营团队进行沟通和协作。
DevOps方法需要对代码版本进行频繁的增量更改,这意味着频繁的部署和测试方案。 虽然DevOps工程师较少编码,应该具备编程基础。
DevOps工程师将与开发一起解决连接代码元素(如库或软件开发工具包)所需的编码和脚本。
DevOps工程师的角色、职责和技能
DevOps工程师是全职工作,他们负责软件应用平台的生产和持续维护。
以下是DevOps工程师预期的要求:
- 能够在平台和应用领域进行系统故障排除和问题解决。
- 通过开放的、基于标准的平台有效管理项目
- 提高项目的可见性,可追溯性
- 通过合作提高质量,降低开发成本
- 分析、设计和评估自动化脚本和系统
- 通过使用最好的云安全解决方案服务,确保系统问题的关键解决
DevOps工程师赚多少钱?
DevOps是最热门的IT职业之一。即使是初级的DevOps工程师的薪酬水平也相当高。在印度,初级DevOps工程师的大约年薪是11,15801卢比(约13689美元)。在美国,初级DevOps工程师的平均工资是每年78,696美元。
DevOps培训认证
DevOps培训认证有助于任何有志于从事DevOps工程师的人。亚马逊网络服务、红帽、微软学院、DevOps研究所都有认证。
让我们逐一考虑它们
- 认证Hyperledger Fabric开发者
认证Hyperledger Fabric开发者项目允许你建立和维护Fabric编程客户端应用程序。该认证适用于想要执行Fabric应用的端到端生命周期的开发人员。
- AWS认证DevOps工程师
这个DevOps工程证书测试你如何使用最常见的DevOps模式来开发、部署和维护AWS上的应用程序。它还评估了DevOps方法的核心原则。
这个认证有两个必要条件。认证费用为300美元,时间为170分钟。
- 红帽认证
红帽公司为DevOps专业人士提供不同级别的认证,具体如下
红帽平台即服务的专业技能证书
红帽容器化应用开发专家证书
红帽Ansible自动化专家证书
红帽配置管理专家证书
红帽容器管理专家证书
DevOps研究所
DevOps研究所是围绕新兴DevOps实践的全球学习社区。这个组织正在为基于DevOps能力的资格认证制定质量标准,DevOps研究所目前提供了三种课程和认证。
该公司提供的认证课程有。
- DevOps基础
- DevOps基础认证
- 敏捷服务经理认证
- 敏捷流程负责人认证
- DevOps测试工程师
- 持续交付架构师
- 敏捷服务领导者
- 敏捷服务工程师
DevOps自动化工具
将测试过程自动化,并对其进行配置以实现速度和敏捷性是至关重要的。这个过程被称为DevOps自动化。
在维护大型、大规模IT基础设施的大型DevOps团队中,所面临的困难可以简要地分为六个不同的类别。
- 基础设施自动化
亚马逊网络服务(AWS)和阿里云。不需要实际的数据中心,很容易按需扩展。没有前期的硬件成本,克配置为根据流量自动提供更多的服务器。
- 配置管理
比如ansible、Chef、Nacos
- 部署自动化
比如ansible、 buildbot,Jenkins
- 性能管理
App Dynamic:提供实时性能监控的DevOps工具。这个工具收集的数据有助于开发人员在问题发生时进行调试。
- 日志管理
Splunk。这个工具解决了聚集、存储和分析所有日志的问题。
- 监控
Nagios。当基础设施和相关服务出现故障时,通知人们也很重要。Nagios就是这样一个工具,它帮助DevOps团队发现并纠正问题。
DevOps的未来
在DevOps的世界里,有很多变化可能会发生。最突出的一些是。
组织正在将他们的需求转移到数周和数月而不是数年。
DevOps工程师比企业中的任何其他人拥有更多的最终用户访问权和控制权。
DevOps正在成为IT人员的重要技能。 例如,Linux招聘进行的一项调查发现,25%的受访者认为求职者要具备DevOps的专业知识。
DevOps和持续交付将继续存在。 DevOps概念的主流化将需要5到10年。
小结
- DevOps的定义是两个词的组合,"Development"和"Operations"。
- 它是一种文化,促进开发和运营团队之间的合作,以一种自动化和可重复的方式更快地将代码部署到生产中。
- 在DevOps之前,运营和开发团队大多在孤立的情况下工作。手动部署代码导致生产中的人为错误
- 运营团队完全了解开发者在DevOps过程中的进展。购买和监控规划是准确的。
- DevOps提供了可维护性、可预测性、更大的质量成本效率和上市时间。
- 敏捷过程专注于功能和非功能的准备,而DevOps专注于IT基础设施。
- DevOps生命周期包括开发、测试、集成、部署和监控。
- DevOps工程师将与开发团队人员合作,解决编码和脚本的需求。
- DevOps工程师应该具有解决问题的软技能,并且是一个快速学习的人。
- 亚马逊网络服务、红帽、微软学院、DevOps学院都可以提供DevOps证书
- DevOps帮助组织将其代码部署周期转移到几周和几个月,而不是几年。
DevOps的生命周期
什么是DevOps生命周期?
DevOps生命周期是一系列的开发阶段,尽可能有效地指导每个人完成产品开发的端到端过程。
- 持续开发
需要版本控制支持。
- 持续集成
通过频繁地整合其组件来开发软件。它有助于确保源代码的变化不会破坏构建或导致其他问题。
- 持续测试
这个DevOps生命周期阶段包含了自动的、预先安排的、持续的代码测试,因为应用程序代码被编写或更新。这种测试可以手动编写,也可以与持续集成工具结合。
- 持续部署
部署过程是持续进行的。它的执行是为了使代码中的任何变化不影响高流量网站的运作。
- 持续监控
开发人员收集数据,监控每个功能,并发现错误,如低内存或服务器连接中断。例如,当用户登录时,他们应该访问他们的账户,如果不能这样做,意味着你的应用程序有问题。
- 持续反馈
持续反馈就像一个进度报告。在这个DevOps阶段,软件会自动发出关于性能和终端用户遇到的问题的信息。这也是一个让客户分享他们的经验和提供反馈的机会。
- 持续运营
这是DevOps的最后、最短、最直接的阶段。它还涉及到自动化应用程序的发布和所有这些更新,帮助你保持周期短,给开发人员和提供更多的时间来专注于开发。
参考资料
- 本文涉及的python测试开发库 谢谢点赞!
- 本文相关海量书籍下载