协作为世界带来了一些伟大的发明。七十年代后期,BenCohen和JerryGreenfield聚在一起,给我们带来了一份不断赠送的礼物——BenandJerry'sIceCream。他们一起将冰淇淋品种的标准提高到如此之高,以至于有些人仍在努力追赶。您可能想知道这与DevOps有什么关系。好吧,您可以将DevOps文化视为类似于Ben&Jerry's(比喻)的东西,并且DevOps文化通过简化产品开发和减少冗余流程来促进开发和运营之间的协作。我们喜欢劳动分工的旧概念,但这就是问题所在——有时劳动分工会阻碍生产力。它会导致延误,产生官僚作风,并扼杀创造力。另一方面,协作可以将人们聚集在一起并加快产品发布周期。更不用说,开发和运营团队之间的协作可以改善整体最终用户体验。这有什么不喜欢的?事实上,DevOps文化如此致力于协作,以至于“DevOps”一词是“开发”和“运营”这两个词的融合。我的意思是,正如JackSparrow所说-尽管所有IT人员都是聪明人,但他们在命名事物时并没有很好的想象力!DevOps这个词仍然有一定的吸引力,而且这种趋势不会很快消失。但在深入探讨什么可以帮助您加入DevOps工程师领域之前,让我们先了解一下DevOps文化的真正含义。什么是DevOps?TripwireInc.的联合创始人GeneKim说:“现在,DevOps更多的是一种哲学运动,而不是人们对它的描述或实践。”在IT领域似乎有很多这样的事情!从尝试定义计算机科学到尝试识别硬件错误和软件错误-计算机科学中无法精确定义的东西太多了。幸运的是,这并没有阻止人们尝试。以下是Azure对DevOps的定义:开发(Dev)和运维(Ops)的结合,DevOps是人、流程和技术的结合,持续为客户交付价值。DevOps对团队意味着什么?DevOps使以前孤立的角色(开发、IT运营、质量工程和安全)能够协调和协作,以生产更好、更可靠的产品。通过采用DevOps文化以及DevOps的实践和工具,团队可以更快地响应客户需求,对他们构建的应用程序充满信心,并更快地实现业务目标。-Azure.microsoft.comDevOps理念致力于打造以用户为中心的软件开发协作环境。这不仅有助于加快开发周期,还可以提高软件的整体质量。这可能就是为什么DevOps最好被描述为一种哲学,而不仅仅是一种用于快速跟踪开发的工具。DevOps如何运作?还记得丹泽尔·华盛顿在电影《记住泰坦》中是如何让他的攻防队员齐心协力的吗?将DevOps视为IT工程界的丹泽尔。从设计过程一直到生产发布和支持,DevOps是关于结合运营和开发工程师的专业知识。在某些DevOps模型下,开发和运营团队的合并还包括质量保证和安全团队的紧密集成。这种高度集成的结果是消除了由测试和部署等孤立活动引起的许多错误。DevOps团队使用实践来自动化流程和工具,以帮助更快、更可靠地操作和开发应用程序。感谢DevOps,团队的整体生产力和速度被推到了极限。这同时带来了更大的收入流,超出了公司的利润率。DevOps的好处与所有事物一样,DevOps自成立以来就受到了相当多的批评。例如,批评者经常将DevOps称为一把双刃剑,既可以使事情复杂化,也可以使事情简单化。我将列出它提供的一些好处,以此来判断DevOps的价值。速度速度绝对是DevOps必须觊觎的优势之一。让企业发展更快。更快的软件发布意味着公司可以更好地利用产品功能的价值。每个人都知道产品测试是必要且耗时的。借助DevOps,公司可以通过自动化集成和测试来加快交付和迭代过程。不仅如此,整个开发团队还可以密切关注产品的整个生命周期。这种持续的监控减少了团队花在查找和修复错误和错误上的时间。可靠性竞争激烈的市场的好处是质量最终将胜过数量。这就是为什么软件质量值得称赞的原因。质量和可靠性是DevOps可以带来的两个好处。DevOps有助于简化企业执行软件测试的方式——DevOps不是将测试作为SDLC的一部分,而是将其提升为整个SDLC的重要组成部分。另一方面,可靠性使系统能够在其环境限制内继续运行,从而增加企业无缝运行所需服务的整体连接性。改善协作的问题在于,在DevOps文化兴起之前,人们并不是没有意识到整合Dev、Ops和QA团队会为业务增加更多价值。此外,旧的软件开发方式并没有失去协作的主要元素。DevOps所做的是将部门之间的协作带到最前沿,并改变这些部门交互的方式。我们都知道DevOps是对Agile和Lean软件方法论的改进,所以DevOps自然而然地突出了运维相关的功能也就不足为奇了。在DevOps环境中,团队不是孤立的,也没有特定于部门的目标。在DevOps模型中协作的最大好处是关注点从团队效率转移到整体整体绩效——因为最终产品的责任由所有人共同承担。此外,开发、运营和质量保证团队之间增加的交互性在技术升级方面具有另一个无价的优势。想一想,当不同部门的成员定期一起工作时,他们会分享想法和专业知识。在某种程度上,他们在与他们的专业无关的所有事情上都接受了交叉培训。这就像你拥有蛋糕并与所有人分享——这就是拥有蛋糕的意义所在!安全安全对于IT来说是一件大事。如果您正在处理受损的数据保护,那么您的产品线是否以正常速度运行并不重要。好消息是,DevOps除了可以为公司提供的所有其他优势外,还可以帮助增强安全性。它通过将安全性作为一个单独的元素添加到开发和运营的组件中来实现这一点,因此DevOps可以转变为DevSecOps。在DevSecOps模型中,安全责任不再只属于一个团队,而是每个人都负责安全和防御。DevSecOps不仅有助于降低成本,还可以帮助您尽早检测并修复安全问题。为什么DevOps很重要?问为什么DevOps很重要就像问为什么越多越好。这就是方程式的工作原理。如果我列出的DevOps优势没有一个能让您信服,我可以再试一次。毫无疑问,世界已经改变。软件和互联网几乎以您能想到的所有方式改变了我们的生活。软件不再只是可有可无,而是每个企业不可或缺的一部分。公司使用软件应用程序和服务来吸引客户并简化他们开展业务的方式——无论是物流、运营还是通信。就软件而言,可能性是无限的。在一切都数字化的时代,软件开发是所有创新的关键。好的软件开发和伟大的软件开发之间的区别是DevOps!DevOps实践现在我们了解了什么是DevOps以及它的一些相关优势,让我们讨论一些DevOps实践。对DevOps方法的透彻理解将有助于消除您可能存在的任何挥之不去的疑虑。更不用说它会增加你在这方面的知识,并在面试中派上用场(我们稍后会讨论)。孤岛工作的持续集成团队造成的最大问题之一是在工作完成后合并代码。这不仅具有挑战性,而且非常耗时。在这方面,持续集成(CI)可以帮助您节省大量时间。开发人员通常使用具有持续集成功能的共享存储库(使用Git等版本控制系统)。持续集成服务可以同时对更改的代码构建和运行测试,这使得识别和处理错误变得更加容易。从长远来看,持续集成有助于提高开发人员的工作效率,更快地解决缺陷和错误,并实现更快的迭代。持续交付>进化通过一种工具塑造了这个星球上所有有意识的生命:错误。—WestworldRobertFord可能在《西部世界》中犯了一些大错误,但这个人确实有一些很棒的表演。他迈出了进化的重要一步。说到进化,许多人将持续交付(CD)视为CI的下一个进化,因为它进一步推进了自动化开发生命周期。CD仅与编译、测试和暂存环境有关。开发生命周期通过在此构建阶段后将更改的代码扩展到测试环境(或生产环境)来扩展CI。如果使用得当,CD可以通过在生产阶段之前跨多个维度进行全面测试来帮助开发人员微调更新。持续交付允许开发人员运行UI测试、集成测试和负载测试等测试。微服务微服务之于软件设计就像生产线之于制造。或者更准确地说,微服务是一种对整个系统都有影响的软件设计架构。微服务允许将多个应用程序放入一个大型代码库中。每个应用程序都包含多个微服务,并且每个服务都经过调整以擅长于一项特定功能。例如,让我们看看亚马逊是如何转向微服务的。曾几何时,当亚马逊还不是今天的庞然大物时,他们的API为他们提供了很好的服务。但随着Amazon的发展,对更好的API的需求也在增长。亚马逊决定使用微服务。现在,亚马逊已经用多项服务取代了之前存在问题的两层架构——例如订单处理服务、推荐服务、支付服务等。所有这些服务实际上都是具有单一业务功能的微型应用程序。基础设施即代码由于技术创新,服务器和关键基础设施已不再是十年前的样子。现在,您拥有像Google这样的云提供商,可以在庞大的数据仓库中为成千上万的客户管理业务基础设施。毫不奇怪,今天的工程师管理基础设施的方式与过去截然不同。而且,基础架构即代码(IaC)是DevOps环境可用于处理大规模变更的实践之一。在IaC下,基础设施使用软件开发技术和代码(如版本控制等)进行管理。借助云的API驱动模型,开发人员可以通过编程方式与基础设施进行交互。这使工程师能够像处理应用程序代码一样处理基础设施。这很重要,因为它允许您在测试代码时测试基础设施。使用IaC,您的系统管理员不必担心Web服务器无法连接到数据库等问题。更重要的是,如果企业有一个DevOps团队正在开发驱动自动化的基础设施,IaC可以帮助企业自动化配置和塑造抽象层,让开发者可以在不知道具体硬件、GPU、固件等的情况下继续构建服务.想象一下:梅赛德斯-奔驰、宝马和奥迪等大型汽车制造商都希望获得最新的车内体验技术,对吧?但如果这些公司想要提供新的服务和产品,他们将为路上的每个人配备不同的硬件。车并尝试进行调整。除非有这么好的一天,所有的硬件都统一起来,否则特定的设备会继续成为发展道路上的拦路虎。然而,强大的DevOps团队可以在这方面提供帮助,因为他们可以自动设置抽象层来自动化基础设施服务。通过解决云中的极端案例挑战,DevOps团队可以帮助自动化制造商降低成本,并减轻开发人员的负担和压力。配置管理DevOps模型中的配置管理(CM)对于促进持续集成很重要。无论我们的系统是托管在云端还是本地管理,正确实施配置都可以确保准确性、可追溯性和一致性。当系统管理员使用代码使操作系统自动化时,这会导致配置更改的标准化。这种标准化使开发人员免于浪费时间手动配置系统或系统应用程序。策略即代码受益于云编码基础架构和配置的组织具有能够大规模监控和强制合规性的额外优势。这种类型的自动化使组织能够有效地监控资源的变化并以分布式方式实施安全措施。监视和日志监视指标可以帮助组织了解应用程序和基础架构性能对最终用户体验的影响。对数据和日志进行分析和分类可以更好地了解问题的核心原因。考虑这种情况-如果要提供24/7全天候服务,则主动监控在更新频率方面变得更加重要。如果您正在进行代码发布,您就会知道您无法检查所有的盲点。为什么?因为并不是每个问题都会在UI中弹出。有像EthanHunt这样工作的错误,有一些会降低性能的错误,还有一些浪费资源的错误。另一方面,容器和实例的产生会让日志管理如同在针海中找针一样难受。要遍历的原始数据量巨大,很难找到有意义的信息。但是,如果您有监控系统,监控指标可用于提醒团队有关云服务或应用程序的任何类型的异常情况。此外,监控指标可以帮助组织了解应用程序和基础架构性能对最终用户体验的影响。日志记录可以帮助DevOps团队创建用户友好的产品或服务,或推动持续集成/交付。一起使用-监控和日志记录不仅可以帮助企业更好地了解其客户,还可以帮助企业更好地了解其自身的能力和规模。例如,几乎所有企业全年都从AWS、Azure或谷歌云等云提供商处租用一定数量的云空间。但是,如果一家公司不了解其容量会因旺季或假期而波动这一事实,或者如果其团队没有准备好通过创建配置层来应对起伏,那么事情可能会变得糟糕,例如网站崩溃.沟通与协作DevOps最重要的方面是沟通与协作。DevOps工具和(软件交付过程的)自动化专注于通过结合开发和运营的流程和效率来创建协作。在DevOps环境中,所有团队都参与制定与信息共享相关的文化规范,并通过项目跟踪系统、聊天应用程序等促进沟通。这可以加快开发人员之间的沟通速度,并有助于将组织的各个部分聚集在一起,以实现既定目标和项目。如何准备DevOps面试到目前为止,我们已经详细介绍了DevOps及其优势和实践。现在是时候深入了解寻找DevOps工作所需的信息了。DevOps工程师需要对SDLC有深入的了解。表面的理解是不够的,你需要理解为什么组织必须转向新的模式。因为俗话说,只有知道自己的目标,才知道怎么做。此外,如果您计划迁移到DevOps世界,那么您可以享受CI/CD管道提供的所有好处。我们谈论规划、构建、测试、部署和监控,换句话说,就是整个过程。公司一直在寻找与集体效率相关的DevOps工程师,他们致力于简化代码并充分利用自动化基础架构,例如节省云成本并减少程序瓶颈和正常运行时间。请记住,在DevOps环境中,每个人都对所有事情负责——做到最好并不是一件容易的事。考虑到软件开发周期,大多数人应该已经找到了DevOps职业路线图的第一步。如果您还没有,那也没关系,因为我们稍后会讨论它。DevOps职业路线图的步骤为什么职业路线图很重要?换句话说——如果您想了解职业发展如何在您的组织中取得成功,那么您需要做一些认真的计划。此外,我们中的大多数人都有我们想要努力实现的目标,如果你要朝着DevOps梦想的工作迈进,你需要专注于职业发展。在培养技能和职业道路方面,编程语言之于DevOps就像牛奶之于奶昔。我的意思是DevOps工程师也为自动化软件进行开发和编码。唯一的区别是DevOps工程师的工作水平高于老式系统管理员或90年代的Windows构建工程师。这就是为什么你需要掌握多种编程语言才能成为DevOps工程师。Python、JavaScript和Ruby是与Git和Docker等DevOps工具结合使用的3种最流行的语言。我并不是说您必须了解所有三种语言,但至少要了解一种。此外,尝试使用DevOps工具也无妨。DevOps工程师还应该对Linux命令界面有基本的了解。必备的Linux技能包括Linux命令(find、grep、awk、sed)、Linuxshell(bash或ksh),并且不要忘记网络命令(nslookup和netstat)。虽然Unix和Windows一样好,但如果你正在运行一个开源技术栈,它更有可能在Linux上运行。当然,要成为一名DevOps工程师,编程语言只是这个过程的第一步。如果您想要整个过程的完整分步演练,请单击此处。另外,如果你的Python技能有点生疏,你可以在这里查看。DevOps面试准备在继续之前,让我们假设每个人都知道成为DevOps工程师需要什么(点击链接),让我们继续讨论如何准备DevOps面试。我讨厌听到坏消息,但准备DevOps面试就像准备IT世界中任何其他类型的面试一样。你需要根据自己的技能能力复习。同时,你需要记住,仅仅因为你试图成为重视自动化的文化的一部分,并不意味着你应该像机器一样工作。面试官并不期望你什么都知道,为了避免面试过程中的压力,慢慢来。分解重要部分并逐一介绍每个主题。就像罗马不是一天建成的,你不能指望你的技能在几个小时内从零到一百。说到重要话题,你应该关注以下话题:数据结构和算法(逃不掉)系统设计Linux基础DevOps工具解析一旦你掌握了这些话题,你就可以开始准备问答环节了。任何公司的面试团队都经过培训,可以识别不同人完成工作的能力。没错,他们会竭尽全力为他们吸引最优秀的应聘者。所以在做任何事情之前,戴上你的Sherlock帽子并做一些研究,当然,不要太极端,只需访问公司的网站并了解更多关于他们的信息。尝试发现公司的目标和计划、他们的工作文化以及任何其他可以帮助您找出您遇到的问题的有趣花絮。相信我,深入挖掘可以走很长的路。您收集的信息可能会为您在面试中遇到的问题提供一些见解。但是,据统计,有50%的几率运气会降临在你身上,即你不会从调查活动中得到任何有用的信息。但这不是什么大问题。下面我准备了一份全面的问题列表,你可能会在DevOps面试中遇到这些问题。基于一段时间的研究和研究,以下问题可以作为备忘单。这些问题听起来很笼统,但它们非常接近您在面试中的实际期望。准备好提出发人深省且有影响力的面试官回答了吗?安全在您的DevOps流程中有多重要?你过去做了什么来提高安全意识?如果你一直关注安全方面,你就会知道安全在DevOps中有多么重要。由于DevOps自动化工作的步伐如此之快,如果您不够小心,可能会出现一些严重的安全错误。作为DevOps工程师,确保应用程序的安全是您的工作职责。你希望在未来接触到哪些技术?为什么?您是否采取了任何积极措施来参与这些技术?未来想参与哪些技术?为什么?如果你在DevOps面试中遇到这样的问题,那你就差点失业了。创新本身就是DevOps的内容之一,新兴技术也是如此。这就是为什么加入技术社区(例如Reddit或GitHub)并成为开源项目的一部分是个好主意。可以这么说,让您的手指紧贴变化的脉搏。告诉我们您如何为您的生产系统实施有效的监控解决方案。监控需要时间和耐心,而且很难。优秀的DevOps候选人应该知道这一点。在这种类型的回答中,您可以说很多关于如何在遵守SLA、休眠和不在发布周期中花费太多时间之间保持良好的平衡。通过谷歌搜索SRE监控策略并阅读该主题,开始为这些类型的问题做准备。您认为DevOps角色最具挑战性的方面是什么?这是一个自我描述的问题。这些自我认知问题主要是为了让您有机会公开谈论您所面临和克服的挑战。公司喜欢寻找能够迎接挑战的候选人。或者,您可以谈论与业务相关的挑战或技术困难。您如何描述持续集成以及如何实施它?是的,这是一个非常简单的问题。尝试用两种方式回答——解释持续集成的实践,然后解释与该软件相关的部署过程。你如何定义DevOps?这个问题太开放了,没有一个正确答案。这个问题的初衷是了解你对DevOps文化的看法。答案实际上取决于您对DevOps的关注点——它是关于协作、自动化还是速度?但是,无论是微服务还是其他,请确保从您的角度考虑DevOps中的一些最新趋势。此外(这是一个提示)DevOps非常注重协作,但其主要目标是简化开发周期,因此DevOps主要是关于时间效率。您如何看待“基础架构即代码”以及IaC的理念如何融入DevOps文化?还记得我们讨论IaC时说它允许工程师在测试代码时测试基础设施吗?IaC是提高公司整体自动化程度的战略关键——桥梁以最少的人为干预管理基础设施。此外,根据职位描述和组织,您可以回答更多有关基础架构自动化工具和容器技术的问题。如何判断你自己和你的DevOps团队成功的DevOps文化是关于整体改进的。团队中的每个人都在努力使生产和部署过程更加安全、高效和自动化。这意味着没有什么是完美的——总有改进的余地。作为DevOps工程师,您的工作是推动您自己和您的团队不断做得更好。而且,这就是为什么您需要可评估或可衡量的目标来衡量成功的原因。否则,您将不知道如何衡量您的成功。为什么我们需要DevOps?很简单——公司面临着从不断增长的用户到提供更好、更快的应用程序的需求转变。此外,DevOps强调自动化和协作,这可以帮助企业以具有成本效益的方式快速满足需求。DevOps工程师在敏捷开发方面的职责是什么?DevOps工程师需要与敏捷开发团队密切合作,以促进必要的环境来支持持续集成、持续交付和自动化测试等实践。DevOps工程师必须与开发人员协作才能使整个DevOps机器无缝运行。我们提供了DevOps面试问题的完整列表,并承诺提供有关DevOps文化的丰富信息。冒着将这篇文章与托尔斯泰的?平行的风险,我只想在结束前提及一个小细节。就像我经常告诉人们的那样,当你走进面试室时,在面试结束时向面试官提出一系列问题很重要。利用这个机会获得有关工作和公司的有价值的信息。你能想象自己在这样的地方工作吗?如果没有,那么整个过程将毫无意义。你的职业取决于你在特定领域的表现和贡献。选择一份符合您的兴趣和目标的工作就成功了一半。选择一份您真正感兴趣并为之兴奋的工作,让这份热情驱使您前进。原标题:2020年如何成为一名DevOps工程师
