《B会场-肖伟宇-从Java 8 到DotNET 8团队升级工作汇报.pdf》由会员分享,可在线阅读,更多相关《B会场-肖伟宇-从Java 8 到DotNET 8团队升级工作汇报.pdf(33页珍藏版)》请在三个皮匠报告上搜索。
1、?Java 8?.NET 8?2023/12/16?Why?Java?.NET How?Result?WhyWhy?Java?.NET?Java 8 SpringBoot 2.x微服务架构技术背景产品功能交付/迭代变慢的速度越来越快变更BUG不可控,问题频出系统负载能力弱,流量小高峰被打崩业务背景 团队成员.NET 零经验 初级、中级、高级工程师全覆盖团队背景?框架落地成本团队学习成本收益ORM风险Java 8极低无无MyBatis Plus无Java 21中低新特性 更好的性能虚拟线程JPA低,编程语言不切换.NET 8中低Linqasync/await更好的性能EntityFramewor
2、kCore低,有成功的落地经验Go高高更好的性能并行计算能力GORM高,团队缺少Go大牛?产品:“为什么功能迭代越来越慢”我:“我们的技术实现与实际业务偏离越来越大了“产品:“该怎么解决”我:“业务设计与实现需要重构,原则是保持技术实现与产品模型一致性”与产品 后端:“旧代码维护起来太痛苦了”我:“这里有一个重新开始的机会,但得用新框架”后端:“换技术栈风险高”我:“语法与Java很像,框架开箱即用,一小时上手”与后端?如何保持可持续的快速迭代?保持技术实现与业务建模的一致性使用领域驱动设计战术框架?EntityFrameworkCore vs JPA(Hibernate)vs MyBatis
3、 Plus领域驱动设计落地需要充血模型CAP vs Seata系统要支持事件的最终一致性,以支持健壮的领域事件实现C#vs Java,语法相似开箱即用的领域驱动设计战术框架新框架需要足够快速和简单地上手,尽可能降低技术投入成熟的单元/集成测试框架代码驱动的环境与数据初始化新框架需要对测试友好成功的SaaS系统落地经验有落地的实践经验?.NET 8.NET 8?HowHow?1天搭建工程(集成框架/CICD)1小时上手培训5天项目开发4天集成测试?开始前,本能地恐惧写第一个模块时,熟悉又陌生第一个项目交付时,真香?1.对新事物的本能畏惧2.新语言和框架不熟练心态的困难1.Json序列化,需要使用
4、Newtonsoft.Json更宽松的序列化2.MQ消息与Java消息格式兼容3.雪花算法Id生成器(让GPT翻译一个版本)项目上的困难异步IO(async/await),Java也有强大的的ORM,Java也有自动化测试支持,Java也有“交付型项目,客户会在意编程语言”“为什么不用Go?”团队外部的质疑ResultResult?起始阶段不低于原来的迭代速度成熟阶段有显著的迭代速度提升避免了“模型与实现不一致”的潜在成本?1.基于事件驱动的建模设计实现2.建模设计与代码实现一致性领域驱动设计的战术实践成为现实(专注业务)1.充血模型,负责模型自身的业务逻辑2.CommandHandler,负
5、责接收指令,操作模型3.EventHandler,负责处理事件逻辑4.Controller,负责与UI/外部服务交互5.Query,负责从数据源检索数据6.领域层/基础设施/应用层更明确的代码组织方式(代码的可维护性)?多语言混合架构分布式链路追踪(skywalking)上下文传递系统全链路灰度系统?内存:300MB vs 1500MB更低的资源占用(更高的资源利用率)启动速度 10s vs 100s异步IO,更好的吞吐能力更好的性能(极高的下限)?框架组件自动化测试全覆盖业务接口自动化测试全覆盖形成测试用例资产的持续积累?对新事物有好奇心有独立的思考判断能力有一群心态开放且能够独立思考判断的队友要用的都有.NET 的生态足够的成熟?下限很高,上限更高让平凡人做不平凡事?语言之争团队进步?服务器资源系统吞吐量开发效率?建立信任呈现效果?netcorepal/netcorepal-cloud-framework?ASP.NET Core?https:/