我们将后端技术堆栈迁移到 Rust、Java 和 Angular,原因如下
我们已完成 Finotes 的服务器技术堆栈迁移。
对于那些不知道 Finotes 是什么的人(哦!我们在营销方面还有很多工作要做),它是一个轻量级 SDK,当集成到任何 #iOS 或 #Android 应用程序时,可以捕获错误和内存等性能问题泄漏、网络调用问题、帧率问题、ANR/应用程序挂起、崩溃、屏幕加载延迟等等。
我们的后端负载很重(哦,是的,移动应用程序中存在的错误数量比许多人想象的要高得多,我们捕获并报告所有这些错误)并且操作是内存密集型的。我们的 CPU 使用率处于可管理的水平。
我们的旧堆栈是#Java + #NodeJS + #AngularJS(旧的),其中Java用于核心模块,NodeJS用于仪表板后端,AngularJS用于前端。现在我们使用 #Rust 进行核心重负载操作,使用 Java (#SpringBoot) 进行仪表板后端,使用 #Angular 进行前端。我们还将 RDBMS 迁移到分布式表架构,以实现高效插入。
选择 Rust 的原因是为了确保比 GC 语言更好的内存效率。单一所有者内存模型对代码来说是一个挑战,但在内存效率方面,这些努力得到了回报。将写一篇单独的详细文章,介绍我们新的基于 Rust 的核心引擎与之前基于 Java 的核心引擎在内存使用方面的比较。
从 NodeJS 迁移到 Java Spring Boot 是理所当然的事情,因为我们希望有一种编译语言能够在不暴露代码的情况下提供许可的企业解决方案。
选择 Angular 作为前端是内部争论最多的决定。旧的 AngularJS 已经过时了,我们希望转向更好、更现代的框架。 React(更像是一个库,而不是一个框架)与 Angular 的争论持续了很多天。最终,更好的可维护性赢得了胜利,我们决定选择 Angular。
如果您是处于早期阶段的产品初创公司,并且正在考虑不同的技术堆栈选项,或者您正在考虑迁移到新的技术堆栈选项,那么很高兴分享我们的经验教训以及我们如何通过新技术显着降低服务器成本堆。在 LinkedIn 上私信我。
此处分享的是我们仪表板的屏幕截图。顺便说一句,这不是最后一个,因为这已经是几个冲刺的历史了。最近,我们相信一些新功能不仅对开发人员而且对软件工程领导团队都有很大价值。如果您是移动优先公司的工程领导团队的一员,很乐意展示新功能的演示。如果您有兴趣,请在 LinkedIn 上私信我。