
KRAFTON对PUBG:战场的基于容器的编排的迁移 - 针对多人游戏开发者的见解
基础设施现代化目标: KRAFTON 旨在消除运营瓶颈,并通过从基于会话的游戏服务器转向现代的基于容器的游戏服务器编排,为全球地区数十万名并发玩家改善可扩展性。本质上,模拟内部平台如 Edgegap。
Agones 扩展限制: 该开源游戏服务器编排平台在高峰扩展事件中遭遇了 15 分钟的启动延迟。KRAFTON 的工程团队在定制解决方案上投入了大量精力,将其减少到 3-4 分钟,通过容器注册代理和 Karpenter 的采用。开发人员可以简单地使用完全托管的解决方案,如 Edgegap,该解决方案平均在 3 秒内从冷启动引导游戏服务器。
运营效率收益: 容器化将环境准备时间缩短到 5 分钟以内,并启用了自助服务能力。团队获得了无需 DevOps 干预的测试基础设施的自主访问权限。
隐藏的资源影响: 现代化过程消耗了数年专门的工程精力,这些精力本可以用于游戏体验的改善。大多数工作室无法承担在保持竞争性开发周期的同时进行如此程度的基础设施投资。
托管平台替代方案: 完全托管的解决方案提供了相等的,甚至更好的性能和扩展能力,而无需内部复杂性。工作室通过简单集成来实现企业级基础设施,而不是通过使用像 Edgegap 这样的平台进行多年的实施项目。
在本文中,我们将探讨适用于所有多人游戏开发者的关键见解,涉及Player Unknown的《绝地求生》从基于大厅到基于容器的游戏服务器编排的架构迁移。
该演讲于2024年由KRAFTON的DevOps团队负责人金振勋、金敏锡和全敏旭一起发表。它重点介绍了他们多年来的历程,将PUBG: Battlegrounds的基础设施从传统的EC2服务器转变为完全容器化的Kubernetes生态系统。
他们的经验为游戏开发者提供了宝贵的见解,但也揭示了自我管理此类复杂基础设施的隐藏复杂性和成本。
从传统架构到现代容器化
PUBG: Battlegrounds,当时Steam上同时在线玩家最多的前三名游戏之一,采用了双组件架构。
大厅作为匹配、商店操作和自定义的入口点。然后,会话服务器处理全球分布区域内的核心100人大战游戏玩法。
KRAFTON的DevOps团队负责人金仲勋解释了他们最初的挑战:“QA环境创建流程”需要20分钟至1小时的时间来为DevOps团队提供新的测试环境。这一瓶颈严重影响了开发速度和团队生产力。
现代化旅程于2018年11月开始于会话服务器,接着在2019年10月是大厅服务器,最终在2023年6月采用ARM架构处理器服务器。每个阶段都解决了特定的痛点,同时引入了新的复杂性。
KRAFTON的第一个突破是认识到传统的基于EC2的QA环境资源密集且难以共享。每个环境都需要众多的AWS服务:EC2实例、CodeDeploy、CloudFront、弹性负载均衡、DynamoDB、ElastiCache、OpenSearch、Kinesis、Data Firehose、SQS、VPC、自动扩展、Route 53、IAM和S3。
解决方案是将这些服务容器化在Amazon EKS中,创建共享和专用资源类别。这种架构转变将QA环境创建时间从20-60分钟减少到不到5分钟。团队可以通过一个Web UI自助访问,设计师、开发者、QA工程师和产品经理都可以使用。
生产迁移和服务网格复杂性
搬运生产工作负载比QA环境复杂得多。
生产系统要求零数据库清空、优雅的迁移策略和全面的回滚计划。团队使用集群来同步IP地址、服务名称和位置信息,实施了复杂的服务发现机制。
然而,在迁移过程中出现了流量平衡问题。连接池创建了不均匀的服务负载分布,迫使团队采用Istio服务网格进行动态流量管理、增强安全性和改进可观察性。
会话服务器编排:Agones及其限制
与无状态大厅服务相比,会话服务器呈现出独特的挑战。每个会话服务器运行Unreal Engine专用服务器,维持游戏状态而无需持久存储。KRAFTON需要扩展到数十万的并发会话,同时保持一致的响应时间和成本效率。
他们评估了Agones,这是一个基于Kubernetes的开源多人游戏服务器编排平台。Agones像Kubernetes部署一样管理游戏服务器,每个游戏实例有一个GameServer pod。Fleets管理GameServers组,FleetAutoscalers负责容量管理。该架构在共享的Kubernetes集群中实现了复杂的打包,各个环境共存于同一个集群中,使用命名空间分隔。
尽管KRAFTON取得了令人印象深刻的技术成果,但据金仲勋所述,Agones存在一个关键缺陷:15分钟的服务器引导时间在扩展事件中成为瓶颈。时间线分解后发现多个复合延迟:实例提供(1-3分钟)、实例引导(2-3分钟)和pod提供(5-10分钟)。这些延迟在高峰使用期间玩家需要立即服务器可用时造成了扩展挑战。
KRAFTON的解决方案需要大量的工程投入。他们采用Karpenter减少EC2启动延迟,并实施了带Harbour的容器注册表代理、S3缓存和CloudFront分发。这些优化将引导时间从15分钟以上减少到3-4分钟,但需要深入的Kubernetes专业知识和持续维护,而大多数工作室负担不起。
自我管理的隐藏成本
KRAFTON的技术成就代价高昂且复杂。
管理Karpenter作为开源解决方案,需要具备大多数工作室缺乏的专门知识。团队需要跨多个领域的专业知识:Kubernetes网络、Istio服务网格配置、游戏服务器管理、容器注册表优化和多架构构建系统。
这些优化需要深入的Kubernetes专业知识和持续维护。KRAFTON的专职DevOps团队能够管理这种复杂性,但较小的工作室面临显著的资源限制。很少有工作室能够投入足够的资源去掌握这些技术,同时保持对游戏开发的专注。
基础设施之旅消耗了多年本可以用于游戏改进、新功能或额外内容的工程努力。这对游戏开发工作室来说是个重大机会成本。
更简单的前进之路
与其复制KRAFTON的复杂基础设施之旅,游戏开发者应考虑完全托管的解决方案,例如Edgegap的游戏服务器编排平台。同时,凭借其高度优化的共租方式,所有使用Edgegap平台的游戏可确保游戏服务器从冷启动的平均启动时间为3秒,根据Edgegap的CTO Philip Cote,消除了困扰KRAFTON的Agones实现中的15分钟延迟。
这意味着等待游戏服务器部署的玩家需要在队列中等待当前资源被回收。更具体地说,这意味着游戏服务器无法部署,等待的玩家会感到沮丧并停止完全玩你的多人游戏,因为34%会从你的游戏中流失根据在线延迟报告。
该平台自动扩展至6000万人在60分钟内同时在线,远超大多数游戏需求。最重要的是,它无需专职DevOps团队来管理Kubernetes、容器注册表、服务网格和扩展算法。
工作室可以将工程资源集中在游戏开发上,而非基础设施管理,同时仍然能实现KRAFTON花费多年实现的性能和规模优势。
PUBG是否有专用服务器?
是的,PUBG: Battlegrounds完全在专用服务器上运行,包括大厅和会话组件。与点对点网络不同,专用服务器提供权威的游戏状态管理、反作弊能力和一致的性能,无论个别玩家连接如何。
会话服务器运行Unreal Engine专用服务器实例,每个实例处理一个100人比赛。这些有状态的服务器管理所有游戏逻辑、物理计算和玩家交互,而不依赖比赛之间的持久存储。大厅服务器使用与管理存储后端相连的无状态.NET微服务,支持水平扩展和容错。
PUBG的服务器位于哪里?
PUBG在全球范围内部署了分布式服务器基础设施,其中会话服务器在多个AWS区域动态部署。大厅服务集中在美国东部-1,作为用户管理和匹配操作的中心枢纽。
会话服务器基于玩家需求和地理分布动态部署。这种方法通过将游戏服务器置于接近玩家的地方以最小化延迟,在竞争激烈的游戏中提高了体验,其中毫秒至关重要。地理分布策略在维护集中大厅操作的同时平衡了成本效率和性能要求。
AWS仍需要游戏开发者单独购买位置以确保全球覆盖。需要现代解决方案的游戏开发者可以改用Edgegap的编排平台,该平台接入全球最大的、首个无区域网络。这意味着允许你的多人游戏服务器在所有全球615个以上的地点以统一价格部署,这使得Edgegap可以平均减少58%的延迟,并为游戏的78%的玩家群体提供不到50ms的延迟。
结论
游戏开发者应仔细评估构建和管理复杂的基于Kubernetes基础设施是否符合他们的核心竞争力和资源可用性。
KRAFTON取得了令人印象深刻的成果,他们的多年之旅耗费了大量工程努力,这是较小的工作室无法从核心游戏开发中转移的资源。大多数游戏工作室缺乏KRAFTON丰富的资源和专职的DevOps专业知识,来构建和维护复杂的Kubernetes基础设施。
像Edgegap这样的完全托管平台提供相同的性能优势——即时扩展、全球分布和低延迟——无需专用基础设施团队或多年的实施工作。工作室可以通过简单的集成实现KRAFTON级的基础设施能力,同时将才华横溢的开发者专注于创造出色的游戏体验,而不是管理容器编排系统。
---
本文基于并引用了KRAFTON的原始文章见此。原始内容的所有权利由各自的所有者拥有。
书写者
Edgegap团队
