话说这事儿得从去年年底说起。当时我跟女朋友,还有几个玩得好的哥们儿,一起吃饭。饭桌上不知道怎么就聊到了创业和做项目这事儿。我吹牛逼说我要搞个大动静,把以前一直想做的那个概念游戏官网给搭起来,让它能跑起来,能更新日志,能接受玩家反馈。女朋友当时就笑了,说我就是嘴炮党,从来没见我坚持超过三天。
我当时血气上头,直接拍桌子了。
“行,我拿你做赌注。要是这官网我在三个月内能拉起来,并且连续更新日志一个月,你得给我做一年家务。要是搞不定,我把家务全包了。”
赌局立下了,第二天我就开始动手。我最怕的就是打脸,所以这回我真是铆足了劲要搞定这事儿。第一步是选技术栈。我这人以前搞C++的,但搞官网,C++那屁用没有,太重了。我得找个能快速把东西扔上去的工具。
第一次尝试:Python和屎一样的数据库
我想着用Python,觉得简单快速。抓了Flask框架,搞了个最简单的网页模板。我寻思着,官网嘛不就是展示一下概念图,写写博客日志,再弄个留言板?
- 数据库选型:一开始脑子抽了,想用MySQL,结果配置环境搞了我两天,各种驱动版本冲突。我就是想快速跑起来,结果全耗在这基础环境上了。
- 前端界面:随便找了个免费的Bootstrap模板,结果套进去一看,丑得跟90年代的论坛一样。光是调CSS的边距,又浪费了我好几个晚上。
- 更新日志系统:我尝试手写了一个Markdown解析器,用来展示日志。结果发现,每次格式不对,页面就炸了,回滚都困难。我写日志的时间比写代码的时间还长。
干了快两周,我就意识到不对劲了。这帮东西搭起来太慢了,而且我要的是效率,是快速迭代,不是在这儿跟数据库驱动耗着。我必须换个路子,得找个能让我快速把内容吐出来,并且方便维护日志的玩意儿。我不能再让时间浪费在这些基础的配置和扯皮上。
第二次启动:直奔主题,用GoKits搞定微服务
那段时间,我正好看了看隔壁几个公司搞微服务,都说Go快。我琢磨着,这回就用Go。不是为了什么高并发,就是图它编译快,部署简单,能把后端逻辑和前端API迅速切割开来。
我直接扔掉了Flask,重构了整个项目架构。这回我不再想着把所有东西塞进一个项目里了,而是开始拆分:
- 后端核心:Go + Gorm。我直接把数据库换成了PostgreSQL,省事儿多了,配置一下驱动立马跑起来。Go的主要任务是处理日志的CRUD和用户留言接口。
- 日志管理系统:我直接引入了一个现成的富文本编辑器库,后端直接存HTML/JSON。这样我写日志的时候,排版、图片上传这些糟心事儿就不用自己操心了。
- 前端展示:用了*。虽然我以前不怎么写前端,但Vue的组件化确实牛逼,随便找个UI库,三下五除二就把官网的基本框架拉出来了,比那个破Bootstrap模板好看了一百倍。
从开始切换到Go的那天算起,我只花了不到一个月的时间,就把一个能看、能更新、能留言的官网雏形给部署上线了。域名随便搞了一个,服务器直接买了最低配的云主机,跑起来没啥压力。至少,我的进度已经能让那帮看热闹的哥们儿闭嘴了。
关键环节:更新日志的坚持和验证
最难的部分不是写代码,而是坚持写日志,证明项目还在动。按照赌约,我要连续更新日志一个月。为了防止自己偷懒,我创建了了一个内部的Webhook机制。
每次我提交新的代码到代码仓库,或者我在后台发布新的日志,系统都会自动给我的微信发送通知。它会把日志的发布时间、内容摘要,自动同步到官网首页的更新日志列表里。我在后台设置了一个定时任务,如果24小时内没有新的日志发布,它就会给我女朋友发一个“提醒邮件”,告诉她我可能在偷懒。
这种机制给我造成了巨大的心理压力,因为一旦断更,我的手机上不会有通知,她手机上就会有“告状信”。他们每天早晨起来第一件事就是刷我的官网看更新日期。那段时间,我每天晚上都得抓紧时间完成一个功能点,哪怕只是改一个按钮的颜色,也得记一条日志。
我硬是扛着工作压力,连续更新了35天。第30天早上,我发了一条日志,然后把手机递给了她。她看完日期,沉默了五秒,然后骂了一句:“你真是个疯子。”
赌局赢了。但这事儿给我最大的收获,不是赢了家务,而是通过这种高压、高赌注的方式,逼着我实践了一遍完整的项目快速交付流程。我现在对Go和Vue的配合简直是熟门熟路。这官网现在还在跑着,我每周还是会象征性地更新一点东西,毕竟那是我用“赌注”换来的。