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. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.
Ivan是一名系统架构师和CTO,他创立了多家企业. 他有架构和实现服务器端解决方案的经验, 包括区块链等分布式平台, chat servers, and game back ends. Ivan拥有萨格勒布大学(University of Zagreb)计算机工程博士学位,在该领域20多年的经验中,他监督了许多DevOps项目和团队.
They are also problem-solvers; integrating several custom applications into a smooth and automated process is no small task. DevOps工程师擅长挖掘问题或瓶颈的根本原因,并设计创新的解决方案. 他们是构建自动化工作流以简化软件交付生命周期的专家.
在技术技能方面, 应试者应根据他们对应用程序技术栈的知识和部署规模进行评估. DevOps工具实际上是用于生产部署的应用程序技术堆栈的延续. 应用程序部署在两个主要的垂直技术领域: Windows and Linux.
从事Windows工作的候选人应具备微软技术栈方面的专业知识, which includes the .NET framework, SQL Server, the SharePoint 和Web API平台,以及 Azure. 候选人还应熟悉 C# and F#由微软创建的语言,提供了与 .NET ecosystem.
For Linux, 在通用Linux堆栈之上有几个不同的应用程序开发堆栈, including Python, Django, Ruby on Rails, Java, Node.js, and Go. 它们非常相似,一个Linux专家可能对它们都很熟悉, 但是每个堆栈在所需的资源(内存和CPU)和维护任务方面都有所不同. 最好雇佣一个有特定栈经验的DevOps工程师.
除了垂直技术技能, DevOps专家应该精通云计算, automation, testing, and security topics:
Cloud 现代DevOps实践严重依赖云技术. 主要的云提供商,如 AWS, Azure, and GCP 提供工具和服务,DevOps工程师可以利用这些工具和服务进行基础设施采购, testing, scaling, and management. DevOps工程师应该了解云架构, 除了IaaS(基础设施即服务)等云概念之外,, PaaS(平台即服务), 和SaaS(软件即服务). DevOps工程师还应该在过去的部署中有使用云提供商提供的工具和服务的经验.
Python -因为它的可读性, versatility, 以及跨平台兼容性, Python在DevOps工程师中越来越受欢迎. Python的语法清晰而简洁, 使其易于学习,并适合编写自动化任务脚本. Python脚本可用于自动执行单元测试等任务, 基础设施配置, 管理配置. Python还有大量现成的库, frameworks, and resources, 许多是专门为DevOps任务设计的, including Ansible, Fabric, and Terraform.
Java 在DevOps中,Java可能没有Python那么受欢迎, 但由于它在企业的广泛应用,它仍然具有相关性. 由于Java的健壮性和成熟度,许多应用程序依赖于Java, 和DevOps开发人员通常需要使用Java应用程序. Additionally, Java经常用于开发微服务, DevOps工程师应该熟悉用于构建它们的框架, such as Spring Boot and Eclipse Jersey.
Shell DevOps工程师用于自动化流程的许多脚本都是在称为shell的命令行解释器中执行的. Shell脚本本质上是用纯文本编写的连续执行的命令. There are several different shells available; two of the more popular modern shells are Bash and PowerShell. In particular, Bash是大多数Linux发行版的默认shell, and as such, Bash脚本是任何在Linux领域工作的DevOps工程师所必需的知识. Many DevOps tools, including Terraform, Docker, and Ansible, 使用Bash脚本进行配置, deployment, and execution.
Ruby Ruby是一种较新的语言,在DevOps开发人员中越来越受欢迎,他们经常使用它来编写脚本和自动化任务. 与Python一样,Ruby具有易于学习的语法,并且具有跨平台兼容性. 它还提供了一个不断增长的DevOps工具库,包括Rake、Chef、Nanobox和Puppet. Ruby技能对DevOps工程师是有益的, 不仅仅是脚本和自动化, 而且还支持使用Ruby on Rails开发的众多应用程序.
Go 你可能偶尔会听到DevOps开发人员说“Go是新的Python”.Go,也被称为Golang,在DevOps中扮演着越来越重要的角色. Go是为速度和效率而设计的, 并且内置了处理并发任务和并行处理的支持. Go有一个快速发展的生态系统, 提供专门为DevOps任务设计的库和框架. Many DevOps tools, including Docker, Kubernetes, and Terraform, 是用Go构建的,以便利用它的性能, efficiency, 以及跨平台能力. 而不是每个角色都需要Go, 它的性能和特性使它成为任何DevOps开发人员工具包中的一个有价值的工具.
如何确定理想的DevOps工程师?
因为他们的技能涵盖了如此广泛的平台和技术, 为您的特定项目确定和雇用理想的DevOps工程师可能很困难. 必须考虑几个因素. 除了知识的平台, infrastructure, and technology stack, 必须考虑到团队结构和动态, 以及现有的测试过程, deployment, and support. 一旦你定义了你的需求, 您可以为您的计划确定合适的候选人经验水平.
高级DevOps工程师也精通成本分配. Major cloud platforms like AWS, GCP, 和Azure是灵活的,并提供强大的功能, 但是,对于类似类型的部署,不同的平台可能有非常不同的成本. 即使应用程序部署在基于vps(虚拟专用服务器)的基础设施上,而不是托管云上, 成本和可靠性 vary wildly.
业务用例:大vs. 小规模应用
An application’s scale, 通常表示为活跃用户的数量, 通常受其底层架构的限制. In some cases, DevOps practices and tools can improve scalability; however, 它们无法弥补架构不佳的应用程序. 规模较小的环境,如公司内部应用程序, smaller web shops, B2B企业通常使用不同于大型平台和B2C平台的DevOps解决方案. 因此,在为这两个用例招聘时,会有不同的技能要求.
针对大流量优化大规模应用 -实现大规模可扩展性需要不同的方法. 在大规模环境中工作的开发人员的重点是自动化相同实例的水平扩展, 通常与实现灵活的体系结构相结合, such as microservices. 从事微服务的DevOps专家利用的工具有 Kubernetes or Terraform, 或AWS ECS等特定于云的产品, AWS CloudFormations, 谷歌云部署管理器, 和Azure资源管理器. 而大规模环境本身并不需要它, 在云上部署通常更省时, 特别是在与主要平台提供的安全最佳实践相结合时.
大型环境通常需要一个DevOps工程师团队, 然而,一个工程师可能足够在一个较小的环境. In addition, 大型环境通常需要工程师在不同时区随叫随到,以处理不同地区发生的紧急情况.
如何为你的项目编写开发运维工程师的工作描述
DevOps工程师的工作描述应该包含有关项目的详细信息, 包括其范围和规模, the tech stack, 以及相关的基础设施. In some cases, 公司将雇佣DevOps工程师加入现有的DevOps团队,使用现有的基础设施, while in other cases, 可能会聘请DevOps工程师从零开始开发部署架构. 应该确定所有相关的DevOps工程师技能, 包括项目的软件语言和框架, cloud providers, and databases.
职位描述还应该包含对项目及其业务目标的高级描述, 识别任何需要的领域知识. 包括候选人将与之合作的团队的信息, 以及对公司文化的概述. It is also helpful to point out soft skills that you consider essential to the job; these might include communication, problem-solving, and adaptability. Mention the job’s location; as many modern applications are deployed on remote infrastructures, 公司经常雇佣远程DevOps工程师. 最后,列出公司提供的津贴和福利. 职位描述越集中,就越容易招聘到合适的DevOps专家.
询问典型应用程序的DevOps生命周期可以衡量应聘者对DevOps核心原则和现代软件部署实践的理解. DevOps在很大程度上依赖于自动化的效率和可靠性,其中CI/CD扮演着关键角色. CI/CD管道的持续集成(CI)方面确保了对代码的任何更改都可以快速集成和测试, 而持续部署(CD)部分则处理它们的自动部署. CI/CD管道还创建了一个恒定的反馈循环, 开发人员在测试过程中发现的每个bug或异常都被告知在哪里. Monitoring tools are vital in DevOps; performance, resource usage, 日志被持续监控, 适当的团队会收到任何潜在问题的警报.
Integration, deployment, testing, 监控是一个不断重复的循环, 有时对于应用程序代码库中的每个更改. However, the DevOps life cycle is not rigid; it is constantly adapting to feedback, 以及随着需求的变化而变化.
DevOps中最常用的工具有哪些?
因为DevOps跨越了SDLC的每个阶段, 有各种各样的工具可用, 每个都满足特定的DevOps需求. 软件版本控制由Git和GitHub等平台处理, 哪些有助于在开发期间跟踪源代码中的更改. Configuration management tools help with infrastructure configuration and automation; these include Ansible, Chef, and Puppet. 许多现代软件应用程序都部署在容器中. Docker是目前构建容器化应用程序最流行的工具, 而Kubernetes则广泛用于容器编排.
像Jenkins和CircleCI这样的CI/CD平台有助于简化自动化测试和部署. 部署应用程序后, 监控和日志记录可以使用Prometheus等工具完成, Grafana, and ELK. 其他常用的工具包括用于自动化测试的Selenium和JUnit,以及用于构建和配置基础设施的Terraform. 这个问题可以让你了解应聘者喜欢的工具,也可以成为一个很好的跳板,让你谈谈他们对各种技术的经验和适应程度.