Keidrych是一名云架构师,他指导组织通过多/多云原生计算基础(CNCF)技术的泥潭,从而使他们的技术基础对所有人都是安全的, 对客户可靠, 而且经济效益高, 利用焦土能力实现对工厂规模架构的零生产影响. Keidrych believes trusted technology serves humanity; a 5% increase in internet or cyberspace trust results in a $3,人均GDP增长1000多万.
Mike是一名资深数据工程师和自由架构师,在开发堆栈方面经验丰富. 他拥有丰富的云和基础设施经验, with multiple certifications from Microsoft, ISC2, Powersoft, and more. He currently builds data back ends for web apps at scale on RDBMS or NoSQL platforms.
Fernando是一名技术爱好者,拥有十多年的IT经验, seven of which are in AWS-built environments. 总是被可度量的指标和大价值的努力所驱动, 他是一个多面手,有很强的能力,专注于综合上下文,当问题出现和需要解决方案时,他可以深入研究特定的主题. 费尔南多认为,以身作则和用心指导是增加对组织影响的唯一途径.
DevOps is like full-stack development: Covering both development and system operations, it cuts across a very wide spectrum of tech. DevOps工程师可以期望了解从临时SQL数据挖掘到通过Bash脚本自动化Docker的所有内容.
用这个方便的招聘指南有效地招聘和面试DevOps工程师.
Tripcents wouldn't exist without Toptal. Toptal Projects使我们能够与产品经理一起快速发展我们的基金会, 带领开发人员, 高级设计师. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. Toptal团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们像其他人一样贡献并拥有开发的所有权. 我们将继续使用Toptal. As a start up, they are our secret weapon.
布兰特利·佩斯,首席执行官 & Co-Founder
Tripcents
我对我们与Toptal的合作经验非常满意. The 专业 I got to work with was on the phone with me within a couple of hours. 在和他讨论了我的项目后,我知道他就是我想要的候选人. 我立即雇用了他,他没有浪费时间就完成了我的项目, 甚至通过添加一些很棒的设计元素来增加我们的整体外观.
我们需要一位能立即开始我们项目的专业工程师. Simanas exceeded our expectations with his work. 不需要采访和追踪专家开发人员是一种非常节省时间的方法,并且让每个人都对我们选择切换平台以使用更健壮的语言感到更舒服. Toptal made the process easy and convenient. Toptal现在是我们寻求专家级帮助的首选之地.
Derek Minor, Senior VP of Web Development
网络传媒集团
Toptal's developers and architects have been both very 专业 and easy to work with. The solution they produced was fairly priced and top quality, reducing our time to launch. 再次感谢,Toptal.
首席执行官杰里米·韦塞尔斯
Kognosi
我们与Toptal合作非常愉快. 他们为我们的应用程序找到了完美的开发人员,让整个过程变得非常简单. 它也很容易超出最初的时间框架, 我们可以在整个项目中保持同一个承包商. We definitely recommend Toptal for finding high quality talent quickly and seamlessly.
Working with Toptal has been a great experience. 在使用它们之前, 我花了相当多的时间面试其他自由职业者,但没有找到我需要的. 在与Toptal合作后,他们在几天内就为我找到了合适的开发者. 与我一起工作的开发人员不仅提供高质量的代码, 但他也提出了一些我没有想到的建议. 我很清楚,阿莫里知道自己在做什么. 强烈推荐!
Toptal’s ability to rapidly match our project with the best developers was just superb. The developers have become part of our team, and I’m amazed at the level of 专业 commitment each of them has demonstrated. For those looking to work remotely with the best engineers, look no further than Toptal.
劳伦特·阿里,创始人
Livepress
Toptal让寻找合格的工程师变得轻而易举. 我们需要一个有经验的ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. 在做出我们的选择后,工程师立即在线并开始工作. It was so much faster and easier than having to discover and vet candidates ourselves.
At Toptal, 我们彻底筛选我们的DevOps工程师,以确保我们只为您匹配最高水平的人才. 在200多个中,每年有5000人申请加入Toptal网络, 只有不到3%的人能达标. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, 技术需求, 团队动力. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.
我能在48小时内通过Toptal招聘到DevOps工程师吗?
取决于可用性和进度, 你可以在注册后48小时内开始与DevOps工程师一起工作.
Toptal DevOps工程师的无风险试用期是多长?
我们确保您和您的DevOps工程师之间的每次约定都从长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. If you’re completely satisfied with the results, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. From there, 我们要么分道扬镳, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, 无风险试用.
DevOps专家应该能够将他们的技能融入到公司IT流程的独特机制中. 候选人通常需要精通部署自动化和网络, 了解软件授权, be wise in the ways of hardware and software, 使用多种操作系统, 用各种语言编写脚本来构建报告和自动执行任务. 他们必须不断地与队友沟通,以便确定任务的优先级,并擅长于记录和演示他们创建的工具.
在一个人身上评估这么多领域的技术知识和沟通技巧是很棘手的. 这就是本指南的意义所在:我们将告诉您,为了成功聘请DevOps专家,您需要知道什么, give you example DevOps interview questions, 并强调应聘者应该展示的技能.
让我们从现在每个DevOps专家都应该熟悉的一个基本概念开始.
虚拟化和沙箱
对所有DevOps候选人来说,理解虚拟化是必不可少的. Many contemporary ideas and strategies in the DevOps profession were built on top of it, 并且在许多公司中发挥作用,无论其结构或目的如何.
例如, 安装了所有服务和工具的服务器操作系统(OS)可以像在公司的真实计算机上一样配置, 裸机服务器, but instead be put in a virtual machine, or VM. 然后,vm可以在开发人员笔记本电脑上启动,以模仿服务器环境中服务和工具之间相同的真实结构和关系, 即使开发人员使用不同的笔记本电脑进行工作. 如今,有了像Vagrant这样的虚拟化工具和轻量级容器管理系统,这变得特别容易 Docker.
Renting hardware instead of buying it is a popular way to go for many businesses today. 通过将硬件设置和维护任务外包给专门的团队,它消除了大量的硬件设置和维护任务. This also speeds up launching a business, 或者构建一个概念验证产品, 或者为客户提供即时专用的试用设置. 它还允许您直接关注业务逻辑,而不是花费时间设置自己的硬件.
另一个例子是实施内部项目管理或公共用户支持系统. 这两种情况, 市场上有许多可用的解决方案——你很少想从头开始构建自己的解决方案. 其中一些由提供商托管和维护, and DevOps will take part in integrating it with the other software used by the team. 其他的可以下载, installed, 配置, 定期更新, 这也取决于DevOps团队的能力.
Therefore, you should expect the candidate to effortlessly answer questions like these:
What is a cloud service API, which pricing models exist, and what is an API usage quota?
下面是一个快速实践任务的想法,它将帮助您评估DevOps候选人在遵从性和认证方面的知识. If you previously applied for any, you will have lots of application forms filled out. Take an excerpt from one of them and remove all the answers, and give it to the candidate. Let them:
回到 hardware 话题,了解它是有回报的. 释放软件全部潜力的方法之一是使用正确的硬件,并以正确的方式将其组合起来. 例如, look at how Stack Overflow served 150 million HTTP requests in 2013 and 2016年2.1亿. 在硬件列表中, 你会注意到2013年使用了四个Microsoft SQL server, and there are still only four of them in 2016. 数据库服务器的数量没有增加,只有两台服务器进行了升级. 这意味着在幕后有一个聪明的计划. 它不仅可以直接节省硬件成本, 还有硬件安装, 主机托管, 和维护.
So, 这取决于您公司的业务流程, 你可能想问DevOps候选人以下几个问题:
哪些类型的软件需要更多以下内容?
处理能力(CPU速度)
cpu或核心(用于并行化)
GPUs
计算机内存
Give an example of redundancy in hardware setup. (您可以使用Stack Overflow文章作为指南来熟悉一个可能的用例.)
What is load balancing and when it is needed?
Your company may own zero hardware and use cloud services for its whole IT infrastructure, 但要做出最好的选择, 重要的是,DevOps开发人员可以测量硬件性能,并了解如何调整软件以使其与给定的硬件最佳配合. This skill is especially important if you don’t hire a dedicated server administrator.
With CD, teams tend to ship new features more often, 把大任务分成小任务,分阶段完成, 通过向有限数量的客户推广新想法来测试新想法, 并且在新版本中发现问题时可以轻松回滚. 在DevOps开发人员的帮助下,所有这些都成为可能,并使企业更加灵活,更快地适应不断变化的市场,压力更小.
DevOps engineers have a key role to play in setting up, adjusting, and maintaining CD. 下面是它的工作原理.
Step 1. DevOps团队咨询其他团队,以收集有关如何开发的信息, testing, 和部署 processes are set up now.
Step 2. The DevOps team learns the planned features, 评估公司的成长速度, 估算当前基础设施费用的范围, 找出公司中最耗时的任务——所有这些都是影响哪些任务应该自动化和改进的因素, 按照什么顺序. 尽管本节主要关注自动化测试和部署, 这两者通常是所有其他过程的组成部分,并影响它们. 所以更多的技术栈研究, 可以对测试和部署自动化做出更好的决策.
More often than not, unit testing is automated. DevOps团队的工作是将单元测试运行器集成到开发中使用的虚拟机以及CI服务器中,以便测试可以被使用 钩入自动运行 对于每个新版本发布之前,或由开发人员或测试人员手动触发. 还应该配置报告,以便开发人员能够立即发现他们的新代码是否破坏了现有的功能.
此外, 对于需要定期运行大量单元测试的大型应用程序, DevOps开发人员通常会设置专用的持续集成服务器,在服务器上并行运行单元测试,而开发人员则在开发环境中继续编写代码. 没有这样的CI服务器, 当在单个开发人员笔记本电脑上运行时, unit test automation can sometimes take hours, 如果不是更长.
有各种类型的测试:
功能测试:是否所有关键的应用功能工作?
Compatibility tests: Does the app maintain its functionality in various environments? 例如, web应用程序应该在所有支持的浏览器中运行, 支持多个数据库的应用程序应该始终与所有数据库一起工作, 驱动程序应该在所有支持的硬件型号上正常工作, and so on.
Performance tests: How does traffic or other types of loads affect the app’s performance?
在发布新版本之前, 源代码必须被构建或至少打包, 取决于你的技术栈. 对于c#或Java等静态类型编程语言, building implies compiling source code into an 可执行的 它可以由计算机运行. For interpreted languages like PHP, Python, and JavaScript, there may not be compiling per se, but e.g. JavaScript文件被加入到组中并被缩小, SASS文件被编译成CSS文件, 带有翻译的语言文件也会被构建, 图像被缩小了.
DevOps开发人员通常会使用构建自动化软件和 这些软件的列表 is huge. 对DevOps候选人来说,一个好的问题是让他们谈谈他们使用了哪些工具来解决哪些任务. The tools can be categorized in two ways:
Tools specific to a 编程 language. 例如,Rake是一种基于ruby的构建工具,而Apache Ant则流行于Java.
特定于操作系统的工具:FinalBuilder是针对Windows软件开发人员的,基于make的工具(如 GNU make and mk)适用于Linux/Unix和Mac OS.
Before you talk about it with the candidate, it’s important to find out from your developers, 系统管理员, 和其他技术团队了解你们公司的主题状态. 如果任何一个积分, delivery, or deployment schemes are already in place, 记下工作中的工具和脚本语言,与你的候选人讨论. 如果没有实现, 询问应聘者是否在项目中使用过与你相同的语言和框架栈.
It’s not critical that a candidate has experience with every last technology on your list. 这是因为针对不同的情况有许多不同的工具, 最主要的一点是理解他们的目的, 以及能够学习它们并开始快速使用它们. 具有足够经验的顾问通常能够在几天内学习新工具.
监控
因为有那么多的服务器、服务、微服务、数据库等等. form the building blocks of an application, 不持续而严格地监视它们的可操作性和可用性是有风险的.
当然,DevOps工程师必须能够自己设置监控. But it’s no less important that they can:
Analyze failures and understand their causes
修复故障并恢复功能
采取措施防止将来发生此类故障
在内部报告中概述所有细节,并通过注释改进内部文件, tips, and procedures related to a given issue
建议产品团队改进导致问题的代码
帮助支持团队在博客文章和支持单中用简单的语言解释问题
请DevOps候选人谈谈他们是如何设置监控并处理一些故障的. 从他们的故事中, you will be able to identify whether they are familiar with the points outlined above.
状态页面. 这些显示当前和历史数据的网站或服务的正常运行时间. There might be public and private status pages—the latter usually face the product team, 服务器管理员团队, 还有其他工程师, 并包括用于管理整个基础设施的全面监控细节和统计数据. 建立这样的页面通常是DevOps专家的责任.
页面速度. For web content, slow-loading pages mean a 低谷歌等级 and 转换和销售损失.
Alerting. I.e. 当事件发生时,通过各种渠道通知责任方. 深思熟虑的提醒会减少你解决问题的时间.
What we just discussed above is usually called performance and availability monitoring. But there is another aspect of monitoring: 安全监视. The idea is that all operations and activities of users and programs must be tracked.
No matter how big or small your clients are, 贵公司对您存储在服务器上的个人数据的保密性和安全性负责. 这同样适用于:
智力资产,比如应用程序的源代码. 您希望安全地存储它,而不泄漏给竞争对手.
公司邮件和其他沟通渠道,包括用户支持. 你不希望公司里的每个人都能访问这些文件.
内部文件,如竞争对手分析、发展战略、财务报告等. 限制和控制对它们的访问具有重要的战略意义.
Therefore, 观察和记录公司各级基础设施的所有操作和活动是至关重要的, from networks to applications to employees.
只有使用编程才能解决上面讨论的任务. In fact, 你应该期望DevOps候选人具备多种编程语言的编码技能.
Let’s elaborate: For one thing, scripting in bash (一种Unix/Linux shell和一种命令语言)广泛用于自动化服务器软件设置和配置, backups, builds, 和部署; running monitoring; building reports; and consuming cloud APIs. 事实上,任何一种 automation 将需要脚本.
Actually, there are many more such tasks in the day-to-day work found in a DevOps job. 这就是为什么开发人员和devops之间没有明确的界限——他们都能够编写代码. The former are just better at algorithms and 编程 business logic in a given domain, 而后者在系统管理方面有更广泛的知识. 但许多任务都可以用这两种方法来完成.
另一个选择是使用在线编码测试. 针对不同的编程语言和领域,有许多服务具有预定义的测试(复杂度不同). 有些服务还允许您构建自己的测试, thus making it possible to select candidates with coding skills specific to your company. 无论您是依赖预构建的测试还是编写自己的测试, you will need to consult your product/developer team to make the test questions relevant.
Sometimes, DevOps开发人员被要求从只有他们被授予访问权限的数据库中提取或检查数据. 对于这些情况,能够编写SQL查询将会产生影响. So, 如果您的项目使用数据库, 您可能还想讨论候选人使用您的特定数据库引擎的经验. 您不希望DevOps工程师在拥有5亿条记录的数据库上运行设计不良的SQL查询并使其冻结.
变更管理, 或者修订管理, 允许您跟踪给定文档或代码文件的每一个更改, 以后可以随意恢复. 在VCS中跟踪的每个更改都可以恢复当时跟踪的原始源代码.e. it acts as taking a snapshot of the whole project, documentation, database schema etc. 这样的快照通常称为快照 commit 在VCS术语中.
随着IT解决方案被越来越多的行业所采用, 渗透可能性的数量也在增长:从硬件到软件到固件到驱动程序再到业务解决方案, 每一个都是一个单独的项目,需要保护和安全监控. 因此,对安全专家的需求正以前所未有的速度增长. That is why a DevOps developer who is also good at security is a very valuable asset.
合作是一种非常重要的个人特质. 虽然无法测试 per se,这会影响应聘者融入团队的速度. Thus, if a few candidates have approximately the same level of technical expertise and skills, 优先选择沟通和协作能力较强的.
以下是一些面试中可以讨论的话题:
你以前远程工作过吗(或者在一个开放的空间,这取决于你公司的环境)?
描述一下作为DevOps工程师,你是如何展示你开发的工具和/或流程的.
你使用什么工具与你的队友进行协作和沟通?
Screening DevOps developers is one thing. What about adapting candidate requirements to your company, its type, and its structure?
找到最适合你公司的人
雇佣一个愿意这样做的DevOps经理之间存在概念上的区别 lead major transformation in the company 招募一名工程师 加入开发运营公司的现有团队.
To establish DevOps practices in a company from scratch, you will want a candidate who:
Previously worked as a Lead DevOps Engineer, or
作为现有DevOps团队的一员,在一家中型或大型公司从事DevOps工作了几年
这里的想法是,在不需要的公司中建立DevOps基础设施, 除了理论, a lot of skills and empirical knowledge. Once the infrastructure is established and relied on by the other teams in the project, it will be too costly to radically change it. 这意味着在DevOps中,设计和结构错误的成本非常高. 你可以把它想象成从头开始设计软件,而不是雇人给现有的软件添加更多的功能. DevOps职业也是如此——你不应该冒险把赌注压在一个在该领域经验有限的人身上.
If, 另一方面, 新员工将由现有的DevOps团队进行指导和检查, the requirements on experience may be loosened, 更注重态度和沟通技巧.
在任何情况下,重要的是候选人能够 plug into the company’s product framework因此,他们必须熟悉公司的部分或全部技术堆栈. 这些包括:
编程语言(如PHP、Ruby、Java或Scala)
应用程序框架(如Laravel for PHP或Play)! for Scala)
服务器和其他公司硬件(如Ubuntu)上使用的操作系统(os), Red Hat Linux, 或Windows服务器)
很多时候,DevOps工程师需要使用相应的编程语言为现有框架开发插件. As this will happen more often than not, 他们对公司技术栈的熟悉程度至关重要.
跟踪它的一种简单方法是咨询您的团队并构建您公司使用的技术的详细列表, then including it in the job advertisement. If that list is considered confidential, present it to the candidate straightforwardly at the beginning of an interview instead. 在比较候选人时,这样一个每个候选人都检查过的项目列表将非常方便——有时当比较其他特征没有帮助时,这个列表会使你的选择变得明显.
当面试, always involve people from various departments, 不仅仅是产品团队(软件) developers). 让他们提出对他们来说重要的问题,然后收集他们的反馈.
As the last stage, assign a trial project.
试验项目 are a great way for candidates to show off. 对一些人来说, 特别是内向的人, going through interviews means a lot of stress, 所以你可能无法看到他们的全部潜力,直到他们通过一个试验项目提供了一些惊人的东西.
So there you have it: Build a hiring plan. 关注公司的需求. 倾听团队的反馈. Make a skills and quality comparison table. Identify weaknesses and plan a continuous self-education schedule including follow-ups. Use an online service for hiring management. 最后,在DevOps招聘过程中投资意味着之后的收益: