要想把Dev(开发人员)和 Ops(运营)绑定在一起,还要求他们和谐相处、彼此融合,像不像某种“包办婚姻”?因此,DevOps 注定是一个棘手的问题,如果不能调和好,很难有什么“从此幸福快乐”的结局。
在过去十年中,尽管 DevOps 得到了很大的普及和推广,但是始终有人会怀疑它的价值和有效性,有人认为,如果你去看看 IBM 在 25 年前倡导的软件开发实践,就会发现DevOps 早就已经存在,只是没有正式的标签而已。
关于 DevOps 的争论越焦灼,我们越需要解决一些有关于 DevOps 的问题,好让这些争议转化为积极的能量,为 DevOps的未来注入活力。而以下 3 个问题可以说是组织落地 DevOps 过程中最棘手、最需要重视的。
01 文化问题是 DevOps 的经典问题
相对于敏捷、瀑布、极端、快速、联合或 Scrum 等软件方法论来说,很多人常常将 DevOps 视为一种与之前的软件开发不同的文化。
的确,DevOps不仅仅是技术。DevOps 的技术方面是有限的,而人员、组织和文化方面是无限的。但是,很多人都太过于专注于工具和技术,以至于忘记了技术之外,比如文化的影响。可以说,构建优秀的DevOps 流程的一个重要部分是了解成功所需的文化和组织变革,并将其作为优先事项。
多数公司在面对这样的文化转变时,都会遇见“FUD 问题”:
恐惧(Fear):自动化带来的对工作将被自动化取代的恐惧;
不确定性(Uncertainty):因未知而产生的焦虑;
怀疑(Doubt):采用新技能和新思维方式会让人怀疑资源是否可以调整。
在面对新事物时,产生以上情绪很正常,但实际上新理念、新技术的诞生,带来的往往是社会的进步,以及个人生活、工作质量的提升。
正如飞算云智总裁陈定玮所说的,“用工具实现自动化工作,是为了让个人才能发挥更大价值,而不是让工具取代人。进入自动化时代,我们首先要转变的是思维模式。”
比如 DevOps 所强调的“持续集成”、“持续交付”和“持续部署”等,在 DevOps 实践中这三种方法交织在一起,并在每个领域达到最大价值,这就需要团队具备“持续”的思维模式。
其中,这种“持续”的思维变化涉及到了包括人员、流程、技术和文化等领域。而要想获得持续的思维则需要时间不断学习。通常情况下,不少团队会选择强大的组织变革管理 (OCM) 来实现文化转变,这包括以下 6 个步骤:
变革管理和准备:与内部利益相关者分享我们的目标以及我们将如何实现目标,并设定期望。
执行:在执行层建立明确的一致性和参与度。
利益相关者参与:让每个人都参与进来,确定谁受到影响以及由谁负责,以了解阻力并提供支持。
沟通:在正确的时间将正确的信息传递给正确的人,将利益相关者从意识转变为支持、承诺和准备,将消息传达给组织的多个级别。
能力发展:提供在新文化中取得成功所需的经验和教训。
组织一致性:让角色、结构、流程、政策和系统与期望的业务成果保持一致。
此外,透明度也是持续思维的重要基础。在透明的环境里:每个人都有改进结果的义务和责任。
如果能正确实施以上步骤,就可以将 DevOps文化变化分解成较小的变化,来确保长期的、最终的、质的改变。
02 云与云原生问题是DevOps 的新晋问题
众所周知,云计算已经蔚然成风。最终,所有组织所谓的数字化转型几乎都是跟随云计算的步伐。
这对 DevOps 来说并不能算是一个太好的消息,因为这意味着从初始部署到持续维护、管理和报告,DevOps 的复杂度一点也没有减弱,甚至还出现了新问题要解决。
现在有一点是可以确认:将 DevOps 带入云原生世界是利大于弊的。但是,团队也会因此面临更抽象和虚拟化的软件工具集的新形式和功能,这是一个挑战。
另一个挑战是,在现实生活中云厂商和云平台对 DevOps 的支持是不够的。DevOps 和云计算现在基本难以割舍,虽然云最初主要是一个开发/测试环境,并没有严格的安全性和可用性要求,但是现在云已经发展成为一个运行生产工作的成熟平台。
大多技术被移植到云上后,要构建以云为中心的 DevOps 变得更难了。这是因为在地面(即非云)编程中发生的事情是单个跨功能软件团队的开发。这种基于筒仓的方法是由于公司遗留结构、管理系统等原因出现的。当不同的团队都在重新发明轮子(运行诊断测试、设置 CI/CD 管道、交付升级等)时,这些轮子应该被所有人共享和访问,自然就会出现效率低的情况。
正确实现云原生 DevOps 的关键是:监控和可观察性方法。
以云为中心的 DevOps 团队,可以获取执行可靠的和可观察性的系统所需的日志、指标和跟踪等,这需要一套长期监控和观察系统;除此之外,与系统性能相关的较低级别的粒度信息也很重要。
可观察性包括从监控中收集的所有信息,还包括更高级别的工具,其中一些将是供 DevOps 从业者使用的可视化数据。当两者结合用于云原生 DevOps,可以在较低级别执行任何调试或根本原因分析时优化、保持和维护系统健康。
03 AIOps 与自动化限制是 DevOps 的关键问题
有人说:“人类是最大的安全漏洞。”
曾有分析师这样说到:“我们的客户将资源投入到网络安全工作中,以防止零日攻击和复杂的高级持续性威胁 (APT)。这些威胁虽然足够真实,但主要是外部威胁,可能不像许多组织认为的那样构成巨大威胁。事实上,绝大多数安全漏洞都是人为因素引起的。”
其中包括一些善意的员工犯了无辜的错误,比如成为网络钓鱼攻击的受害者、糟糕的公司密码策略、云配置错误和开放端口、技术债务等。
此时,机器学习、人工智能和自动化可以解决一部分问题。有一些新兴产品可以帮助实施 DevSecOps 最佳实践,并帮助安全团队减少持续的噪音,以便他们可以专注于最重要的威胁。
在传统生产模式中,企业要招聘大量工程师去开发软件,开发完成后,由测试人员进行测试。某种意义上,软件质量主要靠有经验的工程师予以保障。就像飞算云智总裁陈定玮所说的那样:“这就变得不可控制,因为每个人对每个东西的理解是不一样的。”
越来越多的企业开始引入DevOps 模式,软件交付周期越来越短。于是,越来越多的工具平台也开始大量涌现,就比如飞算SoFlu软件机器人,这是“中国原创的全球领先的软件工程共创平台”,截至目前已为包括医疗、金融、制造、零售等在内的八大行业的上百家机构提供了技术服务,被数千位专业人士使用体验。
飞算 SoFlu 软件机器人的核心理念是实现软件开发全流程全自动。通过自动化的方式做到一“人”全栈解决:后端开发、前端开发、测试、运维。并且门槛低,配置灵活,普通开发人员也能轻松上手,让人人都能成为全栈工程师。
飞算 SoFlu 软件机器人网站地址:www.feisuanyz.com
当然,除了自动化之外,AIOps 也是 DevOps 需要考虑的。当前,可观察性正在向 AIOps 发展。最终,可观察性和AIOps的目标是:了解所有这些环境和技术之间发生的事情,以便可以尽快检测和解决问题,从而使系统保持高效和可靠。