自从DevOps一词在IT世界中根深蒂固以来,发生了很多事情。拥有如此多的生态系统开源资源,重要的是重新考虑它的起源以及对IT事业的意义。
什么是DevOps
尽管没有唯一的定义,但我认为DevOps是一个技术框架,它使开发团队和运营团队之间的交互能够以可重复的步骤和自动化将代码更快地部署到生产环境中。我们将把本文的其余部分用于解压缩此语句。
单词“ DevOps”是单词“开发”和“操作”的串联。 DevOps有助于提高应用程序和服务的交付速度。这使组织可以有效地为其客户提供服务,并在市场上更具竞争力。简而言之,DevOps旨在通过更有效的沟通与协作来实现开发与IT运营之间的一致性。
DevOps设想了一种文化,在这种文化中,开发团队,运营商和业务团队之间的协作至关重要。这不仅与工具有关,还因为组织中的DevOps也会不断使客户受益。工具是人员和流程的支柱之一。DevOps增强了组织在尽可能短的时间内交付高质量解决方案的能力。DevOps还可以自动化所有流程,从组装到部署,应用程序或产品。
DevOps讨论的重点是开发人员,终身编写软件的人员以及负责维护该软件的运营商之间的关系。
开发团队面临的挑战
开发人员倾向于热情并且愿意引入新的方法和技术来解决组织问题。但是,他们也面临某些挑战:
- 竞争激烈的市场给按时交付产品带来了很大的压力。
- 他们必须注意管理可用于生产的代码并引入新功能。
- 发布周期可能很长,因此开发团队必须在部署应用程序之前做出几个假设。在这种情况下,需要更多时间来解决在生产或测试环境中部署期间出现的问题。
运营团队面临的挑战
运营团队历来专注于IT服务的稳定性和可靠性。因此,运营团队通过更改资源,技术或方法来寻求稳定性。他们的任务包括:
- 随着需求的增长管理资源分配。
- 处理需要在生产环境中应用的设计或自定义更改。
- 自部署应用程序后,对与生产相关的问题进行诊断和故障排除。
DevOps如何解决开发和运营问题
公司不是一次发布大量的应用程序功能,而是试图确定是否可以通过一系列发行迭代将少量的功能发布给客户。这种方法具有几个优点,例如更好的软件质量,更快的客户反馈等。这又提供了高度的客户满意度。为了实现这些目标,公司必须:
- 降低新版本的跳出率
- 增加部署频率
- 在发布新应用程序的情况下,可以缩短平均恢复时间。
- 减少校正时间
DevOps完成所有这些任务,并有助于确保不间断的交付。组织正在使用DevOps来实现几年前无法想象的性能水平。它们每天执行数十,数百甚至数千个部署,同时提供世界一流的可靠性,稳定性和安全性。(了解有关批量大小及其对软件交付的影响的更多信息)。
DevOps尝试解决由于应用过去的方法而产生的各种问题,包括:
- 隔离开发团队和运营商的工作
- 测试和部署是独立的阶段,在设计和组装之后执行,并且比组装周期需要更多的时间。
- , -
- ,
- ,
DevOps, Agile IT
通常会结合其他IT实践(尤其是敏捷和瀑布式IT基础架构)来讨论DevOps。
敏捷是一套用于生产软件的原则,价值观和方法。因此,例如,如果您有想要转换为软件的想法,则可以使用敏捷的原理和价值观。但是此软件只能在开发或测试环境中运行。您需要一种简单且安全的方法来快速重复地将软件投入生产,并且该方法是通过DevOps工具和技术。灵活的软件开发方法论着眼于开发流程,DevOps负责以最安全,最可靠的方式进行开发和部署。
将传统瀑布模型与DevOps进行比较是了解DevOps好处的好方法。以下示例假定应用程序将在四周内启动并运行,开发已完成85%,应用程序将启动并运行,并且购买服务器以提交代码的过程才刚刚开始。
传统工艺 | DevOps中的流程 |
---|---|
在订购新服务器之后,开发团队将进行测试。工作组正在研究企业部署基础架构所需的大量文档。 | 在订购新服务器后,开发团队和操作员团队将共同努力以安装新服务器。这样可以更好地了解基础架构要求。
|
, , , , . | , , , . |
. .
|
焦点小组完全意识到开发团队所取得的进展。她还与开发团队互动,他们共同制定了一个满足IT和业务需求的监控计划。他们还使用应用程序性能监视(APM)工具。
|
启动应用程序之前进行压力测试会导致应用程序崩溃,从而延迟了启动时间。 | 在启动应用程序之前执行的压力测试会降低性能。开发团队可以快速消除瓶颈,并按时启动应用程序。 |
DevOps生命周期
DevOps涉及采用某些普遍接受的做法。
持续计划
持续计划依靠精益原则,从识别业务价值或愿景所需的资源和结果开始,从小规模入手,不断适应,衡量进度,从客户需求中学习,改变敏捷性所需的方向并进行更新。商业计划。
共同发展
协作开发过程使跨多个时区的业务,开发团队和测试团队能够连续交付高质量的软件。这包括多平台开发,多语言编程支持,用户讲故事,构想开发和生命周期管理。共同开发包括一个持续的集成过程和实践,可促进频繁的代码集成和自动化构建。通过频繁的代码注入,可以在生命周期的早期(更易于修复)识别出集成问题,并且由于项目显示出持续可见的进展,因此通过不断的反馈减少了整体集成的工作量。
持续测试
连续测试降低了测试成本,有助于开发团队在速度和质量之间取得平衡。它还通过服务虚拟化消除了测试瓶颈,并使创建虚拟化测试环境变得容易,该环境可以随系统变化轻松地进行共享,部署和更新。这些功能通过允许在生命周期的早期进行集成测试,降低了初始化和维护测试环境的成本,还减少了测试周期时间。
持续发布和部署
这些技术带来了核心实践之一:持续发布和部署。这提供了使关键过程自动化的连续管道。它减少了手动操作的数量,资源的等待时间和返工的数量,使您只需单击一个按钮即可进行部署,从而提供了更多的版本,更少的错误以及完全的透明度。
自动化在确保稳定可靠的软件交付中起着关键作用。最大的挑战之一是采用和自动化手动流程,例如构建,回归,部署和基础结构。这需要源代码版本控制;测试和部署脚本;基础架构和应用程序配置数据;以及应用程序依赖的库和软件包。另一个重要因素是查询所有环境状态的能力。
持续监控
持续监视提供企业级报告,以帮助开发团队在将应用程序部署到生产环境之前了解其在生产环境中的可用性和性能。持续监控提供的早期反馈对于减少错误的成本和将项目导向正确的方向至关重要。这种做法通常包括监视工具,这些工具通常会揭示与应用程序性能相关的指标。
不断的反馈和优化
持续的反馈和优化可以直观地显示客户流程并查明问题区域。反馈可以包含在预售和后期制作阶段,以最大限度地提高价值并确保成功完成更多交易。所有这些都可以立即可视化影响客户行为并影响业务的客户问题的根本原因。
DevOps的好处
DevOps可以帮助创建一个环境,在该环境中,开发人员和操作员可以团队合作以实现共同目标。此过程中的一个重要里程碑是引入持续集成和持续交付(CI / CD)。这些技术将使团队能够以更少的错误更快地将软件推向市场。
DevOps的重要好处是:
- 可预测性:DevOps为新版本提供了大大降低的故障率。
- 可维护性:DevOps可以在新版本失败或应用程序中断时轻松恢复。
- 重现性:程序集或代码修订控制系统允许您根据需要还原早期版本。
- 更高的质量:解决基础架构问题可以改善应用程序开发。
- : 50%.
- : .
- : .
- : , , .
- : DevOps , .
DevOps
DevOps的采用催生了一些已经发展(并继续发展)的原则。大多数解决方案提供商已开发出自己对各种技术的修改。所有这些原则都基于对DevOps的整体方法,各种规模的组织都可以使用它们。
在类似生产的环境中进行开发和测试
底线是允许开发和QA团队开发和测试行为类似于生产系统的系统,以便他们可以早于准备好部署就可以看到应用程序的行为和工作方式。 ...
应用程序必须在其生命周期内尽早连接到生产系统,以解决三个主要潜在问题。首先,它允许您在接近真实环境的环境中测试应用程序。其次,它允许您预先测试和验证应用程序交付过程。第三,它允许操作团队在生命周期的早期阶段检查部署应用程序时其环境的行为,从而允许他们创建一个经过微调的面向应用程序的环境。
通过可重复,可靠的流程进行部署
该原则使开发人员和操作员团队可以在整个生命周期中支持灵活的软件开发过程。自动化对于创建迭代,可靠和可重复的过程至关重要。因此,组织必须创建一个交付管道,以实现连续的自动化部署和测试。频繁部署还允许团队测试部署过程,从而降低了在实际发行期间部署失败的风险。
监控和检查工作质量
组织擅长监视生产中的应用程序,因为它们具有实时捕获指标和关键绩效指标(KPI)的工具。该原则可以在生命周期的早期进行监视,从而确保自动化测试可以在流程的早期阶段跟踪应用程序的功能和非功能属性。每当测试和部署应用程序时,都必须检查和分析质量指标。监视工具可对生产过程中可能出现的操作和质量问题提供预警。这些指标应采用所有相关方都可以访问和理解的格式进行编译。
改善反馈循环
DevOps流程的目标之一是使组织能够更快地做出响应并更快地进行更改。在软件交付中,此目标要求组织早日收到反馈,然后从所采取的每项行动中快速学习。该原则要求组织创建沟通渠道,使利益相关者可以基于反馈进行访问和交互。可以通过调整项目计划或优先级来完成开发。制造业可以通过改善工作环境来发挥作用。
开发人员
- 计划:看板,Wekan和其他Trello替代方案 GitLab,Tuleap,Redmine和其他JIRA替代产品;最重要的是Roit.im,IRC和其他Slack替代方案。
- : Git, Gerrit, Bugzilla; Jenkins CI/CD
- : Apache Maven, Gradle, Apache Ant, Packer
- : JUnit, Cucumber, Selenium, Apache JMeter
Ops
- , , : Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
- : Grafana, Prometheus, Nagios, InfluxDB, Fluentd, ,
(* , . .)
DevOps是一种越来越流行的方法,旨在将开发人员和操作员整合在一起。它是独特的,不同于传统的IT运营,是对敏捷的补充(但不那么灵活)。
通过完成SkillFactory付费在线课程,了解如何从头开始或成为技能和薪资水平升级的热门职业的详细信息:
- DevOps课程(12个月)
更多课程
- Machine Learning (12 )
- Data Science (12 )
- (9 )
- «Python -» (9 )