在以激烈竞争和不断升级的客户需求为特征的行业中,速度已成为关键的差异化因素。凭借支持应用程序快速开发和部署的能力,云计算已成为实现这一速度的圣杯——简单的按需容量,可随业务扩展,这些全部都采用运营成本模型。
公共、私有和混合云的使用量激增,容器和编排平台,特别是 Kubernetes,在开发过程中找到了自己的位置。随着企业转向外部解决方案以发展运营、支持新的工作方式并增强业务弹性,全球大流行只会加速云、容器和 Kubernetes 的采用。
就在这时,现实中的困难出现了。
云计算的发展——特别是 Kubernetes——导致系统和组织的复杂性,这些复杂性在多个方面都没有得到很好的理解。Kubernetes 带来了意想不到的挑战,一项研究发现,94% 的采用 Kubernetes 的企业表示这是他们的痛苦之源。
企业努力实施 Kubernetes 的重大教训是速度会以高云成本的形式产生摩擦,而这些增加的成本实际上会减缓企业发展势头。
然而,云计算成本的不断增加只是影响的一个方面,因为 Kubernetes 的采用及其产生的复杂性也给运行它的工作人员带来了新的负担。
这就引出了一个问题:企业是否愿意牺牲敏捷性来换取长期盈利能力和运营倦怠的风险?
1、简化的尝试并没有解决真正的问题
为了解决系统复杂性问题,开发团队采用了专门构建的可观察性平台来理解构成应用程序的组件(包括软件和硬件)之间的关系,以及它们如何为最终用户服务。不幸的是,被动的、只关注性能的可观察性平台并不能解决问题,它们只是识别问题,之后应该做出何种措施?
企业需要寻求其他方法来解决这些问题,这导致了云上自动化运维和构建运行团队的出现,他们负责理解需要迁移到云的应用程序移动和构建所带来的复杂性。云上自动化运维组织汇集了人员、流程和工具,专门关注云模型如何影响 IT 和业务的所有领域。构建-运行的目标是让开发团队对应用程序和服务的日常性能负责,并使开发人员能够专注于产品而不是项目。
与此同时,企业需要实施云成本优化框架,将跨职能的利益相关者聚集在一起。这个伪应用级指导委员会旨在为云计算的可变支出模型增加财务责任。
这需要很多时间、人员和流程来解决问题。
2、打破常规之后的措施
虽然曾经流行的口号敦促软件开发人员快速行动并打破常规,但今天的现实是常规已被打破。我们需要以一种允许开发人员提高速度的方式来修正它们,同时确保我们不会陷入反复破坏相同事物的陷阱。
对于那些将云计算视为敏捷和速度的圣杯的企业来说,曾经是灵丹妙药的云,现在已成为无法控制的成本和管理复杂性的来源。这会在两方面产生问题:
利润率下降:首先,不断上升的云成本开始侵蚀利润率,增加总收入成本 (COR) 或销售成本 (COGS),以及错过的 SLA;其次,当开发团队被告知要降低云成本时,他们不知道如何平衡这些削减与对业务承诺的服务水平协议的影响。
当云计算的成本取代了它旨在创造的业务价值时,就会导致业界广为流传的云悖论:如果你不开始使用云,你就是疯了;如果你坚持下去,你就疯了。
3、AI 和 ML:新的工具如何提供帮助
幸运的是,机器学习 (ML) 等技术正在进入这一过程,并能够使优化性能和成本之间权衡的能力得以改善。借助这项技术和一类新的工具,开发团队可以做个人无法做到的事情:彻底了解和调整所有可用变量,以确保针对每个应用程序优化性能和成本。
人工智能 (AI) 和机器学习已成为支持速度任务不可或缺的一部分。当然,这些新工具正在进入部署过程。因此,企业开始制定实践来管理 AI 和 ML 工具的采用和集成。AIOps 工具现在使 Ops 团队能够通过利用分析和机器学习来实现自动化和改进运营。
同时,DevSecOps 致力于将安全集成到软件开发的所有阶段的过程自动化。最后,持续优化在持续集成和持续开发之间的 CI/CD 管道中找到了自己的位置,并在投入生产之前使用机器学习来优化 Kubernetes 配置。
通过识别需要解决的问题并找到理想的解决方案,这种持续优化是解决可能减慢应用程序交付速度的瓶颈的关键。这就是机器学习远远优于人类认知能力的地方。
通过在 CI/CD 流程中实施这些功能,开发人员和运营团队现在有了工具来应对那些降低企业速度的云账单,并加速了他们向云的过渡。
4、当今云优先开发的优化解决方案
新的资源优化解决方案可以帮助企业主动确保效率,并在成本和性能之间进行智能业务权衡,而无需耗时、无效的反复试验。
使用 ML,这些解决方案可以自动发现最佳应用程序配置。部分企业采取主动的方法,通过结合性能测试在预生产中的应用程序上生成负载,调整应用程序以满足负载,然后为 Kubernetes 创建理想的配置以将这些应用程序部署到生产环境中。这有助于工程师节省时间,而不会增加运行应用程序的成本或影响应用程序的性能和可靠性。
使用资源优化解决方案可以最大限度地减少资源浪费,使开发人员能够根据业务目标做出决策并减轻复杂性,以便开发人员可以将精力集中在实际开发上。这样可以使速度加快成为可能。