导语

稻盛和夫说,工作是磨练灵魂的道场。加入微众3年多,在工作的道场上,有军哥的指导、有同事的协助以及自己的觉察,我成长得很快,细到代码规范,大致人生哲学,都有了不少的进步。也逐渐学会从只关注蝇头小利,转变成从全局的视角看待问题,关注价值。



云原生的基石-容器

艰难起航

微众容器云平台是我从零到一参与设计和开发的系统,至今已经管理着超过7万核的计算资源池,为银行技术栈向云原生转型提供坚实的基础设施。

容器项目始于2018年底,管理系统全部自研实现。起步非常困难,团队没有人搞过docker,没有人知道我们的容器要做成什么样子,甚至在内网机器安装k8s都花了一周时间才完成。2019年年初系统火速上线,当时的网络插件还是用脚本写的几行粗糙的代码。

而如今容器平台1.0已稳定运行,有超过50%的应用实例跑在了容器平台上,在如此规模的数据集群,任何细微的错误都会被放大,稳定运营的压力很大。同时我们也迎来了新的机遇,平台层面的小优化可能产生巨大的价值。

2020 WeStar私享系列(一)— 我在微众造轮子_java


快速进化

下图是微众的容器生态全景图,最顶层是我们的应用层,包括业务系统、工具系统、中间件和创新应用;第二层是我们平台的API层,组合下层云原生的服务,对上层提供定制化的协议;第三层是容器编排管理层,我们的K8s、prometheus、harbor、核心的云原生应用管理引擎等产品位于这一层;第四层是容器的运行时层;第五层是逻辑IAAS层,包括IDC、DCN;最底层是机房和公有云。容器平台致力于提升应用交付效率、资源使用效率、系统稳定性、运维自动化,同时推动基础架构改造升级,迈向云原生。

2020 WeStar私享系列(一)— 我在微众造轮子_java_02

容器平台做了很多适配行内工具的工作,集群外通过Gateway模式对接外部系统。集群内通过Daemonset的方式运行各种服务的Agent,通过授权执行和授权挂载的方式保证安全。gateway和agent里应外合提供一整套容器编排管理解决方案。

另外,我们正在研发基于Operator的应用管理流程,正真将应用的生命周期交给代码、交给平台、交给自动化,这将是k8s声明式API在微众落地的又一经典力作。

2020 WeStar私享系列(一)— 我在微众造轮子_java_03


畅想未来

应用容器化后,应用有了统一的规范、统一的监控,我们正在做运维编排。

容器规模化后,资源池更大、应用资源交付更快,我们正在做动态调度和资源编排。

未来,我们还要做serverless,支持裸函数直接run在容器平台上,让业务开发真正进入低代码时代。

2020 WeStar私享系列(一)— 我在微众造轮子_java_04


开源

开源应该是不少有梦想的程序员都想做的事情,对于我来说也是如此,然而在企业里做开源不是一件简单的事情,脱敏、安全审查、文档、运营都是非常耗费心力的事情,非常敬佩还在开源一线坚守的开发者。2021年容器平台开源版Dockin也发上了Github,希望开源能提升团队文档规范、引导方向、提升团队技术的影响力,同时也给社区贡献一点属于微众的解决方案。

2020 WeStar私享系列(一)— 我在微众造轮子_java_05


复盘思考

无论做什么工作,退去表面的繁杂后,剩下的就只有内在的价值观和方法论,过去我很少向人谈及这些“软”的东西,不是因为没有总结,而是觉得火候还不够。

但为了避免本文太“干”,我还是尝试讲一下我在工作中的感悟。


保持热爱,奔赴山海

对于每个基层员工来说,做什么样的项目,并不是因为你有多牛,这不过是领导安排给你的活,有的人可能不喜欢自己正在做的工作,实际上是他没有去深入理解这项工作的意义,做精做强。


中间件平台的工作,说起来很高大上(需要一些吹牛逼能力和想像力),实际上是很无聊的工作,有时候一天都晚都在查资料、分析日志,一行代码都没写,不写代码,心里就会虚,总想找时机补一下。


容器这种技术,投入很大,产出要看具体的业务场景和业务规模,不是每件事情做出来马上就能看到效果;工作中还遭到了很多同事的吐槽,比如“为什么不能像VM一样修改配置重启?” “为什么容器又挂了?”;一种新技术,还会遇到很多的困难,比如早期的IP固定问题,后面的内核内存泄漏问题,如果没有足够的耐心,项目都可能做不成。坚定信念、保持热爱是工作能持续的推动力。


对此我的经验是:

持续学习,不断的给自己洗脑

脑补光明的未来,谎言说一万遍就会成真。

 吸纳业界的优秀案例

在技术方案选型上,经常会参考腾讯、阿里、美团、唯品会等案例,再和我行的实际场景结合,保持在同行业的先进性。

从用户身上得到正反馈,增强信心

曾经quick说在容器上压测结果更准确,VM压测数据高,生产实际没那么高,推荐大家上容器,我当时就转发到了我们内部群一起分享一下,像这样的案例还有很多。


关注价值

工作是一种修行

有时得意,有时失意,如果只关注到表面的得失,而没有觉察内在价值的变化,往往会误入歧途。如果一个人的道行没有提升,得失就是个零和游戏,某方面的得意或许是以另一方面的失意为代价。

 钝感力,按原则办事

不轻易受环境的影响,钝感实质上是一种坚持,以不变应万变,能穿越牛熊。总结工作生活的原则,一般情况保持不变,环境是不确定的,随风摇摆的就是韭菜。

 等待价格回归价值

价格和价值不是总是一致,价值回归需要场景和时间。军哥说,等待也是一种主动。平常心,尽人事,静静等待天时地利人和,左顾右盼结果将会朝坏的方向发展。

远离高估的事务

寻找低估的事物。项目、人、事都一样,太热门的东西要谨慎,待热门的才是值得投入的。


程序员的自我修养

强准备

很多人发现自己的弱点后觉得再怎么准备也没用,甚至在结果出来后差强人意时开始否定强准备的效果,殊不知不准备结果会更加糟糕。

 重总结

提升觉察力,每个项目、每个时期、每一个事件都有应该做总结,不做总结和咸鱼有什么分别。

对于同一个问题,比一般人想更多

尽可能使自己进入心流的状态去思考问题,这样通常能发现和别人不同的点。

养成适度的代码洁癖

代码规整、注释规整、重复代码不写两次、有单元测试,代码洁癖是一种修养,也是一种不将就态度。

比一般人努力

我们现在都在谈smart,在我看来,勤奋也是一种smart,努力过才知道smart的方法,不经过努力就smart,通常是懒。

参考各方观点,不能固执己见

每个人的认知是有偏差的,程序员通常容易自我陶醉,要经常做认识升级,像自己做的软件一样,定期做版本迭代和Bugfix。

帮助同事是最快的成长

帮同事解决问题,自己也能收获解决这个问题的能力,同时也增进了大家对项目的了解,共同成长。

尝试新东西,在风险可控范围内试错

与其进行飘无虚渺的设想,倒不如尝试用较小的代价先实现出某一个功能或产品,然后通过实际使用去证明它,继而在反复的迭代中不断完善。

适当重复造轮子

很多程序员不提倡重复造轮子,实际上这是对“重复”的定义要求太高,真实场景中,我们很难遇到绝对重复的事情;再者,核心的技术只有做一次才能真正吃透,只会用轮子,容易被人掐脖子。


最后一条也呼应一下本文标题,我喜欢造轮子,本文实在想不到什么标题,就以造轮子为题。