我造了个好大的"轮子",居然还不是"圆"的!
我造的这个”轮子”指的是集低代码开发与运维为一体的平台,为什么说它不是”圆”的,因为它有些与众不同,甚至可以说是有些另类。至于为什么造这个”轮子”,以及另类在什么地方且听我慢慢道来。
一、痛苦的编码岁月
我是一个70后码农,开发过不计其数的系统,小到进销存大到电商、物联网甚至是省级平台。每次项目开始都要经历从技术选型、架构设计、开发、测试及最终生产环境部署运维等多个步骤。小项目还好随便一个单体架构就可以搞定,大项目特别是数据量较大的不仔细设计并考虑性能与扩展,随随便便就能把系统玩死。日复一日年复一年的编码,还得时时担心系统crash真是让我身心疲惫。
二、静下心来的思考
为什么?为什么码农就需要这么累?为什么会没有银弹,哪怕是近似的东东?我又到底需要什么?
天下武功唯快不破
- 我需要的是能够快速的从无到有的开发出一套系统的工具,并且能够快速部署。
简单的才是最美的
- 我需要的是适用于中小规模的简单架构,并且依赖的技术越少越好。
唯一不变的是变化
- 我需要的是能够随时适应需求变化,并且能够按需扩展的分布式架构。
一切尽在掌握
- 我需要的是能够轻松掌握的系统状态,并且能尽早发现问题及时告警。
三、苦苦的寻找
经历过痛苦与思考,才知道自己想要的是什么,因而我开始了漫长的寻找与学习过程。先是了解各类开发语言(包括可能您都没有听过的Vala),熟悉其优势、弱势及适用场景。然后学习各种类库及框架,只要觉得能加速开发过程便会研究一番并尝试应用于项目中。最后开始接触各类零代码低代码开发平台,包括国外的OutSystems,国内的起点等。但这些开发平台有些授权费用高,有些有各种各样的限制只能适用于特定场景,且大都是单体架构无法扩展,性能一般般对硬件的要求又高。总之没有我认为完美的技术或组合是我所需要的,难道真的应了“没有银弹”,只能继续疲惫下去。可我偏偏是个比较偏执的人,没有咱就来造一个,哪怕是只提高10%的效率减少10%的成本那就有意义。
四、撸起袖子直接干
一开始我只是想参照一些快速开发平台实现类似的功能,并且遵循“物得其所”的原则支持不同的存储技术(Sql, NoSql, 对象存储)。在此基础上我实现了一个版本(代号AppBox),但在实现过程中为了适配各类存储技术及相应的api我烦不胜烦,另外这么多技术叠加在一起对整个架构的部署与运维造成了不小的麻烦,总是觉得不完美太Low。
既然选择了造轮子,何不造个大一点的。所以我又开始动起了存储的念头,在学习了NewSql与NoSql技术后,我决定基于Raft与RocksDB直接实现分布式的存储集成在框架内,这样的话关系型数据、半结构化数据、非结构化数据的存储一并搞定。简单!完美!
五、未来在招手
“路漫漫其修远兮,吾将上下而求索”,目前原型总算是有点模样了,虽打开代码满屏的TODO,但我抱着愚公移山的态度,相信只要每天码一点,总有一天码出一个近似完美的“巨轮”,也借此寻求志同道合者来共同完成这个“轮子”,共同实现Enjoy coding! Enjoy life!