Keidrych是一名云架构师,他指导组织通过多/多云原生计算基础(CNCF)技术的泥潭,从而使他们的技术基础对所有人都是安全的, 对客户可靠, 而且经济效益高, 利用焦土能力实现对工厂规模架构的零生产影响. Keidrych believes trusted technology serves humanity; a 5% increase in internet or cyberspace trust results in a $3,人均GDP增长1000多万.
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工作的候选人应具备微软技术栈方面的专业知识, 其中包括 .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工程师.
Python -因为它的可读性, versatility, 以及跨平台兼容性, Python在DevOps工程师中越来越受欢迎. Python的语法清晰而简洁, 使其易于学习,并适合编写自动化任务脚本. Python脚本可用于自动执行单元测试等任务, 基础设施配置, 管理配置. Python还有大量现成的库, frameworks, 和资源, 许多是专门为DevOps任务设计的, including Ansible, Fabric, and Terraform.
Java 在DevOps中,Java可能没有Python那么受欢迎, 但由于它在企业的广泛应用,它仍然具有相关性. 由于Java的健壮性和成熟度,许多应用程序依赖于Java, 和DevOps开发人员通常需要使用Java应用程序. Additionally, Java经常用于开发微服务, DevOps工程师应该熟悉用于构建它们的框架, such as Spring Boot 和Eclipse球衣.
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工程师所必需的知识. 许多DevOps工具, 包括起程拓殖, 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任务设计的库和框架. 许多DevOps工具, 包括码头工人, Kubernetes, and Terraform, 是用Go构建的,以便利用它的性能, efficiency, 以及跨平台能力. 而不是每个角色都需要Go, 它的性能和特性使它成为任何DevOps开发人员工具包中的一个有价值的工具.
针对大流量优化大规模应用 -实现大规模可扩展性需要不同的方法. 在大规模环境中工作的开发人员的重点是自动化相同实例的水平扩展, 通常与实现灵活的体系结构相结合, such as microservices. 从事微服务的DevOps专家利用的工具有 Kubernetes or Terraform, 或AWS ECS等特定于云的产品, AWS CloudFormations, 谷歌云部署管理器, 和Azure资源管理器. 而大规模环境本身并不需要它, 在云上部署通常更省时, 特别是在与主要平台提供的安全最佳实践相结合时.
大型环境通常需要一个DevOps工程师团队, 然而,一个工程师可能足够在一个较小的环境. In addition, 大型环境通常需要工程师在不同时区随叫随到,以处理不同地区发生的紧急情况.
如何为你的项目编写开发运维工程师的工作描述
DevOps工程师的工作描述应该包含有关项目的详细信息, 包括其范围和规模, 技术栈, 以及相关的基础设施. 在某些情况下, a company will hire DevOps engineers to join an existing DevOps team with an existing 基础设施; while in other cases, 可能会聘请DevOps工程师从零开始开发部署架构. 应该确定所有相关的DevOps工程师技能, 包括项目的软件语言和框架, 云提供商, and databases.
职位描述还应该包含对项目及其业务目标的高级描述, 识别任何需要的领域知识. 包括候选人将与之合作的团队的信息, 以及对公司文化的概述. It is also helpful to point out soft skills that you consider essential to the job; these might include communication, 解决问题, 和适应性. Mention the job’s location; as many modern applications are deployed on remote 基础设施s, 公司经常雇佣远程DevOps工程师. 最后,列出公司提供的津贴和福利. 职位描述越集中,就越容易招聘到合适的DevOps专家.
询问典型应用程序的DevOps生命周期可以衡量应聘者对DevOps核心原则和现代软件部署实践的理解. DevOps在很大程度上依赖于自动化的效率和可靠性,其中CI/CD扮演着关键角色. CI/CD管道的持续集成(CI)方面确保了对代码的任何更改都可以快速集成和测试, 而持续部署(CD)部分则处理它们的自动部署. CI/CD管道还创建了一个恒定的反馈循环, 开发人员在测试过程中发现的每个bug或异常都被告知在哪里. Monitoring tools are vital in DevOps; performance, 资源使用情况, 日志被持续监控, 适当的团队会收到任何潜在问题的警报.
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 基础设施 configuration and automation; these include Ansible, Chef, and Puppet. 许多现代软件应用程序都部署在容器中. Docker是目前构建容器化应用程序最流行的工具, 而Kubernetes则广泛用于容器编排.
像Jenkins和CircleCI这样的CI/CD平台有助于简化自动化测试和部署. 部署应用程序后, 监控和日志记录可以使用Prometheus等工具完成, Grafana, and ELK. 其他常用的工具包括用于自动化测试的Selenium和JUnit,以及用于构建和配置基础设施的Terraform. 这个问题可以让你了解应聘者喜欢的工具,也可以成为一个很好的跳板,让你谈谈他们对各种技术的经验和适应程度.