本文共 8282 字,大约阅读时间需要 27 分钟。
DevOps是一种高度技术化的业务方法,它将软件开发置于业务运营的核心,以支持对技术日益增长的需求。
DevOps将把一个拥有单一技能的工程师转变成一个拥有多种技能的工程师,包括Coding、Infrastructure、配置管理、测试、构建和发布。
因为它不局限于任何特定的技术,所以在DevOps环境中工作的人们不断地使用、集成和自动化不同的技术。
围绕着DevOps的理念,新的工作角色正在出现。其中一些是:DevOps Architect、Automation Testing Engineer、Delivery Manager、Security Engineer、Integration Specialist、Release Manager、Programmer Manager等等。
在本文中我们来看看DevOps工程师面试中的常见问题。
以下问题有助于面试官了解您在DevOps方面的知识和经验:
总结如下表格:
Features | DevOps | Agile |
---|---|---|
Agility | Agility in both Development & Operations | Agility in only Development |
Processes/ Practices | Involves processes such as CI, CD, CT, etc. | Involves practices such as Agile Scrum, Agile Kanban, etc. |
Key Focus Area | Timeliness & quality have equal priority | Timeliness is the main priority |
Release Cycles/ Development Sprints | Smaller release cycles with immediate feedback | Smaller release cycles |
Source of Feedback | Feedback is from self (Monitoring tools) | Feedback is from customers |
Scope of Work | Agility & need for Automation | Agility only |
DevOps vs Agile
如果团队要自主掌握庞大的工具需要大规模的团队,而使用统一的工作台可以简化整个工具的使用。
基于容器云的DevOps平台主要分为三层:
具备一键发布能力,通过DevOps平台,可以一键从源代码获得可访问的环境(自动根据应用的部署编排,实现了自动化的编译、集成、打包、部署、启动等)。
实施DevOps后的改变,首先团队变得更自治,成为使命型组织;沟通协作更顺畅;实现了开发人员的自助化服务;开发运维机器人提供更多的辅助功能。
在我看来,这个答案应该从解释市场的总体趋势开始。软件产品没有发布大的特性集,而是试图从小的特性是否可以通过一系列的发布提供给客户。
这有许多优点,如客户的快速反馈,更好的软件质量等,从而导致高客户满意度。
为此,软件企业必须:
DevOps满足所有这些需求,并帮助实现无缝的软件交付。你可以举一些公司的例子,他们每天都要执行数十、数百甚至数千个代码部署,同时提供世界级的稳定性、可靠性和安全性。
我建议你按照下面的解释去做:
敏捷是一套关于如何生产即开发软件的价值观和原则。例如:如果您有一些想法,并且希望将这些想法转化为可运行的软件,那么您可以使用敏捷价值观和原则来实现这一点。
但是,该软件可能只在开发人员的笔记本电脑或测试环境中工作。您需要一种快速、轻松、可重复地将软件以安全、简单的方式移动到生产基础架构中的方法。为此,您需要DevOps工具和技术。
你可以这样总结:敏捷软件开发方法论关注于软件的开发,而DevOps则负责以最安全、最可靠的方式开发和部署软件。
最流行的DevOps工具如下:
你也可以提到任何其他工具,但一定要包括上述工具在你的答案。
答案的第二部分有两种可能性:
如果你有使用以上所有工具的经验,那么你可以说我使用了所有这些工具来开发高质量的软件,并轻松、频繁、可靠地部署这些软件。
如果你只对上面的一些工具有经验,那么就提到那些工具,说我对这些工具有专门知识,并对其余的工具有一个概述。
下面给出了一个通用的逻辑流程,其中所有内容都实现了自动化,以实现无缝交付。但是,根据要求,这种流程可能因组织而异。
对于这个答案,您可以使用您过去的经验,并解释DevOps如何在您以前的工作中帮助您。
如果你没有任何这样的经验,那么你可以提到以下优点:
技术优势:
商业利益:
据我所知,DevOps帮助我们实现的最重要的事情是尽快将更改投入生产,同时将软件质量保证和法规遵从性方面的风险降到最低。这是DevOps的主要目标。
但是,您可以添加DevOps的许多其他积极影响。例如,团队之间更清晰的沟通和更好的工作关系,即Ops团队和Dev团队共同协作,提供高质量的软件,从而提高客户满意度。
对于这个答案,分享你过去的经验,并试着解释一下你在以前的工作中有多灵活。您可以参考以下示例:
DevOps工程师几乎总是在一个全天候的关键业务在线环境中工作。
我能够适应随叫随到的工作,并且能够承担实时、实时的系统责任。
我成功地自动化了支持连续软件部署的过程。
我有使用公共/私有云、Chef或Puppet等工具、Python和PHP等工具编写脚本和实现自动化的经验,还有敏捷方面的背景。
一个模式是通常遵循的常用用法。如果其他人通常采用的模式对您的组织不起作用,并且您继续盲目地遵循它,那么您实际上是在采用反模式。
关于DevOps有很多神话。其中包括:
我建议您首先给出连续集成(CI)的一个小定义。这是一种开发实践,要求开发人员每天多次将代码集成到共享存储库中。然后,每个Check in都由一个自动化的Build进行验证,从而允许团队尽早发现问题。
我建议你解释一下你在以前的工作中是如何实施的。
对于这个答案,您应该关注持续集成的需求。我的建议是在你的回答中提到以下解释:
开发和测试的持续集成通过在完成所有开发之后取代传统的测试实践,提高了软件的质量,减少了交付所需的时间。它使开发团队能够很容易地在早期发现和定位问题,因为开发人员每天需要将代码集成到共享存储库中好几次(更频繁)。然后自动测试每个签入。
这里您必须提到持续集成的需求。你可以在回答中包括以下几点:
我将通过将作业目录从旧服务器复制到新服务器来完成此任务。有多种方法可以做到这一点;我在下面提到了这些方法:
你可以:
只需复制相应的作业目录,即可将作业从一个Jenkins安装移动到另一个安装。
通过用不同的名称克隆作业目录来复制现有作业。
通过重命名目录重命名现有作业。请注意,如果更改作业名称,则需要更改尝试调用重命名作业的任何其他作业。
这个问题的答案很直接。要创建备份,只需定期备份Jenkins的主目录。
它包含所有生成作业配置、从属节点配置和生成历史记录。
要创建Jenkins安装程序的备份,只需复制此目录。
也可以复制作业目录以克隆或复制作业或重命名目录。
我对这个问题的回答将首先提到如何创建Jenkins的Job。转到Jenkins首页,选择“new job”,然后选择“build a free style软件项目”。
然后你就可以了解这个自由式工作的要素:
下面,我提到了一些重要的插件:
这些插件,我觉得是最有用的插件。如果你想包含上面没有提到的任何其他插件,你也可以添加它们。但是,请确保您首先提到上述插件,然后添加自己的插件。
我保护Jenkins的方法如下所述。如果您有其他方法,请在下面的评论部分提及:
Jenkins是DevOps中广泛使用的许多流行工具之一。
我提到了一个通用流程,您可以在下面参考:
在DevOps中,开发人员需要将源代码中所做的所有更改提交到一个共享存储库。
像Jenkins这样的持续集成工具将在每次对代码进行更改时从这个共享存储库中提取代码,并将其部署到Selenium等工具所做的持续测试中,如下图所示。
通过这种方式,代码中的任何更改都会被不断地测试,这与传统方法不同
您可以这样回答这个问题:“持续测试允许立即测试代码中所做的任何更改。这避免了将“大爆炸”测试留到周期结束时产生的问题,例如发布延迟和质量问题。
通过这种方式,持续测试有助于更频繁和高质量的发布。”
持续测试的关键要素是:
这里提到您使用过的测试工具,并据此确定您的答案。我在下面提到了一个例子:
我一直致力于Selenium ,以确保高品质和更频繁的释放。
Selenium 的一些优点是:
问题:成功实施持续集成的因素有哪些?
问题:什么是持续测试?
回答:持续测试是DevOps中的另一个关键因素。DevOps工程师可能负责自己的测试,或者与QA、测试人员和UX开发人员一起管理团队。
无论哪种方式,都必须具备持续测试的知识。通过清楚地定义术语来展示它。
持续测试是一个过程,在这个过程中,测试是自动化的,以便快速有效地进行。这是DevOps文化转变的关键因素。
问题:为什么公司使用自动化测试来执行持续测试?
回答:自动化是DevOps中的一个重要因素。
自动化测试有助于减少可重复的手工测试,通过自动化测试可以节省大量的测试时间和资源,消除人为错误的可能性,降低测试成本。
问题:什么是持续交付(Continuous Delivery)?
持续交付是一个过程,在这个过程中,代码更改将自动生成、测试并准备发布到生产环境。
转载地址:http://ctvdi.baihongyu.com/