在新公司的感想

2,722 阅读8分钟

前言

啊,来到现在的窝已经很久了。。难搞,项目也做的差不多了,如果8月份没离职的话,我对后端的下阶段任务是要开始拆分服务了,这是新的挑战,也可能是我技术栈的下一个技术爆炸点,今天在学习群里,和几个老哥,聊到换工作了,老哥们提议做个总结,感觉挺有意思的,不仅仅是树新蜂(Tree new Bee,哈哈哈哈今天听一个老哥讲的),还有就是做下知识的巩固,回顾下这段时间我到底都做了什么

开始 Tree new bee

第一个阶段

去年12月份处刚进公司,之前的项目是外包出去的,用PHP做的,老大让我看着外包团队给的接口文档,让我先重新开发一个Web系统,嗯根据接口文档的参数设计数据库,以及接口(差点奔溃),刚来想好好表现下,在开会上打包票,两周就能把接口文档上的接口全部做出来。。(下班的时候我就说了不行哈哈哈,申请延期),这里推荐用Spring Boot + MyBatis Plus这两个框架的确大大减少了我的开发周期,大概一个月多就把接口文档里的需求开发完了
产品现阶段,比较依赖前端工程师,所以开发团队只有我一个后端工程师,我是比较迷茫的,虽然我也很想承担更多的责任,但是这个责任有点大了,以前很多我都不需要去思考,只用写好业务的CRUD就行,哈哈哈小码农(不过的确进步也是可观的,各方面开发,测试,运维;职业规划也有了新的目标)
我们在这里不得不提一下,外包公司是真的赚钱,一个接口1500起步,小改也要这么多。。突然有一种出去单干的冲动!

第二阶段

这个阶段困扰了我很久,因为产品有一个物联网数据模块,数据量会大的惊人,一个用户一天至少能产生8w条数据,虽然每条数据区别不会很大,这就是IoT,当时外包团队的设计是放入MySQL,这前期的确可这么做,老大预期的用户量在2到3w,我不由惶恐,到时候我用MySQL存储,这个锅该扔给谁!(我不知道我是不是想多了,在一些交流群上,大佬们安慰我不要太小看MySQL)
OK,要学习了,我去找了物联网数据存储的解决方案:时序数据库(TSDB),开源有挺多的,我最后选了InfluxDB,理由是我第一个看的资料就是它,而且他也刚刚好能实现我的业务需求,有点的遗憾的是InfluxDB单机是开源的,集群要收费,不然以我的性格一般会搭建个集群玩玩
然后就是修改接口内部,从MySQL进行增删查迁移到InfluxDB中(IoT数据没有改的需求)

第三阶段

春节后,我和老大去了趟外包团队的办公地,希望他们能够帮我们运维我们的线上项目(减少了我的负担^_^),然后产品的功能开发由我们自己做,然后拿到了真正外包设计的数据库!!!(之前项目是我自己根据接口文档设计的,也就是说我前面的Web项目白做了。。。)
苦逼,不过好歹有了经验,对产品理解也有了更深的体会,所以我第二次开发还是比较顺利的,就是老大想修改数据库的结构,我举个栗子吧,之前数据库的用户表,直接用一个字段存储JSON对象(所有的用户相关信息),这让我之前写修改用户信息相关接口的时候真的很痛苦啊。。,后面的确进行了修改,把那个存储JSON字段里的内容拆分;无法理解外包团队设计的用户表竟然还有年龄这个字段
同时,春节后我也开始了写博客的习惯,勤劳的时候一周两三篇,懒得时候一个月也只有一两篇哈哈哈,同时我也发现一个问题,那就是国内的互联网,好多问题,解决都是同一个方案,但这个方案有时候并不能解决我的问题

第四个阶段

这个阶段,是我进步最大的阶段,没有能够直接模仿的数据库,然后进行删删改改(哈哈哈 )
老大希望我们的产品有一个社区的模块,产品能够分享IoT项目,点赞,收藏,关注,用户之间的私信,举报,评论回复;
在这之前,因为业务的需求,原本数据库的物联网项目管理模块业务的开发,因为之前外包团队的设计,让我处理起来真的很痛苦,我不知道他们PHP是不是有什么好的JSON第三方插件(我已经没有力气吐槽设计DB的人),在原本的基础上把业务进行了拆表,由原本的物联网项目表,拆解为物联网项目表(这个表包含了用户编程的代码,以及相关联的字段)和物联网设备表(可能我菜哈哈哈,这就是我理解的解耦,处理他们的关系,我至少不再那么痛苦了)
我开始进行社区模块的设计,从网上知道Redis的Set数据结构很适合做点赞的功能,后面发现这个方案是可行的,但问题是,公司目前的阶段,服务器也不可能上几百G的内存,如果做的话,后期数据的迁移是很痛苦的,无论是我还是我的后来者,不过还是比较幸运的,找到Pika,这是一个对Redis的扩展吧,会用Redis,那么上手Pika无压力!Redis的存储是在缓存,而Pika的存储是在磁盘上,Pika是为解决的是用户使用redis的内存大小超过50G, 80G这样的情况 等等这样的情况,又学习到了哈哈哈,在这里强烈推荐了解学习下这个NoSQL,无论是官方文档还是官方群都是比较友好的,Pika的开发维护者也乐于帮助我这种小码农解决问题,主要是学习成本也不大!
好了接下来说社区模块,其实接口业务的开发倒没什么难度,基本上白天如果能解决完数据存储的选型与设计,下班前我都能把接口开发完,走个单测(单测那能叫测试吗?求个心理安慰哈哈哈)
在这期间,我也引入了RocketMQ,目的是为了将举报以及邮箱相关的接口异步化,我认为这样能解决服务器高峰时减少系统的压力,如果做得不对,求喷真的!在选择RocketMQ之前我也用过RabbitMQ,这纯粹是偶然,当时是为了学习Docker,然后在Docker了部署了RabbitMQ,前期我用的信息组件的确是RabbitMQ,但后期让我决定使用RocketMQ,原因是阿里开发团队也在用这个信息组件(认真脸!哈哈哈),真正的理由是RocketMQ是由Java编写的,RabbitMQ是由Erlang编写的,语言使我更倾向于RocketMQ(我并不是说只学一门语言,排斥其他语言,我也有去自学过Python和Go),RocketMQ也的确能满足我的业务需求,后期的扩展,也有阿里大佬可以提供帮助和借鉴参考(小声bb,我以前用的是ActiveMQ)

第五个阶段

产品第二版本的需求已基本开发完了,现在就是上测试服务器了,然后后面两个月我感觉我从后端开发变成了运维。。,项目部署,组件的部署,学习了Jenkins,自动化部署 谁用谁知道
搭建服务器FTP,前端的电脑真的坑,我们去访问都没问题,就他有问题
部署静态文件项目,使用的是Nginx,然后花了一天时间弄上HTTPS,挖坑踩坑填坑,很简单的事情,搞了好久;我的系统并没有部署到tomcat上,而是 直接打Jar包部署(求轻喷!给个理由说服我)
为了图方便,去学了Shell脚本编程,这可能是收获最大的一个吧

第六阶段

要么跳槽,要么进行下阶段服务拆分

更新下,没有跳槽哈哈哈哈,被评价广度够了,深度不够,下阶段就是沉淀到明年春节