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多万.
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.
虚拟化背后的思想是抽象底层硬件或软件,使事物更少依赖,更孤立. 它实际上是一个广泛的概念,适用于服务器, networks, storage, desktops, and even applications.
For example, 安装了所有服务和工具的服务器操作系统(OS)可以像在公司的真实计算机上一样配置, bare-metal server, 而是放在虚拟机中, or VM. 然后,vm可以在开发人员笔记本电脑上启动,以模仿服务器环境中服务和工具之间相同的真实结构和关系, 即使开发人员使用不同的笔记本电脑进行工作. 如今,有了像Vagrant这样的虚拟化工具和轻量级容器管理系统,这变得特别容易 Docker.
虽然可能不需要候选人列出所有的点, 理解为什么要使用虚拟化以及在哪里可以实现虚拟化是非常重要的. 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.
尽管这个问题可能不那么实际,而更有哲理, 当人们对技术及其目标有一个大致的了解时,这总是好的. 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团队的能力.
因为随着时间的推移,DevOps可能会改变公司的基础设施,所以让他们了解这一点非常重要 标准遵从性和认证. 如果你的产品或服务在公司的居住国受到监管, DevOps需要与您的信息安全工程师合作,维护现有的合规性或申请新的合规性. If this is the case, 让应聘者谈谈他们在这个领域的经验:他们是如何完成合规的,以及他们在这个过程中扮演了什么角色.
下面是一个快速实践任务的想法,它将帮助您评估DevOps候选人在遵从性和认证方面的知识. 如果你以前申请过,你将需要填写很多申请表. 从其中一个问题中摘录一段,去掉所有的答案,然后交给候选人. Let them:
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.
Step 2. DevOps团队学习计划的特性, 评估公司的成长速度, 估算当前基础设施费用的范围, 找出公司中最耗时的任务——所有这些都是影响哪些任务应该自动化和改进的因素, and in which order. 尽管本节主要关注自动化测试和部署, 这两者通常是所有其他过程的组成部分,并影响它们. 所以更多的技术栈研究, 可以对测试和部署自动化做出更好的决策.
Step 3. DevOps工程师以这样一种方式规划和优先处理自动化实现任务,即首先处理最关键和/或最昂贵的流程. At this stage, 通常会与其他团队的领导进行大量讨论,以便为每个人充分利用测试/部署自动化.
Furthermore, 对于需要定期运行大量单元测试的大型应用程序, DevOps开发人员通常会设置专用的持续集成服务器,在服务器上并行运行单元测试,而开发人员则在开发环境中继续编写代码. Without such CI servers, 当在单个开发人员笔记本电脑上运行时, 单元测试自动化有时需要几个小时, if not longer.
有各种类型的测试:
功能测试:是否所有关键的应用功能工作?
兼容性测试:应用程序在各种环境中是否保持其功能? For instance, web应用程序应该在所有支持的浏览器中运行, 支持多个数据库的应用程序应该始终与所有数据库一起工作, 驱动程序应该在所有支持的硬件型号上正常工作, and so on.
性能测试:流量或其他类型的负载如何影响应用程序的性能?
安全测试:攻击能否暴露应用安全机制的缺陷, 这样受保护的数据就可以在未经授权的情况下被访问?
可用性测试:应用程序的用户能否在不阅读文档的情况下直观地理解如何使用它? Does it work as expected?
在发布新版本之前, 源代码必须被构建或至少打包, 取决于你的技术栈. 对于c#或Java等静态类型编程语言, 构建意味着将源代码编译成 executable 它可以由计算机运行. 对于像PHP、Python和JavaScript这样的解释性语言,可能不需要编译 per se, but e.g. JavaScript文件被加入到组中并被缩小, SASS文件被编译成CSS文件, 带有翻译的语言文件也会被构建, and images are minified.
DevOps开发人员通常会使用构建自动化软件和 这些软件的列表 is huge. 对DevOps候选人来说,一个好的问题是让他们谈谈他们使用了哪些工具来解决哪些任务. 这些工具可以分为两类:
在你和候选人讨论之前, 从开发者那里了解这一点很重要, system administrators, 和其他技术团队了解你们公司的主题状态. 如果任何一个积分, delivery, 或者部署方案已经就位, 记下工作中的工具和脚本语言,与你的候选人讨论. If none are implemented, 询问应聘者是否在项目中使用过与你相同的语言和框架栈.
只有使用编程才能解决上面讨论的任务. 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工程师有时需要了解应用程序中使用的编程语言.
创建一个bash脚本在AWS上实例化一个新的VPS服务器. The script will need to consume the AWS API 在公司账户下创建一个新的虚拟服务器, 将应用程序部署到它, 创建数据库模式并在数据库中配置应用程序帐户. 连接到CRM(如SalesForce)并使用服务器ID更新用户记录也可能是必需的.
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是一个复杂的工具,提供了许多可能性. Of course, 它提供基本的修订跟踪, 但它也有帮助解决复杂任务的高级功能. For example, the git bisect 命令允许您有效地查明哪个提交引入了错误. 比如编程语言, 人们可以通过解决各种任务和阅读文档和教程来提高自己的Git技能. 因此,你不应该期望DevOps候选人在VCS方面有全面的专业知识. 只要问候选人两件事就足够了: