在一个日益基于云和去中心化的世界中,77% 的企业正在使用或计划使用 DevOps。 与此同时,64% 的各种 IT 职能部门的领导者都在努力寻找熟练的 DevOps 从业者。
因此,随着对有限人才库的争夺仍在继续,开发人员该忙起来了; 他们必须尽早学习 DevOps 作为应用程序开发的一部分。 企业及其最终用户可能能够容忍应用程序级别的错误或实施不当。 尽管开发人员通常可以在工作中学习,但对于 DevOps,这是行不通的:支持产品或服务的次优、易受攻击的基础架构可能会严重损害业务。
此外,希望追求 DevOps 的开发人员必须以组合而非单个元素的形式查看工具。 例如,假设你想在开源操作系统 Linux 上构建一个 Java 语言的应用程序,并将其部署到 Kubernetes 上以实现自动化部署。 这里使用的工具集与希望在单个 Linux 机器上构建和部署应用程序的开发人员非常不同。
这些只是 DevOps 需求量很大的一些原因。 但让我们更深入地研究工程师如何提高技能以填补人才缺口。 (另请阅读:世界上最适合从事科技工作的地方。)
每个工程师都需要的 8 种 DevOps 技能
IT 主管和他们的开发人员可能想知道 DevOps 与他们的日常工作有何不同,因此这是他们今年必须注意的事项以及他们应该加强的技能:
1.云基础设施技能
云运营和 DevOps 齐头并进; 一个的效率取决于另一个。 DevOps 方法对于推动生产至关重要,但云提供了测试、部署和发布代码的平台。
了解云平台(如 AWS 或 Azure)的开发人员将提高组织高速交付应用程序和服务、配置防火墙和管理基础设施的能力。
2. 源代码管理
存储工作结果并与同事共享它们对于 DevOps 文化至关重要。 源代码管理 (SCM) 是一组自动化工具,用于跟踪对程序所做的修订,以确保所有团队成员始终掌握对源代码和相关文件的更改。 开发人员必须尽快接触 Git,试用 GitHub 和 GitLab。
3. 容器编排与管理
开发人员需要了解虚拟化和容器化的概念才能评估风险。
虚拟化使开发人员能够在单个服务器的硬件上运行多个系统。 容器化更加灵活,允许在任何地方部署多个应用程序:在本地服务器或云中的虚拟机上,以及其他环境。 对于大型应用程序容器编排,Kubernetes 是一种流行的开箱即用解决方案,而 Docker Swarm 则适用于小型应用程序。
4.编码和脚本
Python、Ruby 和 Go 是最流行的 DevOps 脚本语言。 开发人员必须至少学习其中一种用于自动化脚本。 此外,Bash 用于 Linux,Shell 用于 Windows。
在日益基于 Linux 的云世界中,Bash 是必不可少的。 例如,DevOps 专业人员需要用不同的语言编写程序并使用 GitHub 管理代码。 掌握每种语言意味着更好地控制 DevOps 如何提高效率。 (另请阅读:构建互联网的 5 种编程语言。)
5. CI/CD 与自动化
DevOps 自动化技能集与编码能力密切相关。
例如,Jenkins 是一种用 Java 编写的开源持续集成和持续交付 (CI/CD) 自动化软件工具。 它用于实施 CI/CD 工作流(称为“管道”)、打包应用程序、运行漏洞扫描和构建 docker 镜像。 温习编码语言的另一个原因。
6. 可观察性和监控
应用程序不能无限期地运行; 他们会有问题。 事实上,它们就像面包一样:很快就会发霉。 开发人员负责监控“模子”(系统健康、弹性和可靠性)并进行迭代。
Prometheus 和 Nagios 等监控工具可以配置为在出现问题时发出警报。 要可视化存储在这些类型工具中的数据,请使用 Grafana 或其替代品之一。 (另请阅读:如何选择合适的应用程序监控工具。)
7. 网络安全基础知识
开发人员应该知道如何安装防火墙、代理服务器、负载平衡器和管理端口。
8. 规划、沟通与协作
脱颖而出的开发人员必须具备“软”技能、有条理和以业务为导向,并且高度致力于打破开发和运营团队之间的孤岛。
一般来说,开发人员必须开始在技术和业务方面与业务利益相关者、同行和其他部门进行沟通,同时将技术视为实现业务成果的工具。
为什么 DevOps 如此受欢迎
传统上,DevOps 的定义是使开发过程更高效的任何事物。 五年前,许多首席技术官 (CTO) 认为只需将开发和运营专业人员放在同一个房间就足够了。
现在,DevOps 已经发展并变得更加复杂:非官方图标是一个无限符号,证明它是一个无限的、连续的过程。 这不像完成一件雕塑或一篇文章。 集成需要持续维护,对产品开发生命周期的一致评估至关重要。
DevOps 还留给特定开发人员或 IT 团队的判断力和知识水平,以实施他们认为合适的方式。 他们提出了自己的仪器偏好、政策和实践,这总是会导致不一致、系统破裂、巨大的技术债务、软件许可证重复和开发人员流失。 (另请阅读:远程工作如何影响 DevOps 和开发趋势。)
当开发人员和工程师仅将 DevOps 视为 CI/CD 管道时,通常会发生这种类型的失败。 虽然这可以通过一系列工具实现快速可靠的代码交付,但它忘记了 DevOps 应运而生的原因。
DevOps 不仅仅是一组工具:它是一种以结果为导向的模型,用于快速交付高质量、影响业务的代码。 它需要严格的文化理念、实践、编码/脚本和与业务功能开发分开的整个软件开发生命周期 (SDLC)。
开发运营挑战
疯狂采用 DevOps 是由于开发人员当前面临的障碍和挑战,例如:
沟通不畅
开发和运营团队说不同的语言:开发人员希望为新功能快速生成代码以推动生产,而运营团队则希望保持稳定,确保项目顺利运行并且更不愿意进行修改。
DevOps 是一种确保这种错误沟通在某种程度上被消除的机制,通过内置的部署计划弥合了竞相生产和缓慢批准之间的差距。
缺乏网络安全培训
开发人员通常缺乏构建安全系统的培训。 运营团队往往更关注安全性,在某些组织中,还有专门的安全团队。
如果开发人员将应用程序投入生产并且运营团队批准了它,但安全部门没有批准,那么修复任何漏洞的成本都是过高的。 这放大了“左移”的需要。
这不仅仅是最后敲响的安全锁; 安全性必须融入产品生态系统的每一层。 (另请阅读:什么是 DevSecOps?)
缺乏监管和合规培训
应用程序不仅需要安全和高性能,而且还必须按照监管机构的要求以规定的方式构建。 事后不得不注入 HIPAA、HITRUST 或 SOC2 的组织可能会痛苦地与第一次就正确构建应用程序的需求相关联。
手动开发成本
手动任务使开发成本高昂且容易出现摩擦。 有很多手动工作——从维护服务器到应用程序测试,再到备份。
这个想法是代码本身没有错误,但事实并非如此。 当测试——功能、回归、负载、压力、安全和性能——是手动完成时,这只是低效的工程。
结论
DevOps 并不能通过简单地部署工具来完成; 秘密在于技术的组合。 了解它们如何相互作用对于开发人员的成功和长期维护至关重要。 需要快速 DevOps 技能的 IT 主管必须评估他们的开发人员已经从上面的列表中掌握了哪些知识,以及他们的团队需要关注的地方。
但最终,DevOps 没有标准的剧本或分步实施指南来保证结果。 这是一个高度专业化的领域,拥有大量的子专业。 因此,这绝不是一个人的工作,需要不同专家之间的强大协调。 真的,这一切都与持续学习和改进有关,就像 CI/CD 一样。 (另请阅读:DevOps 经理解释他们的工作。)