DevOps

Hire the Top 3% of 自由开发运维工程师

Toptal是面向顶级DevOps工程师和开发人员的市场. 顶级公司和初创公司选择Toptal DevOps专家来完成他们的关键任务软件项目.

无风险试用,满意才付款.

Clients Rate Toptal DevOps Engineers4.5 / 5.0截止到2024年1月6日,平均有3799条评论

雇佣自由的DevOps工程师

Dmitry Kireev

自由开发工程师

United StatesToptal Member Since November 21, 2019

Dmitry是一名云架构师和站点可靠性工程师,拥有超过十年的丰富专业经验,严格遵循DevOps方法. 他从零开始为现代云系统设计和构建了多个平台无关的基础设施. 德米特里拥有在大规模环境中实际操作的良好记录. 他还精通IaC、自动化和脚本,以及监控和可观察性.

Show More

Sagi Kovaliov

自由开发工程师

United StatesToptal Member Since March 30, 2017

Sagi is a top-performing, 微软认证高级Azure DevOps工程师,拥有十年扎实的DevOps实践经验, programming, scripting, 商业智能. Sagi专注于使用Azure DevOps和Azure云平台构建和实现DevOps流程. 通过利用他在多个应用程序开发领域获得的经验, Sagi已经成为市场上最杰出的专家之一.

Show More

Arthur Lorotte de Banes

自由开发工程师

FranceToptal Member Since February 21, 2018

In 2012, 亚瑟获得了计算机工程硕士学位,但他很快意识到他的真正方向是系统管理. 他的编程背景帮助他实现了大部分任务的自动化,他最终选择了云计算,因为它给了他更多的可能性. Arthur是一名全栈DevOps,他拥有特别强大的aws开发技能——他的众多认证可以证明这一点.

Show More

Keidrych Oates Anton

自由开发工程师

AustraliaToptal Member Since June 26, 2019

Keidrych是一名云架构师,他指导组织通过多/多云原生计算基础(CNCF)技术的泥潭,从而使他们的技术基础对所有人都是安全的, reliable for customers, 而且经济效益高, 利用焦土能力实现对工厂规模架构的零生产影响. Keidrych believes trusted technology serves humanity; a 5% increase in internet or cyberspace trust results in a $3,人均GDP增长1000多万.

Show More

Ryan Cocks

自由开发工程师

United KingdomToptal Member Since July 15, 2019

Ryan是一位经验丰富的可靠和可扩展的生产云系统软件工程师. He specializes in DevOps, microservices, 设计应用程序, 以及应用级的可观察性. 他在云基础设施和后端工作方面有扎实的背景. 他有很好的软技能,在各种规模的团队中工作过. Ryan在理解需求背后的业务需求方面具有出色的能力.

Show More

Mike Stankavich

自由开发工程师

United StatesToptal Member Since December 27, 2013

Mike是一名资深数据工程师和自由架构师,在开发堆栈方面经验丰富. 他拥有丰富的云和基础设施经验, 获得了微软的多项认证, ISC2, Powersoft, and more. 他目前在RDBMS或NoSQL平台上为web应用程序大规模构建数据后端.

Show More

费尔南多·尤金尼奥·马科斯·特谢拉

自由开发工程师

CanadaToptal Member Since May 10, 2017

Fernando是一名技术爱好者,拥有十多年的IT经验, 其中7个是在aws构建的环境中. 总是被可度量的指标和大价值的努力所驱动, 他是一个多面手,有很强的能力,专注于综合上下文,当问题出现和需要解决方案时,他可以深入研究特定的主题. 费尔南多认为,以身作则和用心指导是增加对组织影响的唯一途径.

Show More

Fredrik Håård

自由开发工程师

SwedenToptal Member Since July 14, 2014

Fredrik是一名拥有20多年承包和创业经验的开发人员. 他专门从事后端产品开发, lifecycle maintenance, 确保数据处理和操作的安全性, 从收费系统中的集群实现到一人创业公司的全栈产品开发.

Show More

现在注册以查看更多资料.

Start Hiring
经常成对

Get Additional Expertise

我们的客户经常将这些额外的服务与我们的自由DevOps工程师配对.

A Hiring Guide

招聘优秀的开发运维工程师指南

DevOps就像全栈开发:涵盖开发和系统操作, 它涵盖了非常广泛的技术领域. DevOps工程师可以期望了解从临时SQL数据挖掘到通过Bash脚本自动化Docker的所有内容. 用这个方便的招聘指南有效地招聘和面试DevOps工程师.

Read Hiring Guide

DevOps Hiring Resources

更多资源来雇用开发运维工程师

Job Description TemplateInterview QuestionsJobs
Trustpilot
THE TOPTAL ADVANTAGE

在无风险试用后,98%的Toptal客户选择雇用我们的人才.

Toptal的筛选和匹配过程确保卓越的人才与您的精确需求相匹配.

Start Hiring
Toptal in the press

... 允许公司快速组建具有特定项目所需技能的团队.

尽管对程序员的需求在不断增加,但Toptal对自己近乎常春藤联盟级别的审查感到自豪.

Our clients
为游戏制作应用程序
Conor Kenney
为游戏制作应用程序
构建一个跨平台的应用程序,在全球范围内使用
Thierry Jakicevic
构建一个跨平台的应用程序,在全球范围内使用
引领数字化转型
Elmar Platzer
引领数字化转型
挖掘实时数据将改变行业的游戏规则
挖掘实时数据将改变行业的游戏规则
Testimonials

没有Toptal就不会有Tripcents. Toptal Projects使我们能够与产品经理一起快速发展我们的基金会, lead developer, and senior designer. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. Toptal团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们像其他人一样贡献并拥有开发的所有权. 我们将继续使用Toptal. 作为一家初创公司,它们是我们的秘密武器.

Brantley Pace, CEO & Co-Founder

Tripcents

我对我们与Toptal的合作经验非常满意. 和我一起工作的专业人员在几个小时内就和我通了电话. 在和他讨论了我的项目后,我知道他就是我想要的候选人. 我立即雇用了他,他没有浪费时间就完成了我的项目, 甚至通过添加一些很棒的设计元素来增加我们的整体外观.

Paul Fenley, Director

K Dunn & Associates

与我合作的开发者都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. Now it isn't.

Ryan Rockefeller, CEO

Radeeus

Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, from Day 1, 沉浸在我们的行业中, 与我们的团队无缝融合, understood our vision, 并产生了一流的结果. Toptal使与高级开发人员和程序员的联系变得非常容易.

Jason Kulik, Co-Founder

ProHatch

作为一家资源有限的小公司,我们不能犯代价高昂的错误. Toptal为我们提供了一位经验丰富的程序员,他能够立即投入工作并开始做出贡献. 这是一次很棒的经历,我们会马上再来一次.

斯图尔特·波克尼校长

现场专用软件解决方案

我们使用Toptal聘请了一位具有丰富的Amazon Web Services经验的开发人员. 我们面试了四位候选人,其中一位非常符合我们的要求. 这个过程迅速而有效.

Abner Guzmán Rivera,首席技术官和首席科学家

Photo Kharma

Sergio是一个很棒的开发者. 一流,反应迅速,工作效率高.

Dennis Baldwin,首席技术专家和联合创始人

PriceBlink

和Marcin一起工作是一种乐趣. He is competent, professional, flexible, 并且非常迅速地理解需要什么以及如何实现它.

André Fischer, CTO

POSTIFY

我们需要一位能立即开始我们项目的专业工程师. 西马纳斯的工作超出了我们的预期. 不需要采访和追踪专家开发人员是一种非常节省时间的方法,并且让每个人都对我们选择切换平台以使用更健壮的语言感到更舒服. Toptal使这一过程变得简单方便. Toptal现在是我们寻求专家级帮助的首选之地.

Derek Minor, Web开发高级副总裁

Networld Media Group

Toptal的开发人员和架构师都非常专业,也很容易共事. 他们提供的解决方案价格合理,质量上乘,缩短了我们的发行时间. Thanks again, Toptal.

Jeremy Wessels, CEO

Kognosi

我们与Toptal合作非常愉快. 他们为我们的应用程序找到了完美的开发人员,让整个过程变得非常简单. 它也很容易超出最初的时间框架, 我们可以在整个项目中保持同一个承包商. 我们强烈推荐Toptal,因为它可以快速无缝地找到高素质的人才.

Ryan Morrissey, CTO

应用商业技术有限责任公司

我对Toptal印象深刻. 我们的开发人员每天都和我交流,他是一个非常强大的程序员. 他是一个真正的专业人士,他的工作非常出色. 5 stars for Toptal.

Pietro Casoar, CEO

Ronin Play Pty Ltd

与Toptal合作是一次很棒的经历. Prior to using them, 我花了相当多的时间面试其他自由职业者,但没有找到我需要的. 在与Toptal合作后,他们在几天内就为我找到了合适的开发者. 与我一起工作的开发人员不仅提供高质量的代码, 但他也提出了一些我没有想到的建议. 我很清楚,阿莫里知道自己在做什么. Highly recommended!

George Cheng, CEO

Bulavard, Inc.

作为一名Toptal合格的前端开发人员,我还经营着自己的咨询业务. 当客户来找我帮忙填补他们团队中的关键角色时, Toptal是我唯一愿意推荐的地方. Toptal的所有候选人都是精英中的精英. Toptal是我在近5年的专业在线工作中发现的性价比最高的网站.

Ethan Brooks, CTO

Langlotz Patent & Trademark Works, Inc.

In Higgle's early days, 我们需要一流的开发者, at affordable rates, in a timely fashion. Toptal delivered!

Lara Aldag, CEO

Higgle

Toptal能让你轻松找到合适的人选,让你放心,因为他们有能力. 我肯定会向任何寻找高技能开发人员的人推荐他们的服务.

Michael Gluckman,数据经理

Mxit

Toptal将我们的项目与最优秀的开发人员快速匹配的能力非常出色. 开发人员已经成为我们团队的一部分, 我对他们每个人所表现出的敬业精神感到惊讶. 对于那些希望与最好的工程师远程工作的人来说,没有比Toptal更好的了.

Laurent Alis, Founder

Livepress

Toptal让寻找合格的工程师变得轻而易举. 我们需要一个有经验的ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. 在做出我们的选择后,工程师立即在线并开始工作. 这比我们自己发现和审查候选人要快得多,也容易得多.

Jeff Kelly, Co-Founder

Concerted Solutions

我们需要一些Scala的短期工作,Toptal在24小时内为我们找到了一位优秀的开发人员. 这在其他平台上是不可能实现的.

Franco Arda, Co-Founder

WhatAdsWork.com

Toptal为快速发展和规模化的企业提供不妥协的解决方案. 我们通过Toptal签约的每一位工程师都迅速融入了我们的团队,并在保持惊人的开发速度的同时,将他们的工作保持在最高的质量标准.

Greg Kimball,联合创始人

nifti.com

如何通过Toptal招聘DevOps工程师

1

与我们的行业专家交谈

Toptal的工程总监将与您一起了解您的目标, technical needs, and team dynamics.
2

与精心挑选的人才一起工作

几天之内,我们将为您的项目介绍合适的DevOps工程师. 平均匹配时间在24小时以下.
3

绝对合适

与你的新DevOps工程师一起工作一段试用期(满意才付薪水), 在订婚前确保他们是合适的人选.

寻找拥有相关技能的专家

在我们的人才网络中访问大量熟练的开发人员,并在48小时内雇用最优秀的3%.

FAQs

  • total DevOps工程师有何不同?

    At Toptal, 我们彻底筛选我们的DevOps工程师,以确保我们只为您匹配最高水平的人才. Of the more than 200,每年有5000人申请加入Toptal网络, 只有不到3%的人能达标. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, technical needs, and team dynamics. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.

  • 我能在48小时内通过Toptal招聘到DevOps工程师吗?

    取决于可用性和进度, 你可以在注册后48小时内开始与DevOps工程师一起工作.

  • Toptal DevOps工程师的无风险试用期是多长?

    我们确保您和您的DevOps工程师之间的每次约定都从长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. From there, we can either part ways, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, no-risk trial.

Share
DevOps

如何聘请优秀的开发运维工程师

什么是DevOps工程师? Clearly, 这个问题没有一个放之四海而皆通的答案:浏览几家公司的DevOps工程师职位空缺就足以说明这个角色的需求是多么多样化.

DevOps专家应该能够将他们的技能融入到公司IT流程的独特机制中. 候选人通常需要精通部署自动化和网络, 了解软件授权, 在硬件和软件方面要明智, 使用多种操作系统, 用各种语言编写脚本来构建报告和自动执行任务. 他们必须不断地与队友沟通,以便确定任务的优先级,并擅长于记录和演示他们创建的工具.

在一个人身上评估这么多领域的技术知识和沟通技巧是很棘手的. 这就是本指南的意义所在:我们将告诉您,为了成功聘请DevOps专家,您需要知道什么, 给你一些DevOps面试问题的例子, 并强调应聘者应该展示的技能.

让我们从现在每个DevOps专家都应该熟悉的一个基本概念开始.

虚拟化和沙箱

对所有DevOps候选人来说,理解虚拟化是必不可少的. DevOps行业中的许多当代思想和策略都是建立在它的基础之上的, 并且在许多公司中发挥作用,无论其结构或目的如何.

虚拟化背后的思想是抽象底层硬件或软件,使事物更少依赖,更孤立. 它实际上是一个广泛的概念,适用于服务器, networks, storage, desktops, and even applications.

For example, 安装了所有服务和工具的服务器操作系统(OS)可以像在公司的真实计算机上一样配置, bare-metal server, 而是放在虚拟机中, or VM. 然后,vm可以在开发人员笔记本电脑上启动,以模仿服务器环境中服务和工具之间相同的真实结构和关系, 即使开发人员使用不同的笔记本电脑进行工作. 如今,有了像Vagrant这样的虚拟化工具和轻量级容器管理系统,这变得特别容易 Docker.

另一个例子是如何将具有多个资源的复杂网络隐藏在几个虚拟层后面, 然后划分为可管理的部分.

存储虚拟化也是如此:多个物理存储设备实际上“连接”在一起,看起来像单个存储单元, 然后它们可以根据公司的需要进一步划分.

Finally, 应用程序虚拟化将允许相同的应用程序封装在多个操作系统上运行.

一定要问应聘者,他们是如何在自己完成的实施中看到这些好处的.

应聘者能够解释使用虚拟化的主要好处是很重要的:

  • 更好地控制IT资源
  • 更快地设置和配置IT基础设施
  • Easier sandboxing
  • Cheaper experimenting
  • 更快的释放和恢复时间
  • 更好的隔离,从而更高的安全性
  • 降低变化带来的风险
  • 更好的软件和服务的可测试性

虽然可能不需要候选人列出所有的点, 理解为什么要使用虚拟化以及在哪里可以实现虚拟化是非常重要的. Without it, DevOps工程师的可能性非常有限,无法提出有效的解决方案.

Besides the why, the how 组件可以让你了解他们是否是一个真正有技能的人——通过询问候选人他们是如何在他们自己完成的实现中看到这些好处的,确保其中的一些要点是可以证明的.

虚拟化带来了廉价和高效 sandboxing. 沙盒的意思是把一个软件, like a running program, in an isolated box, 并控制它可以访问什么资源以及何时访问.

沙箱对安全性和测试都非常有用. 说到安全, 这个过程可以阻止软件漏洞或系统故障的传播. 在测试中,在将软件发布到运行服务器之前对其进行测试是一种很好的方法. In a sandbox, 您可以模拟各种极端情况并测试各种用户输入, 查看程序在被多个并发请求过载时的执行情况, 自动化质量保证测试, and so on.

At the end of the day, 虚拟化和沙箱使您能够更快地进行开发, 更频繁、更无缝地推出新功能, 并适应不断变化的公司进程. 最终,他们通过减少许多不可避免的风险来节省资金, 通过自动化大量的日常流程.

有用的术语包括虚拟机, 主机和客户操作系统, container, and hypervisor. 候选人应该能够解释这些.

面试问题示例:

  • 有哪些工具可以实现虚拟化? 今天市场上的主要参与者是什么?
  • 如果不使用虚拟化,什么是不可能的? 后果是什么??
  • VMWare和Docker有什么区别?
  • 您如何标准化开发人员的环境,以便他们使用软件就像在您的实时服务器上一样?
  • 如何才能更频繁地发布,并且能够在几分钟内而不是几小时内回滚?
  • 版本控制系统(vcse)如何.g. Git)与虚拟化一起工作?

上面列出的最后一个问题尤为重要. 这里的想法是VM配置应该与项目代码一起在VCS中跟踪. 通过这种方式,可以为当时提交的任何给定代码状态重现虚拟机的正确配置. 跟踪应用程序代码及其运行系统的配置,可以重现与VM配置和操作系统版本相关的错误, packages, and libraries.

现在我们已经检查了一些基本的东西, 让我们看看DevOps专家应该如何理解当今的硬件, 包括云计算.

云技术和硬件

在许多情况下,为了经营IT业务而拥有硬件的日子已经一去不复返了. Nowadays, 亚马逊(Amazon)和谷歌(Google)等公司维护硬件并将其出租, 按月付款,这只是原始硬件成本的一小部分.

租用硬件而不是购买硬件是当今许多企业普遍采用的一种方式. 通过将硬件设置和维护任务外包给专门的团队,它消除了大量的硬件设置和维护任务. 这也加快了创业的速度, 或者构建一个概念验证产品, 或者为客户提供即时专用的试用设置. 它还允许您直接关注业务逻辑,而不是花费时间设置自己的硬件.

公司甚至可以建立自己的系统, internal cloud, 通过将他们的硬件连接到一个网络中,并在其上进行抽象. 混合主机托管-云解决方案也很流行. 无论如何,云计算将出现在DevOps专家的日常工作中. 这就是为什么评估他们的相关知识和技能将帮助你确保你的公司不会错过速度, flexibility, 以及云计算提供的规模.

首先,向应聘者询问云计算带来的好处,比如:

  • 降低安装和维护成本
  • 能够支付你只使用,并添加更多的资源,因为你去
  • 由供应商自动更新软件
  • Robust disaster recovery

尽管这个问题可能不那么实际,而更有哲理, 当人们对技术及其目标有一个大致的了解时,这总是好的. If this is the case, 他们可以在需要的时候学得更快, and, 有更广泛的理解, 现有技术在您的业务中是否会有更智能的应用.

在将云计算引入公司的it基础设施方面,情况有所不同 service models 由供应商提出. 您的DevOps候选人是否对标准模型之间的差异说了几句话, and give examples:

  • 基础设施即服务(IaaS)
  • 平台即服务(PaaS)
  • 软件即服务(SaaS)

同样值得询问的是他们使用这些模型的经验.

接下来,在这些模型的上下文中讨论您的业务流程. For example, 如果你的公司频繁发送电子邮件, 它可以使用像Amazon Simple Email Service这样的SaaS解决方案吗, 还是应该使用第三方IaaS建立自己的托管服务? 会有什么不同呢? 两者的局限性是什么? 从一种模式过渡到另一种模式有多容易? 会有锁定吗?

另一个例子是实施内部项目管理或公共用户支持系统. In both cases, 市场上有许多可用的解决方案——你很少想从头开始构建自己的解决方案. 其中一些由提供商托管和维护, DevOps将参与将其与团队使用的其他软件集成. 其他的可以下载, installed, configured, and updated regularly, 这也取决于DevOps团队的能力.

因此,你应该期望应聘者能毫不费力地回答以下问题:

  • 什么是云服务API,存在哪些定价模型,以及什么是API使用配额?
  • IaaS、PaaS、SaaS哪一个适用于我们公司? (这意味着候选人在提交申请之前已经了解了你的公司及其目标.)
  • 租用硬件而不是拥有硬件的风险是什么?
  • 使用自己的硬件有什么风险,什么时候它是唯一可用的选择? (提示:不可靠的互联网服务就是一个典型的例子.)
  • 在这种情况下,购买自己的硬件会给公司带来好处?
  • 哪些遵从性问题与使用云服务有关, 以及如何检查给定的服务是否符合公司策略, standards, 以及现有的认证?

因为随着时间的推移,DevOps可能会改变公司的基础设施,所以让他们了解这一点非常重要 标准遵从性和认证. 如果你的产品或服务在公司的居住国受到监管, DevOps需要与您的信息安全工程师合作,维护现有的合规性或申请新的合规性. If this is the case, 让应聘者谈谈他们在这个领域的经验:他们是如何完成合规的,以及他们在这个过程中扮演了什么角色.

下面是一个快速实践任务的想法,它将帮助您评估DevOps候选人在遵从性和认证方面的知识. 如果你以前申请过,你将需要填写很多申请表. 从其中一个问题中摘录一段,去掉所有的答案,然后交给候选人. Let them:

  1. 解释问题的意思,然后
  2. 告诉你他们会问基础设施什么问题, security, 以及开发部门为了获得所需的信息,在表格中填写问题.

即使你有一个专门的合规专家, DevOps很可能会大量参与法规遵从性应用和验证. 如果DevOps候选人缺乏对这些方面的理解,那么您将面临合规状态的风险.

Back to the hardware 话题,了解它是有回报的. 释放软件全部潜力的方法之一是使用正确的硬件,并以正确的方式将其组合起来. 例如,看看Stack Overflow 在2013年提供了1.5亿个HTTP请求 and 210 million in 2016. In the hardware list, 你会注意到2013年使用了四个Microsoft SQL server, 到2016年仍然只有4家. 数据库服务器的数量没有增加,只有两台服务器进行了升级. 这意味着在幕后有一个聪明的计划. 它不仅可以直接节省硬件成本, 还有硬件安装, colocation, and maintenance.

So, 这取决于您公司的业务流程, 你可能想问DevOps候选人以下几个问题:

  • 哪些类型的软件需要更多以下内容?
    • 处理能力(CPU速度)
    • cpu或核心(用于并行化)
    • GPUs
    • Computer memory
  • 给出一个硬件设置中冗余的例子. (您可以使用Stack Overflow文章作为指南来熟悉一个可能的用例.)
  • 什么是负载平衡,什么时候需要负载平衡?

您的公司可能没有硬件,并将云服务用于整个IT基础设施, 但要做出最好的选择, 重要的是,DevOps开发人员可以测量硬件性能,并了解如何调整软件以使其与给定的硬件最佳配合. 如果您没有聘请专门的服务器管理员,那么这项技能尤为重要.


Next, 我们将看到你在每个DevOps工作中都会看到的东西:在测试和部署软件时消除常规的重复性手工工作.

构建、测试和部署自动化

在过去的十年中,由于新的开发人员工具的创建和许多过程自动化的引入,软件开发过程发生了很大的变化——尤其是在构建过程中, testing, and deployment. 这通常被称为“持续交付”(CD)。, 但在你开始面试DevOps专家之前,了解DevOps和CD之间的关系是值得的.

With CD, 团队倾向于更频繁地发布新功能, 把大任务分成小任务,分阶段完成, 通过向有限数量的客户推广新想法来测试新想法, 并且在新版本中发现问题时可以轻松回滚. 在DevOps开发人员的帮助下,所有这些都成为可能,并使企业更加灵活,更快地适应不断变化的市场,压力更小.

DevOps工程师在设置、调整和维护CD方面发挥着关键作用. Here’s how it works.

Step 1. DevOps团队咨询其他团队,以收集有关如何开发的信息, testing, 部署流程已经设置好了.

Step 2. DevOps团队学习计划的特性, 评估公司的成长速度, 估算当前基础设施费用的范围, 找出公司中最耗时的任务——所有这些都是影响哪些任务应该自动化和改进的因素, and in which order. 尽管本节主要关注自动化测试和部署, 这两者通常是所有其他过程的组成部分,并影响它们. 所以更多的技术栈研究, 可以对测试和部署自动化做出更好的决策.

Step 3. DevOps工程师以这样一种方式规划和优先处理自动化实现任务,即首先处理最关键和/或最昂贵的流程. At this stage, 通常会与其他团队的领导进行大量讨论,以便为每个人充分利用测试/部署自动化.

Step 4. 自动化是分阶段实现的.

对于已经有持续交付的公司, 可能只是一个待办事项列表,等待新的DevOps员工接手. 然而,通过上述步骤仍然是有益的——当DevOps工程师了解了整体设置并可以在执行计划的任务时提出自动化改进建议时,这不会有什么坏处.

当涉及到自动化构建、测试和部署时,许多工具和概念都在起作用. 在我们探讨以下类别时,有必要考虑一下哪些是与候选人最相关的.

Unit Tests

单元测试是一种专门开发的脚本,用于测试应用程序的最小可测试部分(单元)以确保其正常运行.

通常情况下,单元测试是自动化的. DevOps团队的工作是将单元测试运行器集成到开发中使用的虚拟机以及CI服务器中,以便测试可以被使用 钩入自动运行 对于每个新版本发布之前,或由开发人员或测试人员手动触发. 还应该配置报告,以便开发人员能够立即发现他们的新代码是否破坏了现有的功能.

Furthermore, 对于需要定期运行大量单元测试的大型应用程序, DevOps开发人员通常会设置专用的持续集成服务器,在服务器上并行运行单元测试,而开发人员则在开发环境中继续编写代码. Without such CI servers, 当在单个开发人员笔记本电脑上运行时, 单元测试自动化有时需要几个小时, if not longer.

有各种类型的测试:

  • 功能测试:是否所有关键的应用功能工作?
  • 兼容性测试:应用程序在各种环境中是否保持其功能? For instance, web应用程序应该在所有支持的浏览器中运行, 支持多个数据库的应用程序应该始终与所有数据库一起工作, 驱动程序应该在所有支持的硬件型号上正常工作, and so on.
  • 性能测试:流量或其他类型的负载如何影响应用程序的性能?
  • 安全测试:攻击能否暴露应用安全机制的缺陷, 这样受保护的数据就可以在未经授权的情况下被访问?
  • 可用性测试:应用程序的用户能否在不阅读文档的情况下直观地理解如何使用它? 它像预期的那样工作吗?

上面的一些测试可以进一步加入到“冒烟测试”(也称为验收测试或完整性测试)中,即在发布之前执行的测试,以显示应用程序是否符合特定标准.

用于构建自动化的DevOps工具

在发布新版本之前, 源代码必须被构建或至少打包, 取决于你的技术栈. 对于c#或Java等静态类型编程语言, 构建意味着将源代码编译成 executable 它可以由计算机运行. 对于像PHP、Python和JavaScript这样的解释性语言,可能不需要编译 per se, but e.g. JavaScript文件被加入到组中并被缩小, SASS文件被编译成CSS文件, 带有翻译的语言文件也会被构建, and images are minified.

DevOps开发人员通常会使用构建自动化软件和 这些软件的列表 is huge. 对DevOps候选人来说,一个好的问题是让他们谈谈他们使用了哪些工具来解决哪些任务. 这些工具可以分为两类:

  1. 特定于编程语言的工具. 例如,Rake是一种基于ruby的构建工具,而Apache Ant则流行于Java.
  2. 特定于操作系统的工具:FinalBuilder是针对Windows软件开发人员的,基于make的工具(如 GNU make and mk)适用于Linux/Unix和Mac OS.

重要的是,将在您的团队中工作的DevOps工程师熟悉特定于项目中使用的操作系统和编程语言的构建工具.

持续集成、交付和部署

人们经常混淆这三个术语,所以让我们先快速浏览一下:

Continuous integration 帮助保持主线(项目代码的基本分支在Git这样的版本控制系统中被跟踪)是最新的. 这是通过将所有开发人员的工作副本合并到主线中来实现的.e. 每周几次(或更多次)vs每次发布一次.

Continuous delivery 确保经常生成应用程序的可部署工作状态.e. by small increments. 这样,您就有信心在业务准备就绪时将应用程序部署到生产环境中.

Continuous deployment 是将应用投入生产的过程吗. 集成和交付的连续性是部署阶段的先决条件.

由于自动化,这三个实践现在都是可能的 由DevOps工程师实现. 这三种方法都需要脚本技能和对相应工具的熟悉. 这就是为什么你应该在面试中提到这个话题.

在你和候选人讨论之前, 从开发者那里了解这一点很重要, system administrators, 和其他技术团队了解你们公司的主题状态. 如果任何一个积分, delivery, 或者部署方案已经就位, 记下工作中的工具和脚本语言,与你的候选人讨论. If none are implemented, 询问应聘者是否在项目中使用过与你相同的语言和框架栈.

应聘者是否精通你列出的每一项技术并不重要. 这是因为针对不同的情况有许多不同的工具, 最主要的一点是理解他们的目的, 以及能够学习它们并开始快速使用它们. 具有足够经验的顾问通常能够在几天内学习新工具.

Monitoring

因为有那么多的服务器、服务、微服务、数据库等等. 形成应用程序的构建块, 不持续而严格地监视它们的可操作性和可用性是有风险的.

当然,DevOps工程师必须能够自己设置监控. 但同样重要的是,他们可以:

  • 分析失败,了解失败的原因
  • 修复故障并恢复功能
  • 采取措施防止将来发生此类故障
  • 在内部报告中概述所有细节,并通过注释改进内部文件, tips, 以及与特定问题相关的程序
  • 建议产品团队改进导致问题的代码
  • 帮助支持团队在博客文章和支持单中用简单的语言解释问题

请DevOps候选人谈谈他们是如何设置监控并处理一些故障的. From their story, 你将能够确定他们是否熟悉上面概述的要点.

你还应该问应聘者以下问题:

  • 他们用了什么软件来监控啊
  • 他们是否使用第三方服务(如Pingdom)或开源解决方案(如Zabbix和Nagios), and
  • 他们如何将服务/解决方案连接到应用程序(例如.g. 通过API,嵌入JavaScript代码,安装和配置补充服务器包等.)

Finally, 当涉及到性能和故障分析时, 能够配置日志记录和读取日志输出是有效处理故障的关键.

在面试DevOps候选人之前,您需要熟悉以下与监控相关的术语:

  • Server uptime monitoring. 这意味着测试公司网站、应用程序、服务器和服务的可用性.
  • Uptime test locations. 从不同的位置监控网站的可用性是有意义的, 尤其是那些网站用户最多的地方.
  • Status pages. 这些显示当前和历史数据的网站或服务的正常运行时间. 可能有公共和私有状态页——后者通常面向产品团队, 服务器管理员团队, and other engineers, 并包括用于管理整个基础设施的全面监控细节和统计数据. 建立这样的页面通常是DevOps专家的责任.
  • Page speed. 对于网页内容,加载缓慢的页面意味着 lower Google rank and 转换和销售损失.
  • Alerting. I.e. 当事件发生时,通过各种渠道通知责任方. 深思熟虑的提醒会减少你解决问题的时间.
  • Log rotation. 这仅仅意味着按时间表归档日期已过的日志文件.
  • Log server. 这是一台专用服务器,用于收集和存储所有日志. 拥有一个简化了搜索日志数据的过程, 并允许您对其进行过滤以快速审核系统.

关于页面速度优化的一个好问题是:DevOps专家可以采取什么措施来优化页面速度? 的确,许多改进是由开发人员在代码内部完成的,但也有一些DevOps工程师可以做的:

  • 在web服务器级别启用压缩
  • 通过微调web服务器(如Apache和Nginx)和负载平衡器来改善服务器响应时间
  • 启用内容交付网络(CDN)的使用

我们上面讨论的通常叫做 性能和可用性监控. 但监控还有另一个方面: Security monitoring. 其理念是必须跟踪用户和程序的所有操作和活动.

不管你的客户是大是小, 贵公司对您存储在服务器上的个人数据的保密性和安全性负责. The same goes for:

  • 智力资产,比如应用程序的源代码. 您希望安全地存储它,而不泄漏给竞争对手.
  • 公司邮件和其他沟通渠道,包括用户支持. 你不希望公司里的每个人都能访问这些文件.
  • 内部文件,如竞争对手分析、发展战略、财务报告等. 限制和控制对它们的访问具有重要的战略意义.

Therefore, 观察和记录公司各级基础设施的所有操作和活动是至关重要的, 从网络到应用程序再到员工.

(我们将在文章中详细介绍安全性 资讯科技保安最佳实务部分 below.)

脚本和编程技能

您不希望DevOps工程师在拥有5亿条记录的数据库上运行设计不良的SQL查询并使其冻结.

只有使用编程才能解决上面讨论的任务. In fact, 你应该期望DevOps候选人具备多种编程语言的编码技能.

让我们详细说明一下:首先,编写脚本 bash (一种Unix/Linux shell和一种命令语言)广泛用于自动化服务器软件设置和配置, backups, builds, and deployment; running monitoring; building reports; and consuming cloud APIs. Indeed, any kind of automation will need scripting.

For another, 将各种系统服务与应用程序顺利集成, 您聘请的DevOps工程师有时需要了解应用程序中使用的编程语言.

一个很好的例子是多租户PHP、Ruby或 Python web应用解决方案 运行在亚马逊网络服务(AWS)提供的云虚拟服务器上. 以下是一些典型的任务,需要DevOps专家运用他或她的编码技能:

  • 创建一个bash脚本在AWS上实例化一个新的VPS服务器. The script will need to consume the AWS API 在公司账户下创建一个新的虚拟服务器, 将应用程序部署到它, 创建数据库模式并在数据库中配置应用程序帐户. 连接到CRM(如SalesForce)并使用服务器ID更新用户记录也可能是必需的.
  • 在应用程序中编写一个内部方法,将应用程序状态报告给外部监视脚本.
  • 实现一个内部网页,报告所有服务器的状态, 并显示一些使用统计数据.
  • 修改现有的生产Dockerfile(如果使用Docker containerization).
  • 创建一个bash脚本,用于执行计划备份,以及根据请求从备份中恢复.
  • 创建一个bash脚本,将新应用程序版本推出到一些(或所有)服务器, 以及在新版本中发现严重错误时回滚它.

实际上,在DevOps的日常工作中有更多这样的任务. 这就是为什么开发人员和devops之间没有明确的界限——他们都能够编写代码. 前者只是更擅长于给定领域的算法和业务逻辑编程, 而后者在系统管理方面有更广泛的知识. 但许多任务都可以用这两种方法来完成.

因此,在DevOps面试中包含编程问题和问题并不是一个坏主意. At a minimum, 您应该询问应聘者他们使用过哪些编程/脚本语言(除了bash).

另一个选择是使用在线编码测试. 针对不同的编程语言和领域,有许多服务具有预定义的测试(复杂度不同). 有些服务还允许您构建自己的测试, 这样就有可能选择具有贵公司特定编码技能的候选人. 无论您是依赖预构建的测试还是编写自己的测试, 您将需要咨询您的产品/开发团队,以使测试问题相关.

Sometimes, DevOps开发人员被要求从只有他们被授予访问权限的数据库中提取或检查数据. 对于这些情况,能够编写SQL查询将会产生影响. So, 如果您的项目使用数据库, 您可能还想讨论候选人使用您的特定数据库引擎的经验. 您不希望DevOps工程师在拥有5亿条记录的数据库上运行设计不良的SQL查询并使其冻结.

配置SQL表分区是一个复杂的领域.f. the 关于PostgreSQL表分区的文档. 如果你的DevOps员工需要进入这个领域,知道SQL语法是不够的. 他们需要对索引和影响数据库性能的因素有深刻的理解, 你还需要了解他们之前的工作经验.

版本控制和分支策略

现在很难找到一个不是由Git管理的It项目, Subversion, Mercurial, 或者另一个版本控制软件(VCS). 从文档到配置到代码到数据库模式,以及对任何类型的文档所做的修订,这些东西通常都存储在VCS中并使用VCS进行跟踪.

因此,了解如何使用VCS系统对任何候选人都是必不可少的.

As per the 2018年堆栈溢出开发者调查到目前为止,最受开发人员欢迎的vcse是Git (87.2%) and Subversion (16.1%). 通常,应聘者至少对其中一项有经验就足够了. Git已经成为IT行业事实上的标准, 在一些公认的项目中仍然使用SVN, wordpress就是其中之一, for example, as of 2018.

所有VCS系统背后的思想都是一样的——允许对变更和分支进行管理.

变更管理, or revision management, 允许您跟踪给定文档或代码文件的每一个更改, 以后可以随意恢复. 在VCS中跟踪的每个更改都可以恢复当时跟踪的原始源代码.e. 它可以作为整个项目、文档、数据库模式等的快照. 这样的快照通常称为快照 commit in VCS terminology.

分支是一种允许多人同时在同一源上进行有效协作的技术——它减少了修订之间的冲突数量,并自动合并由多人(或由同时处理多个特性的同一个人)完成的工作.)

因为分支有不同的方法(也称为分支策略),比如 Git Flow and GitHub Flow, 要求应聘者知道不止一种是没有多大意义的:如果他们知道其中一种是如何工作的, 他们很容易学会其他的人.

现在,让我们看看为什么能够使用VCS对DevOps工程师来说很重要. 事实上,他们做的很多事情都需要VCS技能:

  • 部署应用程序的特定版本,或恢复到其旧版本之一
  • 将包含特定特性的特定分支部署到持续集成服务器, 这样就可以运行测试并生成报告
  • 比较软件的两个版本,以确定可能影响合规性的任何更改(当您想为DevOps聘请的人也将扮演安全工程师的角色时)
  • 跟踪VCS内部脚本和相应的文档

Git是一个复杂的工具,提供了许多可能性. Of course, 它提供基本的修订跟踪, 但它也有帮助解决复杂任务的高级功能. For example, the git bisect 命令允许您有效地查明哪个提交引入了错误. 比如编程语言, 人们可以通过解决各种任务和阅读文档和教程来提高自己的Git技能. 因此,你不应该期望DevOps候选人在VCS方面有全面的专业知识. 只要问候选人两件事就足够了:

  1. 他们过去是否使用过vcs,比如Git、Svn或Mercurial
  2. 看看他们是否熟悉分支策略

尽管很容易想出一些简短的任务来让DevOps候选人展示他们使用VCS的技能, 如果您打算让他们做一个试验项目,可能没有必要这样做——只需将需求集成在那里,而不是单独进行测试.

帮助您评估试用项目VCS存储库中提交和分支的质量, 你应该询问那些使用你公司VCS最多的人——你的开发人员(产品团队)。. 尽管如此,在检查存储库时,还是有一些事情需要注意:

  • Commit messages (i.e. 伴随提交(快照)的消息应该是描述性和简洁的,并遵循相同的风格
  • Every single feature, fix, 或者文档中的更改应该单独提交(“经常提交”原则)。
  • 不应该有只完成了一半工作的提交(或者应该在提交消息中标识)。
  • 不应该跟踪“日志”文件或其他与项目无关的文件

使用VCS的最佳实践已经开发了很长时间,并在以下文章中进行了描述 this-如果你是审查试验项目的人,至少浏览一下这样的资源.

DevOps的IT安全最佳实践

DevOps驱动了公司开发过程的许多方面. 因此,它自然是通知安全实践的更广泛实现和培养所有团队安全意识的完美场所. With that in mind, 很明显,为什么安全性是您希望您的DevOps候选人擅长的另一个领域, 特别是如果你没有一个专门的安全团队的支持.

私营机构自我报告的六大事件类型(系统受损占56%)

许多载体威胁着私营部门的IT安全.
Source: 澳大利亚网络安全中心

随着IT解决方案被越来越多的行业所采用, 渗透可能性的数量也在增长:从硬件到软件到固件到驱动程序再到业务解决方案, 每一个都是一个单独的项目,需要保护和安全监控. 因此,对安全专家的需求正以前所未有的速度增长. 这就是为什么精通安全的DevOps开发人员是非常有价值的资产.

第一个建议是将与IT安全相关的需求放在前面, 就在你的招聘广告上. 如果您准备接受在解决实际问题时没有实现安全最佳实践的具体经验的候选人, 它仍然是有意义的,提到它是需要学习的主题, 并/或将其列入个人年度教育计划.

Next, 面试候选人时, 在面试接近尾声的时候,在他们熟悉了贵公司使用的技术栈之后, 要求候选人列出一些他们将采取的措施来改进您的整体安全实现. 下面是一些你可能会想到的好例子:

  • 每周发送安全意识信函-因为所有员工都是容易受到各种攻击的人, 随着新的漏洞被定期发现, 每周写一封总结调查结果并给出建议的信,可能会让该公司不那么容易受到此类攻击.
  • 启动专用安全通道-在Slack中设置一个专用流程, Flowdock, 或者任何其他公司聊天都是发布及时公告和讨论它们的好方法.
  • 制定安全教育计划—it never hurts to study security formally; this might be just short online courses taken twice per year. 参加课程对团队建设也有很好的副作用.
  • 构建公司使用的工具、软件和云服务的列表并密切关注它们的新漏洞.
  • 使用VPN,强制密码轮换隐藏内部资源是一种常见的做法, 像项目管理软件和源代码托管, behind a VPN.
  • 设置安全监控-如上面的监控部分所述.

此外,对于一些简洁的面试前阅读, 开发运维安全最佳实践 讨论安全方面的挑战和最佳实践.

Finally, 如果你计划在面试过程中做一个试验项目, 确保在项目描述中说明将在可交付成果中评估安全性最佳实践, 如果这适用于项目. (很有可能是这样,不管你想出什么项目.)然后让你的安全/产品团队审查项目并发表意见.

Communication Skills

就像任何需要合作的工作一样, 沟通技巧是团队整体快速进步的关键之一. DevOps专家也不例外.

DevOps专业人员在日常工作中运用沟通技巧的领域有很多:

  • 收集来自不同团队(产品、客户成功、销售等)的需求.)
  • 记录和演示他们创建的工具和解决方案
  • 集思广益,寻找软件和硬件基础架构的解决方案
  • 向利益相关者汇报

人力资源部门可以帮你过滤掉那些明显有沟通障碍的候选人. 因为沟通问题而离开公司的高素质和经验丰富的专业人士并不罕见. 因此,在签订合同之前,及早发现这些问题非常重要.

At the very minimum, 在面试和评估试验项目时, 确保DevOps候选人:

  • 能清楚地表达自己的想法和观点,无论是口头还是书面
  • 分享团队快速行动和个人快速行动的价值
  • 了解分享的文化
  • 是否愿意为共同目标而努力

合作是一种非常重要的个人特质. While not being testable per se,这会影响应聘者融入团队的速度. Thus, 如果少数候选人具有大致相同的技术专长和技能水平, 优先选择沟通和协作能力较强的.

以下是一些面试中可以讨论的话题:

  • 你以前远程工作过吗(或者在一个开放的空间,这取决于你公司的环境)?
  • 描述一下作为DevOps工程师,你是如何展示你开发的工具和/或流程的.
  • 你使用什么工具与你的队友进行协作和沟通?

筛选DevOps开发人员是一回事. 如何使候选人的要求适应你的公司,它的类型,它的结构?

找到最适合你公司的人

雇佣一个愿意这样做的DevOps经理之间存在概念上的区别 领导公司的重大变革 招募一名工程师 加入开发运营公司的现有团队.

要在一家公司从零开始建立DevOps实践,你需要一个具备以下条件的候选人:

  • 曾担任首席开发运维工程师,或
  • 作为现有DevOps团队的一员,在一家中型或大型公司从事DevOps工作了几年

这里的想法是,在不需要的公司中建立DevOps基础设施, besides theory, 有很多技能和经验知识. 一旦基础设施建立并被项目中的其他团队所依赖, 彻底改变它的代价太大了. 这意味着在DevOps中,设计和结构错误的成本非常高. 你可以把它想象成从头开始设计软件,而不是雇人给现有的软件添加更多的功能. DevOps职业也是如此——你不应该冒险把赌注压在一个在该领域经验有限的人身上.

If, on the other hand, 新员工将由现有的DevOps团队进行指导和检查, 对经验的要求可能会放宽, 更注重态度和沟通技巧.

在任何情况下,重要的是候选人能够 插入公司的产品框架因此,他们必须熟悉公司的部分或全部技术堆栈. Those include:

  • 编程语言(如PHP、Ruby、Java或Scala)
  • 应用程序框架(如Laravel for PHP或Play)! for Scala)
  • 服务器和其他公司硬件(如Ubuntu)上使用的操作系统(os), Red Hat Linux, or Windows Server)
  • 数据库(如PostgreSQL, MariaDB, Oracle,或Microsoft SQL Server)
  • 工具(如备份工具和资产编译工具)

很多时候,DevOps工程师需要使用相应的编程语言为现有框架开发插件. 因为这种情况会经常发生, 他们对公司技术栈的熟悉程度至关重要.

跟踪它的一种简单方法是咨询您的团队并构建您公司使用的技术的详细列表, 然后把它写进招聘广告里. 如果这份名单是保密的, 在面试开始的时候直接给面试者看. 在比较候选人时,这样一个每个候选人都检查过的项目列表将非常方便——有时当比较其他特征没有帮助时,这个列表会使你的选择变得明显.

当涉及到决定 interviewing strategy,以下经验法则适用:

  • 把面试分成几个阶段, 然后根据对你的项目至关重要的特征筛选出来,越早越好, 以及排除在沟通方面有麻烦的候选人.
  • When interviewing, 一定要让不同部门的人参与进来, 不仅仅是产品团队(软件) developers). 让他们提出对他们来说重要的问题,然后收集他们的反馈.
  • 作为最后一个阶段,分配一个试验项目.

Trial projects 是求职者炫耀自己的好方法吗. For some people, especially introverts, 面试意味着很大的压力, 所以你可能无法看到他们的全部潜力,直到他们通过一个试验项目提供了一些惊人的东西.

Finally, 因为DevOps和软件开发有很多共同之处, 我们可以从后者中学到很多东西.

牢记软件开发课程

综上所述,我们想引用Robert L. Glass in 软件工程的事实与谬误:

  • Fact 22. “80%的软件工作是智力工作. 其中相当一部分是创造性的. Little of it is clerical.” 合适的DevOps工程师, 就像软件开发人员一样, 会创造出很多有价值的解决方案,成为你公司智力资产的一部分吗.
  • Fact 23. “导致项目失控的两个最常见原因之一是不稳定的需求.” 这就是为什么DevOps候选人与项目团队持续有效沟通的能力与拥有技术技能同样重要的原因.
  • Fact 27. “对于软件问题,很少有一个最佳的设计解决方案.” 这里,同样是关于软件问题,DevOps需要一些直觉和经验知识. Again, 当公司的全局任务是建立DevOps基础设施时,聘请一位经验丰富的DevOps工程师是至关重要的.

现在你知道了:制定一个招聘计划. 关注公司的需求. 倾听团队的反馈. 制作技能和素质对照表. 找出弱点并计划持续的自我教育计划,包括跟进. 使用在线招聘管理服务. 最后,在DevOps招聘过程中投资意味着之后的收益:

“Easy choices, hard life.
“艰难的选择,轻松的生活.”
- Jerzy Gregorek

顶尖的开发运维工程师需求量很大.

Start Hiring