现代应用程序开发团队需要完全托管的自助服务平台。向Kubernetes的转变使得许多团队争相在编排工具上构建平台。对内部开发平台的需求由大型工程团队实现,他们使用定制工具来满足非常具体的技术、流程和人员需求,例如优步的Devpod和Zalando的Sunrise。这种方法绝对值得效仿,但对于许多工程团队来说可能是遥不可及的,因为构建平台的成本很高,并非所有软件团队的实际期望。

CTO的职责是平衡技术考虑和业务目标。为产品提供竞争优势的责任植根于工程任务,但通常与业务成果相关。铺设好的生产道路通常不会转化为明显的业务利益。

以下是CTO办公室的优先事项列表。这个简短的列表是根据与数位经验丰富的技术领导和新加入该角色的人员的讨论而编制的。存在一些假设:容器是事实上的应用程序交付机制;Kubernetes的使用被强烈考虑,或者已经在使用;云原生技术构成了大部分管道。

流畅的应用程序交付

应用程序平台必须能够为开发团队提供高速率。高速是两个因素的派生,即快速的应用程序交付和短的开发周期。短的开发周期来自于减少开发人员的认知负荷和对现代实践(如CI/CD)的原生支持。应用程序平台必须支持从源代码开始的构建工作流。平台还必须能够以可重复的方式在任何远程登台实例上支持应用程序的部署。如果它能够结合团队现有的工作流程(例如触发测试和更新远程容器注册),则会获得加分。

Polyglot支持

一致性是应用程序平台的标志。平台必须支持可重复和可复制的按需构建。提升平台体验的是跨所有语言和框架扩展同质体验的能力。无论团队使用何种语言,保持相同的体验都有助于支持当今能够以任何编程语言编写服务的需求。如果平台支持原生构建过程以实现这一点,那么扩展和定制此构建过程的能力是平台成功的关键因素。当软件工程团队有一些特定的需求,并且必须遵循复杂或难以置信的特定步骤来生成容器镜像时,这个因素就显得尤为突出。

除了少数例外,现代应用程序都是数据驱动的。平台必须代理应用程序和相关数据服务之间的连接和消费,以便为开发人员提供承诺的效率。容器的使用使这一点更加复杂化,更不用说在Kubernetes上编排它们了。通过使用服务网格或服务代理策略来减轻这一负担是解决这一问题并使其平台更加引人注目的常见方法。

内嵌安全

与传统工作负载相比,容器化环境的安全性非常不同。由于容器工作负载的短暂性以及它们所构建的架构(共享内核、权限、网络行为等),传统的工作负载安全方法将不起作用。因此,为与容器和容器编排器一起工作而构建的平台必须考虑所有这些变化。一个基本的最佳实践是使用包含所有必需依赖关系的编译二进制文件。构建过程还应具有一个指令,以去除应用程序不需要的所有组件。该平台扩展的安全性也应扩展到构建瘦镜像之外。该平台必须有助于保持容器注册的安全。定期扫描镜像被认为是一个重要的附加值。为所有镜像签名正迅速成为一种最佳做法。在编排部署的平台组件之间建立一个零信任架构对于改善工作负载的安全态势有很大的帮助。

可调整的抽象

Kubernetes的巨大成功及其运维复杂性使得迫切需要对其进行抽象化。进入高门槛加上详尽的界面,需要进行抽象化,以帮助促进整个组织采用Kubernete。只是重申一下,并不是所有团队都可以“多做工作,让其他团队少做工作”。抽象Kubernetes原语以使开发人员体验更好的能力是平台的核心目的。

打造“固执己见”的平台有时会适得其反。开发人员的经验是软件工程团队之间技术需求和部落差异的脆弱组合。对于软件工程团队来说,能够定制一个平台以满足他们当前的需求,并随着他们未来的工作流程而发展,这对于继续使用工具至关重要。一个能够提供铺平道路的平台,同时能够灵活地满足软件工程团队的需求,成功的可能性更高。

开源平台在这方面得分很高,尤其是那些具有模块化架构的平台,其中一个组件可以替换为团队认为合适的其他组件。

外部因素

技术能力领域之外的几个重要功能对平台的成功起着关键作用。其中最重要的是工具外围社区的力量。任何成功的开发人员工具都会在开发人员受众中获得忠实的追随者。该工具的许多积极因素都源自这种认知过剩。采用者可以期待从业者的支持和指导,以及以分散方式传播的大量知识。

许可和责任等商业方面有时会影响到平衡,特别是在要求严格遵守的垂直行业。在这些情况下,依附于商业实体对成功采用这些平台起着作用。

平台示例

一个好的出发点是从市场上现有的众多解决方案中的一个开始,这些解决方案将适合组织的需求。提供抽象以改善Kubernetes开发人员体验的可用工具示例如下:

RedHat Openshift——一个用于大规模构建、现代化和部署应用程序的统一平台。

Weaveworks GitOps——一款免费开源的持续交付产品,可在任何Kubernetes中运行应用程序。

Gimlet——一个基于GitOps的开发平台,基于事实标准。

Epinio——安装到任何Kubernetes集群中,将应用程序从源代码带到部署。

Cloud Foundry Korifi——云原生工作负载的Cloud Foundry体验。

D2IQ——使大规模构建和运行Kubernetes变得更容易。

KubeFirst——一个完全自动化的开源应用程序交付和基础设施管理GitOps平台。

Qovery——一个平台,可以轻松复制基础设施,并在AWS中创建类似生产的环境。

Acorn——Kubernetes的简单应用程序部署框架。

结论:自我评估

我们鼓励你在开始选择平台以实现Kubernetes卓越生产的铺平道路之前,创建一份对组织最重要的因素清单。通过这样的练习,评估有望使你更容易找到一个优化的平台,以满足工程团队的需求。