Workflow
Elixir
icon
搜索文档
没有防御性编程,Rust服务稳定到不需要维护,然后老板说不需要我们了...
菜鸟教程· 2025-06-05 20:05
技术选型与性能表现 - 公司原有技术栈以Ruby和Node.js为主,面临支持10万并发用户的实时服务需求时,Ruby被确认不适合该场景 [2][3] - 团队进行四种语言概念验证(Elixir、Rust、Ruby、Node.js),Rust版本由新手开发者编写但仍以显著性能优势胜出:速度最快、内存占用最少 [5][8] - Elixir在并发处理中表现优异,Node.js受限于单线程需分布式部署,Ruby性能垫底 [9][10] Rust的采纳与开发过程 - 团队最终选择Rust因其通用性潜力,包括网络编程、Web服务及多语言SDK开发等战略价值 [10] - 项目时间紧张,由单一开发者采用极简架构实现:基于WebSocket的API,内存哈希表存储,事件推送至Kafka [13][14] - 开发效率极高:2周完成第一版,1-2周部署,一个月内扩展功能,稳定运行零故障 [15][18] 性能优化与管理层冲突 - 服务在50万并发用户活动前招聘3名Rust开发者优化,最终单台64核机器支持100万并发(P99延迟10ms)、200万并发(P99延迟25ms) [19][21] - 管理层因服务过于稳定质疑团队价值,强制要求转用Ruby/Node.js,导致3名Rust开发者离职 [20][22] - 禁用Rust后尝试Node.js重写失败,因单线程无法处理高负载,最终依赖第三方服务仍性能不足 [24][25][26] 结果与行业启示 - 原Rust服务持续在生产环境稳定运行但无人维护,成为"被遗忘的英雄" [28][29] - 技术决策受管理层变动显著影响,人力资源倾向主流技术栈(如Node.js/Ruby)与性能需求存在矛盾 [22][23] - 极端稳定性反成团队风险,揭示技术成功与管理预期错位的悖论 [1][29]
公司Rust团队全员被裁,只因把服务写得「太稳定」:“项目0故障、0报警,那养着3个Rust工程师没用啊”
猿大侠· 2025-06-02 12:22
项目背景与技术选型 - 一家快速成长的独角兽初创公司主力应用采用Ruby on Rails和Node.js,未使用高性能编译型语言如Rust或Go [3] - 公司计划开发实时在线状态服务,初期需支撑10万并发用户,团队认为Ruby不适合此场景 [3] - 技术选型阶段,团队用Elixir、Rust、Ruby和Node.js编写原型进行性能测试,Rust因灵活性和性能脱颖而出 [4][6][7] Rust项目开发与性能表现 - Rust版本在基准测试中速度最快、内存占用最低,Elixir次之,Node.js受限于单线程,Ruby最慢 [10] - MVP版本仅用两周开发完成,两周部署上线,采用内存哈希表和Kafka事件推送的极简设计 [8][9] - 服务稳定支撑10万并发用户,后续扩展功能也未出现故障 [11] - 优化后性能显著提升:支持100万并发(p99延迟10ms)和200万并发(p99延迟25ms) [12] 管理决策与Rust团队解散 - 公司战略调整导致实时功能搁置,Rust团队解散,服务转入低维护状态 [12] - 新管理层认为Rust工程师"冗余",要求其转岗至Ruby/Node.js或离职,3名Rust开发者全部离开 [14][15] - 决策层未采纳推广Rust的建议,尽管已有成熟服务、工程师和多个适用业务场景 [15] 技术重写与后续影响 - 管理层强制用Node.js重写Rust服务,首次尝试因架构复杂性失败,需依赖第三方平台Ably但性能不达标 [16] - 最终Rust服务虽仍在运行,但因缺乏维护团队,扩展需求被放弃或采用次优方案 [17] - 开发者社区反馈此类事件普遍存在,管理层常因不理解技术价值而抵触非主流技术 [18] 行业现象与开发者观点 - 类似案例常见:技术成功反导致团队被裁,因"无维护需求"难以向管理层证明价值 [17][18] - 企业扩张中管理更替易破坏技术创新,决策者倾向选择主流技术而非最优方案 [18] - Rust等高性能语言面临推广困境,尤其在非技术驱动型组织中 [15][18]
公司Rust团队全员被裁,只因把服务写得「太稳定」:“项目0故障、0报警,那养着3个Rust工程师没用啊”
36氪· 2025-05-30 17:32
技术选型与项目背景 - 公司是一家疫情期间快速成长的独角兽初创公司,主力应用采用Ruby on Rails编写,视频处理工具使用Node.js实现,初期未采用高性能编译型语言如Rust或Go [2] - 公司计划开发实时服务以显示用户在线状态和操作行为,初期需支撑10万并发用户,团队普遍认为Ruby不适合实现此类系统 [2] - 技术选型阶段团队倾向Rust,但管理层要求进行多语言原型对比测试,最终测试语言包括Elixir、Rust、Ruby和Node.js [3] Rust技术表现 - 基准测试结果显示Rust版本速度最快、内存占用最低,Elixir次之,Node.js受限于单线程运行时,Ruby表现最慢 [3] - Rust原型虽存在小bug(高负载下阻塞运行时几秒),但对熟悉Rust的开发者来说易于修复 [3] - 团队综合考虑性能、易用性和公司适配性后最终选择Rust实现实时服务,原本偏好Elixir的开发者实际使用后也投票支持Rust [4] - Rust服务MVP版本仅用两周完成,再花两周部署上线,稳定支撑10万并发用户无压力,后续功能扩展也未出现故障 [5] 项目发展与团队变动 - 公司战略调整导致实时功能被搁置,Rust服务转入维护模式,原开发团队解散 [6] - 公司筹备大型活动时预计需支撑50万并发用户,管理层招聘3名Rust工程师优化服务,调整系统配置后性能显著提升:支持100万并发(p99延迟10ms)和200万并发(p99延迟25ms) [6] - 服务过于稳定导致Rust工程师无事可做,新管理层上任后认为团队冗余,强制要求Rust工程师转岗或离职 [7][8] - 3名Rust开发者全部离职,公司放弃推广Rust的宝贵机会,尽管存在多个业务场景亟需高性能组件 [8] 技术重写与行业反响 - 管理层决定将Rust服务重写为Node.js版本以便现有团队维护,但首次重写尝试失败 [9] - Node.js受限于单线程运行时,需重构架构(多进程、多节点、队列或数据库中转)才能支撑百万连接,实现复杂度远高于Rust方案 [9][10] - 目前Rust服务仍在运行但缺乏维护团队,扩展需求被放弃或改用次优方案替代 [10] - 开发者社区普遍反映类似情况在各公司常见,新管理层常因不理解技术价值而做出破坏创新能力的决策 [10]