阅读 835

创业公司技术Leader的上半年 | 掘金征文

2020年注定是不平凡的一年,一罩难求的一年,也是很感动的一年,就俩字,牛逼。本文在午夜一气呵成,文笔有限(文末附摸鱼指南

上一次以博客形式的技术分享还是在3年前,这几年在创业中兜兜转转,博客也断了3年,作为刚加入的稀土新人,偶遇这次活动也来分享我的2020上半年.....

上半年

笔者所在公司主要做K12在线教育,一直用着独立部署的saas系统(就是把源码买过来,弄台阿里云服务器跑起来),在19年下半年,才开始对技术部的筹建,补充各方面的人员,由于我一直在创业公司做,并且拥有丰富的教育创业经验,所以19年9月份以技术负责人的身份加入技术团队,加入公司后一直对各个岗位人员的补充和技术体系的搭建,开始了公司技术实力的提升期。

1月-技术团队步入正轨,疫情扩散

2020年1月,这是我加入团队的第4个月,随着19年年底的人员补充,技术部门达到了13个人,涵盖了【产品、设计、APP移动端、WEB前端、测试、Java后端、技术支持】。用着所有创业公司都用的工具、框架、管理、发布模式,所有项目以2周一个迭代的方式进行着(创业公司的标配后续文章中我再详细提及推荐),就这样,我有条不紊的掌控着技术团队的整个局面,直到春节的到来。

23日10时起武汉封城,各省开始驰援武汉,那几天我相信大家都在实时关注着何时复工、火神山、雷神山医院的建设情况。

2月-不堪重负,业务重压

2020年2月,由于疫情影响,学生纷纷转战线上网课,从2月1日开始,各大直播平台提供商遭遇滑铁卢,这其中的代表如钉钉、腾讯课堂等产品都出现崩溃情况。我们对接的视频提供商由于数次出现崩溃,导致直播严重卡顿,上课崩溃,回放丢失的问题,技术团队面临着老板、一线班主任、上课老师的压力,基本上是007的在家办公模式,然而我们在直播层面上只能与提供商沟通解决办法,直到3月10号才开始好转,由于大部分回看没有,且不可恢复,我向老板提议了赠送去年同期回看的课程,终于是稳定住了家长情绪。同时技术团队跟直播提供商沟通,由于损失较大,做出了一个月免费存储和流量费的补偿,这事也才算安稳的过去了。

接下来技术团队开启了一个月的在家办公模式,一直到3月2日。虽然是在家办公,但也是要保证每个人的产出交付,摸鱼是不可能的,这个月说实在的,我是非常累,打通各个环境,各种在线会议,工作评估,给老板汇报,技术简历筛选与面试,这个月的面试通话时长就达到了1200分钟。

3月-新成员加入,APP2.0发布,等级保护2.0测评

3月份团队达到了17人,大家带着口罩来上班,但此时团队的办公效率不是特别高,面对面的沟通很少,随着时间推移慢慢就回归正轨了。

由于是教育类的APP,主要以视频为主,2.0版本加入了微信、支付宝支付功能,但视频又属于虚拟物品,AppSotre要求接入内购并且会抽取35%的服务费用,这很显然不是我们想看到的,做出了各种技术上的方案,最终成功发布至AppStore,仅被拒1次,由于门道不是特别正所以不在此处详细描述,后续我会把详细实现过程记录下来。

等级保护2.0也是互联网教育机构必须要做的一件事情,受微盟删库跑路事件影响,此次对接的测评商异常敏感(因为对接我们的测评商和给微盟做测评的是一家),所以难度显得特别大,各种防火墙、WAF、云盾、数据库审计、日志审计、容灾备份、病毒库策略,堡垒机,我也是亲自操刀,能上的都上了,前前后后对系统做足了准备和优化,最终顺利通过。

4月-扩充团队,分支管理面临挑战

由于人手原因,团队依然采用着多单体架构【SpringBoot.2X+MyBatisPlus+Redis+MySQL】,通过Feign组件进行http接口的调用,学生APP端、学生客户端、老师WEB端、网校后台管理端,都调用着底层的数据服务接口。随着团队进一步扩大,迭代产线的变多,发布变为周发,甚至日发,冲突多了起来,项目管理艺术活瞬间变为了技术活,此时我除了要考虑项目迭代周期管理、技术实现方案沟通,迭代分支的管理、还要考虑架构的升级,其实分支控制好后服务升级可以晚一步,但服务的拆分随着业务量的发展迟早有一天要到来。

5月-人员异动、老旧交替

每个人都会有离开团队的那一天,也包括我,总结下来无非就2点,钱没给够、职业规划变动,前者总要高于后者。作为一名多年开发者,从小弟到小老弟,也必然是经历过这些事情,在我看来你的为团队做出来非常多的奉献时、或者你的能力超出了当前设定时,我会积极去向上级争取沟通。如果职业规划有变,那我会祝你一路顺风事业有成,保持联系,做好了回头我投奔你,所以此事无需多谈。

插播:5.20号这天,笔者领证了,以后就是2个人,[撒花、祝福]

6月-项目多节点部署,团队进一步扩大

随着发布更加频繁,由一天一次,变为一天多次,此时要保证线上业务的稳定,就需要对关键服务部署多个节点了,这里我并没有上来就使用微服务模式,因为拆分还需要一个过程,首先是业务层,再是技术层面,并且服务于服务之间的监控和配置还没考虑完备。这里我直接根据ribbon和feign特性基于ip做了负载均衡,采用自定义IPing的方式来保证节点的可用性。

多节点间的定时任务管理采用了分布式锁来实现,保证同一个任务同一时间点只有一个线程获取到锁去执行。对于频繁修改的规则和逻辑采用动态加载Groovy脚本的方式去实现,将脚本配置在数据库加载到Redis中,就这样顺利发布投产使用。

同时由于团队人数再一步扩大,可能由于自身实力原因,我的精力已经不够支撑那么多人,尽管已经使用小组的方式来进行管理,但由于资历尚浅,加之业务产品线混乱不够清晰,朝做夕改,最终还是与老板沟通空降一个总监过来,进行团队组织架构的标准重建。其实最主要的是,我比较热爱技术,需要花时间去研究去学习新事物,新框架,新语言,很多管理方向的杂事不是我的第一热爱项,在6月底,总监顺利入职,这大半年我也算是扛过来了。

下半年展望

随着团队进一步扩大,面对技术的挑战会更高,甚至出现服务器崩溃的情况,所以接下来我会花更多时间投身技术层面,对现有架构做出升级调整,同时部署一套监控系统,容器化也是接下来我需要去落实的一个点。

几年前,我写过很多博客,但大多已经过时,近几年也录过一些Java基础视频教程,但市场太火,虽然观看人数还算可以,但基本没有什么影响力,接下来,我已考量好在掘金平台做一个长更少年,并录制高质量的Java视频教程发布至B站,将我这些年的经验,以小故事的方式记录下来,算是后浪们一个风向标。

同时今年下半年计划选择一门新的编程语言作为学习目标,本着什么火学什么的原则,目前选定Go语言,并将学习笔记记录在掘金平台,作为小目标自我督促。

摸鱼指南

  • 提升自我执行力,第一时间响应并落实领导安排的任务
  • 观察团队中大佬提交的代码,多写能复用的代码
  • 后端多关注线上问题,前端多做埋点和日志
  • 研究项目中不熟的技术点,并试图完善现有项目的不足,CRUD外的提升点
  • 每天学习一些小工具、小技巧,并应用到工作/项目中
  • 保持对新技术的热爱,关注质量高的大佬号(不限平台)
  • 坚持每周做技术总结分享,哪怕是一个小小的阻碍点
  • 在床上想到没做完的事情,不管多晚,立马下床做掉,不要问我为什么

关于我

  • 我是君哥,一名会弹吉他打篮球跳Breaking打BeBox的90后,乐于分享 喜欢研究新技术
  • 7年Java开发,从13年做Java,项目从JDK5一直干到11
  • 曾连续3次遭遇公司倒闭,2次走上仲裁,1次法院之路
  • 后辞职技术创业,做社交产品,录制视频受益开发者达10W+
  • 又遇经济问题重新求职,现任某公司技术部技术主管。

因内容有限,细节实现部分在后续的文章中详细阐述,在这里,感谢每一位能够阅读完我的作品的开发者,希望你也有不平凡的人生

掘金征文 | 2020 与我的年中总结 征文活动正在进行中......