• 请不要在回答技术问题时复制粘贴 AI 生成的内容
NiGuAnHeShang
V2EX  ›  程序员

AI Coding 时代,核心业务系统选型:该追求技术先进,还是优先工程成熟?

  •  
  •   NiGuAnHeShang · 18h 41m ago · 272 views

    昨天发了一个帖子(帖子地址: https://v2ex.com/t/1227508#reply72 ),原本想讨论的是 Java 和 Go 各自的生态,对公司核心业务系统技术选型的影响。但因为我的表述不够准确,最后讨论更多集中在语言本身。

    上一个帖子里的每条回复我都认真看了,非常感谢大家提出的各种观点。这里想进一步补充说明一下我的原意。

    我并不是认为 Go 、Java 或其他语言谁好谁坏,也不是想发起一场语言之争。

    我真正想讨论的是:在 AI 编程能力越来越强、各种语言和技术栈百花齐放的今天,企业应该如何评估一个核心业务系统的工程化能力,并据此完成长期技术选型。

    我们目前从事的是与金融相关的业务。公司下面各个事业部需要相对独立地展业,同时每个事业部又有自己的业务系统,并需要与总部的核心业务系统对接。

    因此,总部的核心业务系统并不是一个普通的管理后台,而是承担了客户、销售、组织、权限、业务协同、数据汇总和系统集成等职责。

    由于业务涉及金融产品,系统每年还需要接受审计。这意味着系统不仅要能够正常运行,还要长期保证权限边界清晰、操作过程可追溯、数据变更可审计、系统行为可解释。

    对于这样的企业核心系统,我更看重的不是短期开发速度、语言热度或者单纯的运行性能,而是未来五年甚至更长时间内的可维护性、稳定性和可靠性。

    核心系统一旦正式投入使用,就会不断接入新的业务、数据和上下游系统。后续可以持续迭代、修复问题和增加功能,但通常很难推倒重来,也很难更换技术栈重新建设。

    因此,技术选型的成本不能只看开发和上线阶段,还要考虑未来多年的维护、升级、审计、人员交接和故障处理成本。

    Go 的优势很明确,例如部署简单、资源占用较低、并发能力强、语法相对简洁。但语法简单并不意味着大型业务系统的工程复杂度会消失。

    多租户、跨事业部数据隔离、总部数据权限、事务一致性、审计日志、链路追踪、幂等、错误治理、报表以及第三方系统集成等问题,无论使用什么语言都必须解决。

    区别在于:语言生态、框架能力和团队经验,能够帮助我们承担多少复杂度。

    Java 虽然已经非常普及,也经常因为历史包袱、框架复杂度和资源占用受到批评,但它的普及本身也带来了一个现实优势:成熟的生态、大量开源组件、丰富的行业实践、充足的人才储备,以及大量经过生产验证的问题解决方案。

    并不是每家公司都有能力开发通用框架、中间件、底层组件和基础设施平台,也不是每个技术团队都适合长期维护这些内容。

    对于资源和工程能力有限的公司来说,成熟生态中已经被验证过的“轮子”,并不一定是负担,反而可能是对团队能力的重要补充,可以降低试错成本和长期维护风险。

    当然,开源组件多并不意味着可以无脑引入,也不代表 Java 一定优于 Go 。任何组件都需要评估维护状态、社区活跃度、安全性、兼容性和升级成本。

    Go 同样可以完成复杂企业系统的开发,但相对而言,往往更加依赖团队自身的工程能力、基础组件、脚手架和规范建设。

    我真正担心的是:如果团队缺少成熟的 Go 技术积累,技术负责人也没有大型 Go 企业系统的实践经验,那么最终是否会重新实现一套成熟生态已经解决过的能力,并承担这些内部组件未来多年的维护、升级、审计和人员交接成本。

    所以,我想讨论的核心并不是“Go 能不能做核心业务系统”,而是:

    在当前业务约束下,公司是否具备成熟的 Go 工程体系;自研基础组件是否值得长期维护;缺少的 SDK 和生态能力是否会持续增加成本;使用 Go 后的稳定性、可靠性、开发效率和长期维护成本,是否真的优于其他方案。

    如果业务以网关、长连接、推送、高并发接口和基础设施为主,我认可 Go 很合适。

    但如果系统的核心是复杂权限、多租户、跨事业部协作、事务、审计、报表和大量第三方系统集成,那么至少应该认真评估成熟企业级生态在长期维护上的综合价值。

    大厂使用 Go ,也不能直接证明普通公司同样适合。大厂通常拥有完整的平台工程、中间件、基础设施和专业团队,而普通公司的团队规模、人才结构和资源投入往往并不相同。

    AI 确实降低了学习新语言和编写代码的门槛,但 AI 更擅长解决“如何更快地写出代码”,并不能替代系统架构、数据一致性、权限模型、工程规范、故障治理和长期维护责任。

    因此,我真正想讨论的是:

    在不同语言都可以完成业务开发的情况下,企业应该如何结合团队技术实力、人才结构、语言特性、生态成熟度、业务适配度和系统生命周期,选择综合风险更低,并且团队能够稳定维护多年的技术方案。

    我承认原帖举例不够具体。我的重点不是否定 Go ,而是想讨论:对于一个承担金融业务、总部协同和审计责任的核心业务系统,技术选型究竟应该优先考虑语言本身,还是团队能力、工程生态和未来十年的维护成本?

    wangzr
        1
    wangzr  
       18h 10m ago
    我比较想了解的是,你是什么角色
    NiGuAnHeShang
        2
    NiGuAnHeShang  
    OP
       18h 0m ago
    @wangzr 技术团最组长
    wangzr
        3
    wangzr  
       17h 56m ago
    @NiGuAnHeShang 技术选择是你来主导,还是你只能被动接受?如果你是技术选型的人,需要发帖询问还要犹豫吗,熟悉哪个选哪个啊。如果你是被动接受的人,这些问题你应该问主导的人啊
    NxxRngjnbgj
        4
    NxxRngjnbgj  
       17h 53m ago
    学小米,守正出奇
    zls3201
        5
    zls3201  
       17h 39m ago
    我又来了,你用过几种后台语言? 总说 java 生态,我提几个问题:
    1. jdk 现在主流并行了几个版本? 8 ? 17 ? 23 ? 你都搞清楚了?且不谈 jvm 差别,内存和性能调优需要多少经验?这语言真的不复杂吗?现在 java8 还有很多人在用,我知道的。
    2. 日志组件主流有几种?兼容性如何? 我给你 10 分钟,你能说明白?你确定这些组件没干多余的事情,logrotate 这事是不是该系统干。你真需要这些功能,整理两页 md 丢给 ai agent 整一个你要的日志组件,它干的不会比你想象的差。
    3. 数据库访问你用的哪一种? mybatis 你觉得重不重、是否复杂?配置代码满天飞,这真的不是 10 年前的技术? 用过 active record 吗? 用过 ef core 吗?我不要求你那么高的所谓的抽象,你起码得易懂好维护吧,5 行代码清清楚楚不好么,非得 4 个文件还特么要分 3 层。
    4. spring boot 重不重? spring cloud 重不重?版本差别大不大? 依赖的版本呢。文档 changelog 好不好梳理。 我知道的不少准备 java8 + springcloud 2.5 再战 10 年,我只能说 wtf 。
    5. 生态? 你的生态指啥?数据库、网关、日志、配置中心、缓存?你确定被的语言没有?是不是你只是喜欢那些和 springcloud 深度绑定的东西? 打个比方你觉得 nacos 好用 consul 不行,当我没说。

    我再说说你想说的 go
    1. 绝对的够简单,性能够用,基础核心譬如 http 、io 不需要专门的优化。
    2. 所谓的框架,原生的 httpmux 、db/sql 、log slog 一般够用了,使用 gin 、sqlc 、gorm ent zerolog 也不是不行,你要集成配置、搞分布式、微服务,ai 能帮你搞定。
    3. 热重载对于 go 是否真的需要?你的状态都在内存中,不能重启?你自己反省一下。
    4. Agent 友好度,排查问题、代码分析的支持,python ts go 都是第一梯队的

    你是技术组长? 那你加油吧。祝君好。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3929 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 00:53 · PVG 08:53 · LAX 17:53 · JFK 20:53
    ♥ Do have faith in what you're doing.