现代化 .NET 应用程序的规模:DraftKings 成功原则

云计算
re:Invent
0
0
## 视频 <video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video> ## 导读 在本论坛中,了解 DraftKings 如何在其快速发展的组织中安全地对基础架构和软件进行重大更改,并从 Windows 上的 .NET Framework 转移到 Linux 和 Kubernetes 上的 NET 内核。然后,深入研究它们是如何将 .NET Core 的“一路异步”与 Kubernetes 上的 HPA 相结合,极大地提高了游戏日负载的吞吐量。了解 DraftKings 实施的一些关键性的最佳实践,以及这些技术如何帮助简化和标准化内部部署和 [Amazon EKS](https://aws.amazon.com/cn/eks/?trk=cndc-detail) 工作负载的 CI/CD 和开发人员体验。 ## 演讲精华 <font color = "grey">以下是小编为您整理的本次演讲的精华,共1600字,阅读时间大约是8分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font> 会议主要探讨了DraftKings在规模化现代化.NET应用方面所遵循的成功原则,以及亚马逊云科技如何为客户提供指导和工具,助力他们完成现代化进程。 亚马逊云科技的现代专家Chris Evilsizer欢迎了与会者,并介绍了演讲嘉宾——他本人、负责微软工作负载的亚马逊云科技产品经理Manny,以及DraftKings的资深架构师Dave Muzak。 Chris表示,会议的目标是激励与会者迈出现代化进程的第一步,或者如果他们已经在这个过程中,为他们提供帮助。他强调,与会者无需独自开始现代化进程——亚马逊云科技拥有工具、资源和经验来加速现代化工作,确保成功。 Chris列举了一些可能吸引与会者的常见场景: - 有些人可能希望提高性能并降低基础设施成本,DraftKings通过现代化实现了97%的成本节省。Dave将分享现代化如何实现这些性能和成本效益的成果。 - 其他人可能已经确定了需要现代化的工作量,但不确定下一步该怎么做——如何说服利益相关者并执行计划。演讲者将讨论DraftKings是如何应对这一问题的,以及亚马逊云科技提供工具来构建商业案例并加速开发。例如,迁移策略服务可以分析工作量,推荐目标架构和方法,以帮助说服利益相关者。 - 减少对Microsoft等专有系统的许可成本可能是另一个驱动因素。Dave将讨论DraftKings如何通过迁移到Linux容器和Kubernetes来摆脱对Windows和专有软件的依赖。 Chris接着解释了亚马逊云科技如何与DraftKings在过去几年里共同进行现代化旅程。四年前,当Dave加入DraftKings时,他们并未积极参与亚马逊云科技账户团队。Dave优先发展了那种关系,寻求关于Windows现代化和Kubernetes的指导。 这开始了与账户团队的深入合作。三年前在re:Invent上,他们初步讨论了现代化.NET工作量的问题。随后进行了详细的规划会议,以及来自解决方案建筑师(如Cooper)的实践指导。 两年前,DraftKings发表了一篇博客文章,总结了他们所学到的知识,并激励其他人实现他们所取得的成就。Chris注意到这场讲座是一个延续,Dave根据他的经验提供了具体的建议。 随后,Chris邀请了Dave Muzzachia来分享DraftKings现代化的发展历程。 Dave一开始就强调,他们的现代化成功并非他个人的努力,而是需要整个团队的紧密合作。他指出,技术变革总是充满困难,特别是在大规模实施过程中,就像DraftKings曾经犯过的错误一样。与会者希望通过借鉴他们的经验,避免类似的陷阱。 Dave强调了在现代化过程中首先要明确目标和预期的好处。对于DraftKings来说,这主要关注在提高可扩展性和运营能力,同时降低成本并提高开发者的效率。他们希望能够随着公司的发展不断优化基础。 由于监管要求,DraftKings还需要执行一些内部工作负载,这也影响了他们的策略。目标是让开发人员一致地对待内部和云环境,使用像Kubernetes这样的技术来统一环境。 了解“为什么”有助于获得对固有风险的改变的支持。DraftKings将他们的倡议命名为“Spark”,旨在激发创新、韧性和稳定性。 Dave建议利用组织结构来推动协调,而不仅仅是说服工程师。让领导加入进来,为现代化努力在整个团队和路线图之间创造空间。 将计划分为可理解的、可实现的阶段,具有实际收益: - 首先,使用.NET Core以获得异步优势 - 接下来,从Windows迁移到Linux以实现扩展和成本降低 - 最后,使用Kubernetes为基础 同时减少变化的部分可以减少成功的概率。分阶段减少团队同时经历的过程变化。 Dave强调要有目标地采取行动,而不是一次性自动化所有事物。先从关键团队开始,证明其有效性,建立操作手册,然后扩大自动化使用CI/CD管道和基础设施即代码。 数据驱动的决策制定也非常重要。使用Prometheus等监控技术揭示假设中的缺陷,从而可以进行纠正。 Dave提醒与会者,每个团队都有一个SDLC来保持生产力。改变会破坏它。提供关于新技术的培训,与现有团队的工作流程相对应。 关键的培训原则包括: 在学习过程中,通过实际操作的工作坊来巩固课程内容是一个有效的方法。这样可以将所学的知识应用到实际工作中,使得培训课程可以扩展,而不需要依赖针对每个新员工的单独工作坊。戴夫解释道,DraftKings将这一现代化过程分为了几个阶段,每个阶段都为下一个阶段提供了支持。首先,他们从使用.NET框架转向了.NET Core,以便利用其异步功能。戴夫将会展示这一转变带来的性能优势以及将所需实例数量降低到原来的十分之一所带来的好处。用于.NET的移植助手可以帮助识别需要进行的代码更改。接下来,他们将从Windows系统迁移到Linux系统。这一转变带来了显著的成本节约和扩展优势,戴夫将会详细说明这些优势,比如能够节省40%的亚马逊云科技(亚马逊云科技)费用。App2Container简化了迁移到容器的过程。最终,他们在云服务和内部分别采用了Kubernetes和Rancher作为平台。这为他们实现更多的自动化功能,如自动扩展提供了基础。尽管从表面上看,将.NET Core进行转换似乎非常简单,但在每个微服务中,除了代码更改外,还需要处理许多与生态系统相关的挑战。例如,大部分开发者都在使用Windows笔记本电脑,因此本地环境与Linux的生产环境和测试环境存在差异,导致了一致性问题。持续集成和部署(CI/CD)管道基于Windows代理,需要重新设计以使用Linux。测试环境和配置代码也需要进行调整。在微服务自身中,大小写规则在Windows和Linux之间有所不同。基于Windows API的配置、日志记录、指标和加密也需要进行修改。即使操作系统变更并不是一个孤立的重大事件,但它仍然会给开发者的工作流程带来干扰。为了解决这些问题,DraftKings投入了大量资金用于Linux培训和指导,并采用了一种群众参与的方式来解决问题。已经进行过类似迁移的开发人员为开发资源的优化贡献了自己的专业知识。这种方法比由一个小规模集中的团队在封闭环境中创建材料更有效率。由于进行了从Windows到Linux的迁移,DraftKings获得了巨大的收益。在Windows系统中,供应时间从20分钟缩短到了Linux系统中的不到2分钟,生产力提高了十倍。甚至在内部网络上,他们也节省了Windows许可证费用和操作开支。对开发者而言,容器在他们的本地环境、持续集成(CI)和生产环境中提供了一致性。标准化环境还为即将进行的向Kubernetes的转型做好了准备。 Dave重申,尽管Kubernetes代表着一种重大思维转变,但对于许多人来说,这仍然是一个令人望而却步的改变。DraftKings需要对工程师进行广泛的培训,以便他们能够在新范式中高效地工作。为了实现这一目标,他们创建了一个围绕开发者工作流程的自服务“参考工作坊”,其中包括构建微服务、修复失败的测试、解决CI问题和调试部署问题等实操内容。这种实际操作的挑战不仅巩固了学习成果,同时还直接提高了生产力,因为它们与真实的工作流程紧密相关。此外,使工作坊自助服务还扩大了对该培训的访问范围。分析结果显示,完成工作坊的工程师将服务迁移到Kubernetes所需的时间比他们的同事少了40%。反馈也非常积极。Dave强调,在引入Kubernetes时,不要让团队承担额外的责任和工作环境切换的压力至关重要。他讨论了DraftKings如何使用诸如Helm和MSBuild打包等技术简化开发流程。采用标准化模式和工具还使得能够用最小的努力利用第三方解决方案来监控和优化系统。Dave提到了另一个好处——赋予工程师基于策略的控制权。以前,法规要求限制了工程师独立扩大某些服务的规模,因为这可能会带来停机风险。通过Kubernetes和Open Policy Agent,实现了细粒度的自动扩展策略,从而消除了这个瓶颈,同时保持了合规性。Dave总结说,DraftKings现代化进程取得的关键成果包括:- 异步.NET Core将所需的实例减少了10倍- Linux迁移节省了40%的EC2成本并加快了配置- Kubernetes自动扩展防止了过度/不足地提供资源- Helm提供了可配置的部署和测试- CI/CD安全扫描加固了镜像- 外部秘密抽象了密钥管理- Open Policy Agent赋予了在护栏内的工程师权力。展望未来,DraftKings正在研究在整个环境中统一身份和访问方法、在测试期间模拟服务的方法以及根据已证明的交通模式自动扩展的方法。随后,Dave将任务交给了Manny,让他谈论亚马逊云科技如何帮助客户进行现代化之旅。Manny解释称,亚马逊云科技已将像DraftKings这样的现代化先驱的经验教训整合到产品、培训和指南中,以便其他公司可以轻松地踏上现代化之路。 对于寻求通过评估现有应用程序库存来实现现代化的客户,迁移策略服务会分析工作负载并提供目标架构和迁移方法的推荐。Porting Assistant for .NET能够扫描框架应用程序,以确定迁移至.NET Core所需的改动。该工具会标记不兼容的API并提出替换库的建议。 App2Container技术可以将应用程序直接迁移至Docker容器中,以便在ECS或EKS上进行部署。它将负责处理构建容器和工件的过程。 微服务提取器可以可视化地解析单体.NET应用程序,识别命名空间、类和相互依赖项。这使得有策略地提取微服务成为可能。 最后,亚马逊云科技Visual Studio工具包有助于测试.NET Core迁移和容器部署。 总的来说,亚马逊云科技为每个现代化阶段提供了强大的工具,以及培训和激励措施以帮助平稳过渡。Manny将在稍后欢迎与会者的提问。 Chris在演讲结束时回顾了DraftKings在实际经验中所学到的现代化教训:分阶段进行,实现增量收益;关注性能、成本和生产力的提升;利用数据来追踪进展并调整方向;标准化配置和流程以保持一致性;优先考虑采用云原生技术。他强调,亚马逊云科技可以帮助加速并降低现代化风险,通过专为此目的设计的工具、资源和指导。关键在于,通过以具有明确商业目标的定向阶段来应对现代化,公司可以释放创新、提高效率并节省成本。 **下面是一些演讲现场的精彩瞬间:** 克里斯·埃文斯扎尔(Chris Evilsizer)来自亚马逊云科技(Amazon Web Services),与曼尼(Manny)和戴夫·穆扎克(Dave Muzak)一同加入DraftKings团队,探讨在亚马逊云科技上运行微软工作负载的问题。 ![](https://d1trpeugzwbig5.cloudfront.net/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success/images/rebranded/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success_0.png) 据一位领导者提醒,初级工程师不应被分配到关键迁移项目,因为他们的领域知识和对过去架构决策的理解有限。 ![](https://d1trpeugzwbig5.cloudfront.net/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success/images/rebranded/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success_1.png) 然而,亚马逊云科技允许多位工程师同时测试微服务且互不干扰。 ![](https://d1trpeugzwbig5.cloudfront.net/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success/images/rebranded/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success_2.png) 产品战略建议深入分析应用程序,并指出现代化改造的方法。 ![](https://d1trpeugzwbig5.cloudfront.net/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success/images/rebranded/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success_3.png) 此外,亚马逊云科技的领导者们讨论了一个名为“Putting Assistant for .NET”的工具,该工具可帮助客户从.NET框架过渡到.NET Core。 ![](https://d1trpeugzwbig5.cloudfront.net/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success/images/rebranded/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success_4.png) 最后,亚马逊云科技的领导者强调,他们拥有正确工具、计划和激励措施,能帮助客户加速其云转型之旅。 ![](https://d1trpeugzwbig5.cloudfront.net/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success/images/rebranded/XNT307-Modernize__NET_apps_at_scale__DraftKings_principles_for_success_5.png) ## 总结 这段视频探讨了DraftKings公司成功实现现代化.NET应用程序的关键原则。为了应对不断增长的业务需求,DraftKings决定提高可扩展性、降低成本并提高开发者的效率。他们的核心目标是在公司发展的过程中建立一个持续改进的基础。为此,他们创立了一个名为“Spark”的内部品牌,旨在将公司的关注点重新引导至创新、弹性和稳定性。 DraftKings将现代化过程分为几个阶段,首先从基于.NET Framework迁移到.NET Core,以便充分利用异步功能;接着从Windows平台迁移到Linux,以提高可扩展性和降低成本;最后,他们迁移到Kubernetes以奠定稳定的基础。在这个过程中,他们吸取了一些重要的经验教训,如有针对性地开展工作,先从小规模试验证明其有效性,然后逐步推广;利用数据来发现假设中的问题并采取相应的措施加以解决;以及提供与开发者工作流程相协调的培训资源,如可扩展的自助服务研讨会,以提供实际的操作学习。 向Kubernetes的迁移意味着DraftKings需要调整自己的心态,从依赖静态基础设施转向定义期望的状态和行为。为了减轻这种转变带来的压力,他们采用了诸如Helm和GitHub操作等一致性技术,以及像Prometheus这样的易于监控的开源工具。此外,标准化流程还支持诸如HPA自动缩放等功能。 这些努力取得了显著的成果,DraftKings实现了性能的提升、可扩展性的增加和成本的节省(例如,将实例数量从100减少到10,同时维持相同的吞吐量)。然而,这只是一个起点,DraftKings将继续在这个基础上进行创新,例如通过隔离测试环境。关键在于从一开始就明确“为什么”,并建立一个平台以支持持续的改进。 ## 演讲原文 ## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站! [2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站") [点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯! [点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯! ## 即刻注册亚马逊云科技账户,开启云端之旅! [【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“") [【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭