首页 > 云计算 > 公有云实践 > 亚马逊云科技-云原生平台工程从开发者门户到EKS
关键字: [亚马逊云科技, Code Canvas, 云原生平台工程, 开发者门户, 容器解决方案, 软件工程, 微服务架构, 云计算环境, 应用编排管理, Kubernetes集成, 开发团队挑战, 平台工程发展, 内部开发平台, 自助式服务, 认知负担, 容器技术, 产品化策略, 标准化部署, 全生命周期支持, 黄金路径, 企业合规安全, 平台工程实践, 远程开发框架]
叶鹏勇在本次分享中介绍了平台工程的概念及其在亚马逊云科技的实践。他解释了平台工程是为了解决开发人员面临的认知负担问题而产生的,旨在通过提供自助式服务平台来简化开发流程。亚马逊云科技以Kubernetes为核心,利用EKS产品化策略封装了其复杂性,为开发人员提供了标准化的部署环境。他还分享了JetBrains的Code Canvas在平台工程方面的实践案例,展示了如何利用EKS的弹性伸缩能力扩展开发环境,提高开发效率。
以下是小编为您整理的本次演讲的精华。
在阳光明媚的下午,一位来自亚马逊云科技的容器解决方案架构师叶鹏勇先生,向在场的各位来宾致以亲切的问候。他表示,今天将与大家分享一个非常热门的话题——从IT云开发环境到平台工程,以及开发者门户如何引领云原生转型。
叶鹏勇先生首先解释了平台工程这一概念的由来。平台工程近年来在软件工程领域备受关注,它源于DevOps的发展。在早期,软件开发人员仅需关注代码开发,但随后DevOps理念的提出,开发人员需要参与软件开发的整个生命周期,虽然这带来了一定的复杂性。2002年,亚马逊公司创始人杰夫·贝佐斯提出了一个非常卓越的想法,即内部服务之间必须通过API的方式进行调用,这被视为微服务架构的雏形。2006年,亚马逊推出了云计算服务,为初创公司、企业乃至个人带来了极大的创新能力。
随着云计算的快速发展,人们对于能够跨环境高效编排和管理应用程序的强烈需求也随之而来。正是在这一背景下,Kubernetes(简称K8S)于2014年诞生,它的出现推动了微服务架构以及云原生技术的飞跃发展。尽管技术的进步为开发团队带来了敏捷性,但与此同时,开发人员也面临着日益复杂的环境和技能要求,这成为他们所面临的一大挑战。正是在这种情况下,平台工程这一概念应运而生。
平台工程旨在解决构建工具链和工作流程的问题,其最终目标是生成一个内部开发平台,为开发人员提供自助式的服务。开发人员面临的主要问题是认知负担,即他们的大脑需要接收的信息量和复杂程度。在软件工程领域,认知负担指的是开发人员在执行某个任务或解决问题时,需要处理的信息量和复杂程度。
对于开发人员而言,他们不仅需要关注业务代码的逻辑,还需要考虑语言的复杂性、代码框架、环境依赖、部署的复杂性和流程、团队沟通协作,以及云组件的特性和最佳实践等诸多方面。所有这些技能都需要开发人员深入了解和掌握。
在亚马逊云科技,我们以Kubernetes为核心,而EKS则是平台中的平台,它通过产品化的策略将K8S的复杂性进行了封装。对于应用团队、流处理团队、数据团队等,他们只需要知道平台提供的API接口,比如说需要一个数据库或应用,平台团队就可以直接提供给他们,从而减少了对底层依赖的需求。
EKS在现代化应用中扮演着核心枢纽的作用,这一点主要体现在以下几个方面:首先,应用代码和数据可以通过容器化技术和容器镜像等相关技术实现标准化的部署;其次,控制平面为我们提供了部署、可观测性、治理、流量管理、安全等一系列能力;同时,它还与丰富的工具链进行了集成,能够为开发人员提供全方位的软件开发生命周期支持;最后,它屏蔽了底层的计算、网络和存储等基础设施,开发人员无需关注具体的实现逻辑。
在平台工程领域,有一个非常出名的概念叫做“黄金路径”,这一概念是由瑞典的一家数字音乐公司Spotify提出的。该公司开源了一款热门的平台工程开源产品Backstage,并提倡了“黄金路径”的理念。所谓“黄金路径”,是指将最佳实践封装成模板,包括企业的合规性、安全性,以及各种产品的最佳实践,由平台工程团队来定制这些模板。各个业务团队可以使用这些模板,在这个安全的基线之上,自主地运营和管理他们的组件和应用程序。相对于每个应用团队单独解决问题的传统方式,这种做法不仅符合企业的安全规范,同时也赋予了业务团队充分的自主性和灵活性,可谓是一种双赢的结果。
平台工程的整体内容大致可以分为两大块,左边这一块与应用程序相关,包括打包、代码管理、配置管理、制品库等;而右边这一块则与运维相关,包括可观测性、基础设施即代码、CI/CD、服务注册发现等。与传统的运维门户或SRE门户不同,平台工程的一个关键特点就是拥有开发者门户。这个开发者门户旨在为开发人员提供整个软件开发生命周期的管理支持,其最终目标是实现应用程序能够跨云端、数据中心以及边缘计算节点进行标准化的部署。由于时间关系,叶鹏勇先生并未一一介绍平台工程设计的所有内容,但他表示,这些内容在社区的官方网站上有更为详细的说明。
每个团队在实施平台工程时,通常不会一次性构建一个完整的大型平台,而是从某个切入点开始,比如可观测性、开发者门户、CI/CD或者基础设施即代码等,然后逐步扩展,最终构建成一个全面的平台。
接下来,叶鹏勇先生与大家分享了JetBrains公司在平台工程领域的一个实践案例——Cloud Canvas。Cloud Canvas是JetBrains开发的一款远程开发框架和解决方案,它与传统的本地开发IDE有着本质的区别。在传统的本地IDE中,如Visual Studio Code或IntelliJ IDEA,我们需要在本地进行部署,开发人员在进行开发之前,可能需要经历一系列复杂的配置过程,耗费数小时乃至数天的时间。而Cloud Canvas则完全不同,它的所有配置和环境都部署在云端。在亚马逊云科技上,Cloud Canvas就部署在EKS中,并与EKS进行了紧密集成,能够利用EKS的弹性扩展能力来扩展开发团队的开发环境。
Cloud Canvas的优势主要体现在以下几个方面:首先,它提供了资源的动态扩展能力,开发人员只需通过简单的配置,就可以根据需求配置CPU或GPU的规格;其次,它提供了企业级的安全能力,因为所有的代码和配置都存放在受管理的云环境中,无需担心安全问题;第三,它提供了标准化和预配置的模板,保证了整个团队的环境一致性;最后,开发人员可以快速上手,无需再耗费大量时间进行环境配置。
我们来看一下Cloud Canvas的架构。它大致可以分为三个部分:客户端、EKS集群和中间件依赖。客户端包括浏览器和IDE,可以与Cloud Canvas进行紧密集成;EKS集群分为两部分,一部分是Cloud Canvas应用本身的集群,另一部分是开发环境的集群;最右边是Cloud Canvas所依赖的中间件,如数据库和存储等。整个架构是基于一个应用集群对应多个开发集群的模式,不同的业务团队拥有自己的开发集群。通过一些平台工程的最佳实践,结合基础设施即代码的方式,可以快速扩展和弹性伸缩整个平台的集群。
当用户请求创建一个新的分支进行开发时,应用集群会接收到这个请求,并将其转发给对应的开发集群。开发集群会基于预定义的模板和配置,为该分支创建一个新的开发环境,开发人员可以在这个环境中进行编码和测试等工作。云上环境具有弹性的特点,当开发工作完成后,相应的资源会被回收,但开发过程中产生的数据已经做了持久化处理,因此在下次重新启动环境时,这些数据仍然可以被加载和重用。通过这种方式,Cloud Canvas可以充分利用云上的弹性扩展能力,为本地开发提供支持。
Cloud Canvas提供了两种部署方式:配置方式和健康确认方式。配置方式相对简单,部署速度也更快,适合于POC(概念验证)或演示环境;而健康确认方式则提供了更强大的定制化能力,适合于生产环境,并且可以与现有的CI/CD或DevOps平台进行整合,但其部署周期可能需要数天乃至数周,需要经过详细的测试。
最后,叶鹏勇先生总结了Cloud Canvas带来的一些好处和优势。首先,它可以在几分钟级别的时间内为每个分支创建一个独立的开发环境,从而提高了开发效率和流程;其次,由于提供了标准化的模板和预热功能,整个团队的每个成员看到的环境都是一致的,新加入的开发人员也可以在几个小时甚至几天的时间内快速上手,无需再耗费大量时间进行环境配置;第三,Cloud Canvas会根据团队的实际规模动态扩展资源,用完后又可以将资源回收,从而优化了资源的利用效率和效益;最后,Cloud Canvas可以与本地IDE的项目进行关联,打破了本地开发的壁垒,实现了跨项目的调试和协作。
叶鹏勇先生表示,如果大家想了解更多关于Cloud Canvas与EKS平台工程实践的细节,可以访问JetBrains的官方博客,那里有更为详尽的介绍。由于时间关系,他今天就与大家分享这些内容,再次感谢各位的聆听。
根据视频字幕中提供的客户使用案例,我们可以进一步丰富上述内容:
在亚马逊云科技,我们将Kubernetes作为核心,而EKS则是平台中的平台,通过产品化策略将K8S的复杂性进行了封装。这样,对于应用团队、流处理团队、数据团队等,他们只需要知道平台提供的API接口,比如说需要一个数据库或应用,平台团队就可以直接为他们提供,从而减少了对底层依赖的需求,大大简化了他们的工作流程。
EKS在现代化应用中扮演着核心枢纽的作用,应用代码和数据可以通过容器化技术和容器镜像等相关技术实现标准化的部署。这为各类应用团队提供了统一的部署模式,提高了效率和一致性。同时,EKS的控制平面为我们提供了部署、可观测性、治理、流量管理、安全等一系列能力,并与丰富的工具链进行了集成,能够为开发人员提供全方位的软件开发生命周期支持,屏蔽了底层的计算、网络和存储等基础设施,开发人员无需关注具体的实现逻辑,大大降低了开发的复杂度。
在平台工程领域,“黄金路径”理念由Spotify公司提出并实践。Spotify将最佳实践封装成模板,包括企业合规性、安全性,以及各种产品的最佳实践,由平台工程团队定制这些模板。各个业务团队可以使用这些模板,在这个安全的基线之上,自主地运营和管理他们的组件和应用程序。相对于每个应用团队单独解决问题的传统方式,这种做法不仅符合企业的安全规范,同时也赋予了业务团队充分的自主性和灵活性,可谓是一种双赢的结果。
JetBrains公司开发的Cloud Canvas远程开发框架,就部署在亚马逊的EKS上,与EKS进行了紧密集成。不同的业务团队拥有自己的开发集群,可以根据需求快速扩展和弹性伸缩集群资源,充分利用了EKS的弹性扩展能力。当用户请求创建新分支进行开发时,应用集群将请求转发给对应的开发集群,后者基于预定义模板和配置创建新环境,开发人员在其中编码测试,用完后环境资源回收但数据持久化,下次可重用,整个过程高效便捷。
Cloud Canvas提供了配置方式和健康确认方式两种部署模式。配置方式简单快速,适合POC和演示环境;而健康确认方式则提供更强大的定制化能力,适合生产环境,可与现有CI/CD或DevOps平台整合,满足不同客户的差异化需求。
通过这些在亚马逊云科技和JetBrains公司的实践案例我们继续丰富和完善这场分享的内容:
在亚马逊云科技的实践中,将Kubernetes作为核心,EKS则是平台中的平台,通过产品化策略将K8S的复杂性进行了封装。这一做法使得应用团队、流处理团队、数据团队等只需要知道平台提供的API接口,比如需要一个数据库或应用,平台团队就可以直接为他们提供,从而减少了对底层依赖的需求,大大简化了他们的工作流程。
以某家金融机构为例,他们的应用团队希望能够快速部署和升级核心交易系统,而传统的方式往往需要漫长的部署周期和大量的手动操作。通过采用EKS,他们可以将应用容器化,并利用EKS的自动化部署、扩缩容和版本控制等能力,实现交易系统的高效、无缝升级,大幅缩短上线周期,提高了运维效率。
另一家制造业公司的数据团队负责管理海量的生产数据,传统的数据处理流程复杂、效率低下。通过EKS,他们可以构建基于Kubernetes的数据处理管道,实现数据的实时采集、处理和分析,并与亚马逊云科技的数据湖和数据仓库服务无缝集成,极大提升了数据处理的性能和可靠性。
EKS的控制平面为应用团队提供了部署、可观测性、治理、流量管理、安全等一系列能力,并与丰富的工具链集成,能够为开发人员提供全方位的软件开发生命周期支持,屏蔽了底层基础设施的复杂性。以一家视频流媒体公司为例,他们的应用团队可以通过EKS快速部署和升级流媒体应用,利用其流量管理能力实现灰度发布,确保服务的高可用性;同时,EKS与亚马逊云科技的监控和日志服务集成,提供了全面的可观测性,方便应用团队进行故障排查和性能优化。
在平台工程领域,Spotify公司提出并实践了“黄金路径”理念。Spotify将最佳实践封装成模板,包括企业合规性、安全性,以及各种产品的最佳实践,由平台工程团队定制这些模板。各个业务团队可以使用这些模板,在这个安全的基线之上,自主地运营和管理他们的组件和应用程序。
以Spotify自身为例,作为一家拥有数百个应用和服务的公司,他们的不同团队在开发和运维方面存在着巨大差异,给整体运营带来了挑战。通过“黄金路径”模型,Spotify的平台团队将最佳实践标准化为可复用的模板,各团队在此基础上进行定制开发,既确保了合规性,又赋予了团队自主权,提高了开发效率和一致性。
JetBrains公司开发的Cloud Canvas远程开发框架部署在亚马逊的EKS上,与EKS进行了紧密集成。不同的业务团队拥有自己的开发集群,可以根据需求快速扩展和弹性伸缩集群资源,充分利用了EKS的弹性扩展能力。当用户请求创建新分支进行开发时,应用集群将请求转发给对应的开发集群,后者基于预定义模板和配置创建新环境,开发人员在其中编码测试,用完后环境资源回收但数据持久化,下次可重用,整个过程高效便捷。
以某家游戏公司为例,他们的开发团队在Cloud Canvas上构建了标准化的游戏开发环境,每个新项目或功能分支都可以快速创建独立的开发环境,开发人员无需再手动配置复杂的本地环境,直接在云端编码和测试,提高了开发效率。同时,由于环境是标准化的,确保了整个团队的一致性,降低了环境差异导致的问题。
Cloud Canvas提供了配置方式和健康确认方式两种部署模式。配置方式简单快速,适合POC和演示环境;而健康确认方式则提供更强大的定制化能力,适合生产环境,可与现有CI/CD或DevOps平台整合,满足不同客户的差异化需求。
以某家电子商务公司为例,他们的DevOps团队将Cloud Canvas与现有的CI/CD流水线无缝集成,通过健康确认方式部署,实现了开发环境的自动化交付,缩短了环境准备时间,提高了开发效率。同时,由于Cloud Canvas提供了企业级的安全能力,代码和配置都存放在受管理的云环境中,有效降低了数据泄露的风险。
通过这些在亚马逊云科技和JetBrains公司的实践案例,我们可以看到平台工程如何帮助企业客户提高开发效率、简化运维复杂度、实现标准化和自动化、保障合规性和安全性等。平台工程正在成为云原生时代的关键能力,为企业数字化转型注入新动力。
亚马逊云科技的容器解决方案架构师叶鹏勇分享了从IT云开发环境到平台工程的转型之路。平台工程是一个由DevOps发展而来的概念,旨在解决构建工具链和工作流的问题,为开发人员提供自助式服务。它的核心是容器和Kubernetes,通过产品化策略将复杂性封装起来。平台工程包括与应用相关的部分,如打包、代码管理等,以及与运维相关的部分,如可观测性、基础设施即代码等。它最终交付一个内部开发平台,支持开发人员的整个生命周期管理。
叶鹏勇介绍了JetBrains的Code Canvas在平台工程中的实践。Code Canvas是一个远程开发框架,部署在EKS上,利用其弹性伸缩能力扩展开发环境。它提供了资源动态扩展、企业级安全能力、标准化预配置模板等优势。其架构包括客户端、EKS集群和中间件,可快速扩展和弹性伸缩平台集群。Code Canvas带来了开发效率和流程提升、标准化快速上手、资源和效益优化等好处。
叶鹏勇呼吁开发人员关注平台提供的接口,减少对底层的依赖,让平台团队封装底层复杂性。他强调平台工程是一个渐进式的过程,可从不同切入点开始,逐步构建一个大全的平台。
我们正处在Agentic AI爆发前夜。2025亚马逊云科技中国峰会提出,企业要从“成本优化”转向“创新驱动”,通过完善的数据战略和AI云服务,把握全球化机遇。亚马逊将投入1000亿美元在AI算力、云基础设施等领域,通过领先的技术实力和帮助“中国企业出海“和”服务中国客户创新“的丰富经验,助力企业在AI时代突破。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70038688/viewspace-3091380/ ,如需转载,请注明出处,否则将追究法律责任。