提到DevOps这个词,我相信很多人一定不会陌生。
DevOps的历史
在开发人员关注之前,我们传统的IT部门在组织中有两个独立的团队-开发团队和运营团队。
开发团队负责软件开发,开发并确保代码完美运行。经过数小时的努力和大量的反复试验,团队发布了必须由运营团队执行的代码,该团队负责代码的发布和操作。
运营团队将检查应用程序及其性能,并报告所有错误(如果存在)。 尽管听起来很简单和计划周详,但两个主要团队在执行时总是会发生冲突。
例如,让我们说,开发团队使用i7处理器,8GB RAM,操作系统(如Ubuntu)和php 5.6脚本语言开发了代码,而运营团队则使用i5处理器,16GB RAM,与Centos的操作系统运行了相同的代码。和php 7.0编程语言。
当运营团队运行相同的代码时,它将无法正常工作。
原因可能是系统环境不同或缺少任何软件库。
即使该问题可能存在于他们自己的系统中,操作团队仍将此代码标记为错误代码。这导致了开发人员和运营团队之间的来回交流。
为了弥合这种差距,Development('Dev')团队和Operations('Ops')团队合作开发了DevOps。
例如,为了解决上述问题,开发团队将其代码封装在一个轻量级软件环境的容器中。
该软件环境中封装了所有必需的软件,这些代码或应用程序将需要按预期运行。
开发人员完成工作后,只需将这个容器连同代码一起传递给运营团队。Ops将与代码一起运行此容器,并且按预期运行!
这正是Devops!
DevOps的生命周期
很多阶段有助于使DevOps达到今天的水平。
这是一个持续的过程–持续的开发,测试,集成,部署和监视。让我用一个例子解释一下。
Instagram是全世界广泛使用的应用程序。为了使它按其方式工作,幕后有庞大的团队不断开发,测试和发布功能。
开发人员为使用测试套件进行测试的应用程序计划并构建代码,如果测试套件成功,则将代码发送到生产环境。
在生产环境中,监视工具保留用户的错误和功能请求日志。例如,instagram已添加了Instagram Stories和IGTV等新功能,这些功能以前都不是Instagram应用程序的一部分。
还有一个漏洞爬到了应用程序上,该程序将提要切换到水平视图,并且每个人都疯狂。现在,此问题已解决,但是您认为开发人员如何了解这些错误?
连续监视可以检查这些错误和功能请求。然后将这些反馈发送给进行更改的开发人员,然后再次将代码推送到Devops生命周期中。
因此,从上面的示例中,您可以看到应用程序上的工作是连续进行的,并且开发永远不会停止!
在尽可能短的时间内不断添加新功能并修复错误以改进应用程序的过程称为Devops Lifecycle。
持续发展
开发人员计划并构建代码,然后将其上传到包含源代码的版本控制系统(如Git)上。即使在最终版本之后,开发人员也需要将反馈纳入应用程序中。因此,开发人员改善应用程序的这种连续过程称为持续开发。
连续测试
将代码上传到源代码平台后,将在测试代码的帮助下进行测试。每次对源代码进行更改时,代码也将以连续的方式进行测试,然后再进行生产。
持续集成
DevOps生命周期中的一个阶段完成后,应用程序代码必须继续进行下一个阶段。这是在集成工具的帮助下发生的。在工具的帮助下,从一个阶段到下一个阶段不断协调代码的开发实践称为持续集成。
持续部署
应用程序中每增加一个功能,都可能需要在应用程序环境中进行一些修改。这称为配置管理。为此,我们使用了几种部署工具。基于功能的添加不断更改应用程序环境的过程称为“连续部署”。
持续监控
即使经过计划和测试,错误仍可能找到生产方式。为了跟踪这些错误或任何其他不适当的系统行为,甚至跟踪功能请求,监视工具会在应用程序进行更新的时间以及何时进行持续检查。
您可以跟踪和维护某些任务的状态,包括使用任务管理软件(如ClickUp)开发事物的方式。这是2019年十大最佳项目管理软件,它们肯定会提高您团队的生产力
每个成功阶段的背后,都有许多工具可以帮助DevOps顺利运行。以下是一些重要的方面:
它是设计用于处理各种规模项目的最受欢迎的免费开放源代码版本控制系统之一,因此,它是整个软件行业广泛使用的DevOps工具。Git使我们能够跟踪工作进度。我们可以保存源代码的所有版本,并在必要时返回以前的版本。Git在DevOps生命周期的持续发展中扮演着重要角色。
另一个重要工具是docker。Docker通过“容器”使发行版开发成为可能,并使应用程序的部署自动化。为了使应用程序可移植且更安全,docker将应用程序隔离到单独的容器中。泊坞窗应用程序独立于操作系统和平台。
这是用于Web应用程序的便携式软件测试框架。它是一个开源工具,可在JAVA,Python,Ruby,Perl,Php,Javascript等大多数平台上运行。Selenium用于连续测试。
从项目结构到构建步骤,Maven是为我们提供指南的工具,该指南在遵循时可以帮助我们以最少的配置更快地完成工作。它编译源代码,运行测试,将结果打包到JAR,WAR等中,然后将软件包上传到远程存储库中。
它是可用于测试的连续集成服务器。作为开发人员,它有助于查找和消除代码中的错误。Jenkins提供了约1000个插件的庞大插件生态系统,这意味着它可以与几乎所有DevOps工具集成。
这是另一个具有丰富插件系统的工具,具有免费和开放源代码监视工具,可帮助您发现和修复IT基础结构中的问题,然后再影响敏感的业务项目。
它是另一个开源IT配置管理和部署工具。它使用YAML编写的简单语法。ansible不需要在要进行自动化的主机系统上安装任何其他端口。这样可以为应用程序节省大量资源。这些模块可与JSON一起使用,并且可以使用任何编程语言进行扩展。总的来说,这是一个简单的工具,可以大大提高生产率。
它是一个配置管理平台,使我们可以将基础结构作为代码进行管理。由于代码可以自动化基础架构管理,因此交付速度更快,更安全。Puppet还为小型项目提供开源工具。
如何成为一名DevOps工程师?
这还要从它的定义讲起。DevOps 是 Development 和 Operations 的组合,也就是开发和运维的简写。
DevOps 是针对企业中的研发人员、运维人员和测试人员的工作理念,是他们在应用开发、代码部署和质量测试等整条生命周期中协作和沟通的最佳实践,DevOps 强调整个组织的合作以及交付和基础设施变更的自动化、从而实现持续集成、持续部署和持续交付。
何为持续集成、持续部署、持续交付呢?
持续集成(CI-Continuous integration)
是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起并切相互不影响工作。
持续部署(CD)
持续部署(CD-continuous deployment)是基于某种工具或平台实现代码自动化的构建、测试和部署到线上环境以实现交付高质量的产品,持续部署在某种程度上代表了一个开发团队的更新迭代速率。
持续交付
持续交付是在(Continuous Delivery)持续部署的基础之上,将产品交付到线上环境,因此持续交付是产品价值的一种交付,是产品价值的一种盈利的实现。
此外,了解了概念之后,还需要学习一些基础知识。
1、首先必需具备coding能力,诸如Pythong, Go或C/C++等;
2、必需能动操作系统/Linux+Windows的基本,进程管理,网络管理,存储管理,虚拟化+Docker等;
3、知道一些管理服务器的开源组件和系统命令等,包括DNS,OSI网络和安全,监控,日志,性能方面等;
4、懂企业架构,诸如WebServer,数据库等;
5、最关键得理解Infrastructure,自动化工具引擎、管理虚拟化的工具平台、Docker管理平台及其相关架构、Orchestrate 工具和常用一些云的使用技巧,当然包括Infrastructure的运营和运维操作能力,什么监控(也要懂应用监控等)工具等等。
DevOps国内应用现状如何?
DevOps在近几年的发展势头可谓是迅猛无比,已经有越来越多的企业机构开始尝试落地,从国外的微软谷歌到国内的阿里腾讯,DevOps已经从时髦概念落地最佳实践,进而改变着整个软件行业,成为推动软件行业前进的核心动力。
1、DevOps架构师
2、DevOps开发人员
3、DevOps顾问
4、DevOps测试分析师
5、DevOps管理器
更多文章和资料 ↓↓↓ 阿里云K8s实战手册 K8s 阿里云CDN排坑指南 CDN ECS运维指南 ECS DevOps实践手册 DevOps Hadoop大数据实战手册 Hadoop
来源:oschina
链接:https://my.oschina.net/u/4601114/blog/4469503