为什么我要使得GOLang重写SAAS(软件即服务)服务端
引言
“道”在中国哲学中,是一个重要的概念,表示“终极真理”。“道”这一概念,不单为哲学流派诸子百家所重视,也被宗教流派道教等所使用。大道至简的意思就是大道理是极其简单的,简单到一两句话就能说明白。所谓“真传一句话,假传万卷书”。
正文
在开启独立创作之路之前,我主要用不用.net 和 java等技术开发后端。那么,为什么我要选择一个不熟悉的技术呢?答案:大道至简。
没有实践,哪来真知?
过去很多年,Java的生态很成熟,社区也比较强大。各种开源框架以及jdk,版本更新都是挺快的。而且jdk也在吸收更多其他语言的优点,并不是一成不变。其次,Java门槛比较低,也比较适合企业级应用开发。软件开发最终还是实现业务逻辑,各种框架和中间价等只是为了让开发更加简单和高效。业务逻辑才是王道。最后,Java经过那么多年的发展,市面上一大把的Java程序员,好招人,而go相关的人才较少,那为什么我还要选择GoLang重写服务端。一切都来源于实践。
SAAS(软件即服务)真的需要是什么?
-
超低的成本
- 无论是CPU的性能还是内存的空间,我需要的是最低的成本。
- Go 语言具有出色的性能,特别是在并发和网络编程方面。对于 SAAS 服务端来说,处理大量并发请求和高效的网络通信是非常重要的。Go 语言的轻量级线程(goroutines)和内置的并发原语(如 channels)可以极大地简化并发编程,同时保持出色的性能。
- 我真不想要垃圾回收器(GC),奈何对内存的管理是一件相当复杂的事,所以我只能退而求其次选择GC,GoLang的GC对于服务器端应用来说非常友好。它能够在保证内存安全的同时,减少内存泄漏和碎片化的风险。这对于长时间运行的 SAAS 服务端来说尤为重要。
-
快速的响应
- 易于部署和扩展:Go 语言编译后的程序是静态链接的,不依赖于外部运行时环境。这意味着你可以轻松地将 Go 程序部署到各种环境中,包括云服务器、容器和边缘设备等。此外,Go 语言的并发特性也使得它非常适合构建可扩展的 SAAS 服务。
- 强大的标准库:Go 语言拥有强大的标准库,包括网络编程、数据库操作、加密、压缩等各个方面。这使得在开发 SAAS 服务端时,你可以直接使用这些库来快速构建功能,而无需依赖外部库或框架。
- 简洁的语法和快速的开发速度:Go 语言的语法简洁易读,学习曲线相对平缓。同时,由于其编译速度快且运行时开销小,因此开发迭代和测试过程也非常迅速。这有助于加快 SAAS 服务端的开发进度。
-
稳定的服务:
- Go 语言拥有一个庞大的开发者社区和丰富的生态系统。这意味着你可以轻松地找到相关的教程、库、工具和支持。这有助于降低开发风险和提高开发效率。
- 安全性和稳定性:Go 语言在设计和实现时非常注重安全性和稳定性。它提供了许多内置的安全特性,如内存安全、类型安全等。同时,由于其简洁的语法和严格的编译过程,Go 语言程序也更容易避免常见的编程错误和漏洞。
- 成本效益:使用 Go 语言重写 SAAS 服务端可能会带来一些初始的投资,但长期来看,它可以降低维护成本和提高开发效率。此外,由于 Go 语言在性能、可扩展性和安全性方面的优势,它还可以帮助你构建更具竞争力的 SAAS 产品。
实践中有很多画蛇添足的行为
在SAAS(软件即服务)的开发中,其实有很多画蛇添足的行为。比如:ORM(对象关系映射):
- 性能:
- 使用一些框架,通常会在运行时进行各种封装、抽象和转换,这可能会引入一些额外的开销。对于需要高性能、低延迟的应用来说,直接使用最原生SQL或存储过程可能会更高效。直接生成数据,HTML更加灵活和高效。
- 灵活性:
- 很多框架通常提供了一套固定的API和模式,这可能会限制开发者的灵活性。实际上,SAAS服务并不需要适配不同的数据库,有哪个用户关心你使用了MySQL、Orcale还是MsSQL。
- 用户在意的是他的浏览器是否可以正常访问我们的网站,在这样的情况下,Vue,React的限制往往会忽略掉一些特别的用户访问。
- 学习曲线:
- 无论我们学习什么框架,其实都需要在掌握基本的技术原理之外,还得掌握这个框架的一些特性。所以我们为什么要多学那些可能还会给我们带来更多问题的技术框架呢?
总结
需要注意的是,以上原因并不是绝对的,在某些情况下,框架可能会带来更高的开发效率和更好的代码质量。只是作为SAAS(软件即服务),没有必要为了解决一些开发效率,而引入更多的问题,我们需要的是答案。