DevOps 初学者指南

DevOps 的重要性是什么,它对 IT 专业人员意味着什么,方法、框架和工具的描述。

DevOps 初学者指南

自从 DevOps 一词在 IT 世界流行以来,发生了很多事情。 由于生态系统的大部分内容都是开源的,因此重新考虑它的启动原因以及它对 IT 职业意味着什么非常重要。

什么是 DevOps

虽然没有单一的定义,但我相信 DevOps 是一个技术框架,它使开发和运营团队之间能够协作,从而更快地将代码部署到生产环境中,并具有迭代和自动化的能力。 我们将用本文的其余部分来解释这一主张。

“DevOps”这个词是“开发”和“运营”这两个词的组合。 DevOps 有助于提高应用程序和服务的交付速度。 这使得组织能够有效地服务客户并在市场上更具竞争力。 简而言之,DevOps 是开发和 IT 运营之间的结合,具有更有效的沟通和协作。

DevOps 涉及一种文化,其中开发、运营和业务团队之间的协作被认为至关重要。 这不仅仅是工具的问题,组织中的 DevOps 也不断让客户受益。 工具、人员和流程是其支柱之一。 DevOps 提高了组织在尽可能短的时间内交付高质量解决方案的能力。 DevOps 还可以自动化所有流程,从构建到部署、应用程序或产品。

DevOps 讨论的重点是开发人员、以编写软件为生的人员以及负责维护该软件的操作人员之间的关系。

开发团队面临的挑战

开发人员往往热情并渴望实施新方法和技术来解决组织问题。 然而,他们也面临着一些问题:

  • 竞争激烈的市场给按时交付产品带来了很大的压力。
  • 他们必须负责管理生产就绪代码并引入新功能。
  • 发布周期可能很长,因此开发团队在实施应用程序之前必须做出一些假设。 在这种情况下,需要更多时间来解决部署到生产或测试环境期间出现的问题。

运营团队面临的挑战

运营团队历来关注 IT 服务的稳定性和可靠性。 这就是为什么运营团队通过改变资源、技术或方法来寻求稳定性。 他们的任务包括:

  • 随着需求的增加管理资源分配。
  • 处理生产环境中使用所需的设计或定制更改。
  • 自行部署应用程序后诊断并解决生产问题。

DevOps 如何解决开发和运营问题

公司不是一次性推出大量应用程序功能,而是尝试看看是否可以通过一系列发布迭代向客户推出少量功能。 这种方法有很多优点,例如更好的软件质量、更快的客户反馈等。 这反过来又确保了客户的高满意度。 为了实现这些目标,公司需要:

  • 降低发布新版本时的失败率
  • 增加部署频率
  • 在发布新应用程序时实现更快的平均恢复时间。
  • 减少修正时间

DevOps 执行所有这些任务并帮助确保不间断交付。 组织正在使用 DevOps 来实现几年前难以想象的生产力水平。 他们每天执行数十、数百甚至数千次部署,同时提供世界一流的可靠性、稳定性和安全性。 (了解有关批量大小的更多信息 及其对软件交付的影响)。

DevOps 尝试解决过去方法所带来的各种问题,包括:

  • 开发和运营团队之间的工作隔离
  • 测试和部署是设计和构建之后发生的独立阶段,并且需要比构建周期更多的时间。
  • 花费过多时间进行测试、部署和设计,而不是专注于构建核心业务服务
  • 手动代码部署导致生产错误
  • 开发和运营团队日程安排的差异导致额外的延误

DevOps 初学者指南

DevOps、敏捷与传统 IT 的对抗

人们经常将 DevOps 与其他 IT 实践结合起来讨论,特别是敏捷和瀑布式 IT。

敏捷是一套软件生产的原则、价值观和实践。 因此,举例来说,如果您有一个想要转化为软件的想法,您可以使用敏捷原则和价值观。 但这个软件只能运行在开发或测试环境中。 您需要一种简单、安全的方法来快速、可重复地将软件投入生产,而这种方法就是通过 DevOps 工具和技术。 敏捷软件开发重点关注开发流程,DevOps 负责以最安全、最可靠的方式进行开发和部署。

将传统瀑布模型与 DevOps 进行比较是了解 DevOps 带来的好处的好方法。 以下示例假设应用程序将在四个星期内上线,开发已完成 85%,应用程序将上线,并且购买服务器来交付代码的过程才刚刚开始。

传统工艺
DevOps 中的流程

订购新服务器后,开发团队开始进行测试。 该工作组负责处理企业部署基础设施所需的大量文档。
一旦下了新服务器的订单,开发和运营团队就会共同制定安装新服务器的流程和文书工作。 这使您可以更好地了解您的基础设施需求。

有关故障转移、冗余、数据中心位置和存储要求的信息被歪曲,因为没有来自具有深厚领域知识的开发团队的输入。
由于开发团队的输入,有关故障转移、冗余、灾难恢复、数据中心位置和存储要求的详细信息都是已知且正确的。

运营团队不知道开发团队的进度。 她还根据自己的想法制定了监控计划。

运营团队充分了解开发团队所取得的进展。 她还与开发团队互动,共同制定满足 IT 和业务需求的监控计划。 他们还使用应用程序性能监控(APM)工具。

在应用程序启动之前进行的负载测试会导致应用程序崩溃,从而延迟其启动。
在运行应用程序之前执行负载测试会导致性能不佳。 开发团队快速解决瓶颈,应用程序按时启动。

开发运营生命周期

DevOps 涉及采用某些普遍接受的实践。

持续规划

持续规划依赖于精益原则,从小事做起,确定测试业务或愿景价值所需的资源和输出,不断适应、衡量进度、从客户需求中学习、根据需要改变方向以适应敏捷性,并重新制定业务计划。

共同开发

协作开发流程允许分布在不同时区的企业、开发团队和测试团队持续交付高质量的软件。 这包括多平台开发、跨语言编程支持、用户故事创建、构思开发和生命周期管理。 协同开发包括持续集成的过程和实践,它促进了频繁的代码集成和自动化构建。 通过频繁地将代码部署到应用程序,可以在生命周期的早期识别集成问题(此时更容易修复),并且随着项目显示出持续且可见的进展,通过持续反馈可以减少总体集成工作量。

持续测试

持续测试可以帮助开发团队平衡速度和质量,从而降低测试成本。 它还通过服务虚拟化消除了测试瓶颈,并可以轻松创建虚拟化测试环境,并可随着系统变化轻松共享、部署和更新。 这些功能降低了配置和维护测试环境的成本,并缩短了测试周期时间,从而允许集成测试在生命周期的早期进行。

持续发布和部署

这些技术带来了核心实践:持续发布和部署。 这是通过自动化关键流程的连续管道来确保的。 只需按一下按钮即可进行部署,从而减少手动步骤、资源等待时间和返工,从而实现更多发布、更少错误和完全透明。

自动化对于确保软件发布稳定可靠发挥着关键作用。 最大的挑战之一是采用手动流程(例如构建、回归、部署和基础设施创建)并将其自动化。 这就需要源码版本控制; 测试和部署场景; 基础设施和应用程序配置数据; 以及应用程序依赖的库和包。 另一个重要因素是查询所有环境状态的能力。

持续监控

持续监控提供企业级报告,帮助开发团队在将应用程序部署到生产之前了解生产环境中应用程序的可用性和性能。 持续监控提供的早期反馈对于减少错误成本和引导项目朝正确方向发展至关重要。 这种做法通常包括监控工具,这些工具通常会揭示与应用程序性能相关的指标。

持续反馈和优化

持续的反馈和优化提供了客户流程的可视化表示并查明问题区域。 反馈可以包含在售前和售后阶段,以实现价值最大化并确保更多交易成功完成。 所有这些都提供了影响客户行为和业务影响的客户问题根本原因的即时可视化。

DevOps 初学者指南

DevOps 的好处

DevOps 可以帮助创建一个开发人员和运维团队作为一个团队工作以实现共同目标的环境。 这个过程中的一个重要里程碑是持续集成和持续交付(CI/CD)的实施。 这些技术将使团队能够以更少的错误更快地将软件推向市场。

DevOps 的重要好处是:

  • 可预测性:DevOps 显着降低了新版本的故障率。
  • 可维护性:如果新版本失败或应用程序出现故障,DevOps 可以轻松恢复。
  • 可重复性:构建或代码的版本控制允许您根据需要恢复早期版本。
  • 更高的质量:解决基础设施问题可以提高应用程序开发的质量。
  • 上市时间:优化软件交付可将上市时间缩短 50%。
  • 降低风险:在软件生命周期中实施安全性可以减少整个生命周期中的缺陷数量。
  • 成本效率:软件开发中对成本效率的追求吸引了高级管理层。
  • 稳定性:软件系统更加稳定、安全,变更可审计。
  • 将较大的代码库分解为可管理的部分:DevOps 基于敏捷开发方法,它允许您将大型代码库分解为较小的、可管理的部分。

开发运营原则

DevOps 的采用催生了几项已经发展(并将继续发展)的原则。 大多数解决方案提供商都开发了自己的各种技术修改版。 所有这些原则都基于 DevOps 的整体方法,任何规模的组织都可以使用它们。

在类似生产的环境中进行开发和测试

其想法是使开发和质量保证 (QA) 团队能够开发和测试行为类似于生产系统的系统,以便他们可以在准备好部署之前了解应用程序的行为和执行情况。

应用程序应在其生命周期中尽早连接到生产系统,以解决三个主要的潜在问题。 首先,它允许您在接近真实环境的环境中测试应用程序。 其次,它允许您提前测试和验证应用程序交付流程。 第三,它允许运营团队在生命周期的早期测试部署应用程序时其环境的行为方式,从而允许他们创建高度定制的、以应用程序为中心的环境。

使用可重复、可靠的流程进行部署

这一原则允许开发和运营团队在整个软件生命周期中支持敏捷软件开发流程。 自动化对于创建迭代、可靠和可重复的流程至关重要。 因此,组织必须创建一个交付管道,以实现持续、自动化的部署和测试。 频繁部署还允许团队测试部署流程,从而降低实时发布期间部署失败的风险。

监控和检查工作质量

组织擅长监控生产中的应用程序,因为他们拥有实时捕获指标和关键绩效指标 (KPI) 的工具。 这一原则将监控移至生命周期的早期,确保自动化测试在流程的早期监控应用程序的功能和非功能属性。 每当测试和部署应用程序时,都必须检查和分析质量指标。 监控工具可以对生产过程中可能出现的操作和质量问题提供预警。 这些指标必须以所有利益相关者均可访问和理解的格式收集。

改善反馈循环

DevOps 流程的目标之一是使组织能够更快地做出响应和做出更改。 在软件交付中,这一目标要求组织尽早收到反馈,然后快速从所采取的每项行动中学习。 这一原则要求组织创建沟通渠道,允许利益相关者以反馈方式访问和互动。 可以通过调整项目计划或优先级来完成开发。 制造业可以通过改善生产环境来发挥作用。

开发

  • 规划: Kanboard、Wekan 和其他 Trello 替代品; GitLab、Tuleap、Redmine 和其他 JIRA 替代品; Mattermost、Roit.im、IRC 和其他 Slack 替代品。
  • 编写代码: Git、Gerrit、Bugzilla; Jenkins 和其他 CI/CD 开源工具
  • 大会: Apache Maven、Gradle、Apache Ant、Packer
  • 测试: JUnit、Cucumber、Selenium、Apache JMeter

行动

  • 发布、部署、操作: Kubernetes、Nomad、Jenkins、Zuul、Spinnaker、Ansible、Apache ZooKeeper、etcd、Netflix Archaius、Terraform
  • 监控: Grafana、Prometheus、Nagios、InfluxDB、Fluentd 以及本指南中介绍的其他内容

(*操作工具已按照操作团队使用的顺序进行编号,但它们的工具与发布和部署工具的生命周期阶段重叠。为了便于阅读,编号已被删除。)

总之

DevOps 是一种越来越流行的方法,旨在将开发人员和运营人员整合为一个整体。 它是独一无二的,不同于传统的 IT 运营,并且是敏捷的补充(但不够灵活)。

DevOps 初学者指南

了解如何通过参加 SkillFactory 的付费在线课程从头开始获得受欢迎的职业或在技能和薪水方面升级:

更多课程

有用

来源: habr.com

添加评论