以下为郭旭东的专访内容,欢迎收看(约4分钟)。
自我驱动,成就非凡
我负责开发自研的DevOps平台Varian,可以说是工作中遇到过的最大难题了。整个平台由我一手搭建,从技术选型、产品设计,到代码编写、开发测试,甚至营销宣传的工作也要自己来做。对于一个习惯根据需求文档来写代码的程序员来说,是很恐怖的一件事,甚至接到任务的第一天就怕到想跑路了。但是领导的一句话:“怕什么,放手去干,做砸了也不会怪你”,给了我很大的信心,于是就放开手脚,大胆去干,反而后来越做越好了。
当时整个项目只有我一个人做,准确点说,整个部门只有我一个运维开发,其他都是从事业务开发的Java程序员,我兼任了产品、开发、测试、运维等所有角色。本身我只是一名后端开发,前端的内容也要捡起来现学,从页面的设计到实现的功能,都要一个人解决。这些技术的问题还好解决,最难的角色转换其实是产品,每天都要想方设法地给自己提需求,甚至睡觉做梦的时候都在画页面原型,同时疯狂地参加各种技术交流会,企图从别人的实践那里获得灵感。而我们的系统又是内部系统,是提供给开发和运维同学来使用的,大家都有自己的使用习惯,所以也要经常向内部团队收集需求等等。
一开始就是普通程序员,只会业务代码,没什么深入研究。负责整个平台后,要考虑整个项目流程管理,成长速度是非常快的。在不断的分享交流中,视野慢慢打开了,想做的也就越来越多了。
现在项目越做越大,团队人也很多,但运维人数只有5个,通过DevOps平台负责公司所有云资源的管理和维护,基础设施组件(代码管理平台、CI/CD 系统、资源监控系统、Kubernetes 容器管理平台、办公OA系统、项目跟踪&文档管理系统等)的开发和维护,同时也负责公司所有的IT设备的维护。DevOps平台也是随着团队的壮大不断迭代,由最初的一个由Django开发的单体应用,发展成由核心服务、CMDB服务、监控服务、消息通知服务和 CI/CD 服务组成的云原生应用。
DevOps平台现在着力于提升开发效率,降低开发与运维之间的沟通成本,由机器处理大量繁琐的运维任务,节约人力成本,使开发和运维能更专注于业务开发与维护,同时借助 Kubernetes 的容器编排和弹性能力更是释放出了大量的运维时间。2019年在业务不断增加、服务数量直线上升的情况下,ECS服务器数却在负增长,真正达到了降本增效的目的。
云原生是未来趋势
我觉得云原生是开源精神最完美的体现,把各个大厂、曾经的竞争对手拉到一起共同解决问题,对推动软件发展是非常有利的。我们自己也在坚持云原生项目的输出,实践并反馈问题解决方案给上游,大家一起讨论、协调、修复。最近一年在开源方面,我为sig-cli 的子项目 Kustomize提供了完整的中文文档,让更多的中文开发者可以更接近云原生生态。同时 Istio 和 Kubernetes 也有中文文档的贡献。以前大家只关注自己的代码和项目,现在提交后共同建立项目,减少竞争和许多不必要的麻烦,社区的声音被重视,反而人越来越多,生态越来越好,算是真正发挥了开源精神。
阿里云和微软合作的OAM项目和阿里开源的混沌实验实施工具 chaosblade 是我最近比较关注的。全球首个云原生应用标准定义与架构模型,应用点分离,让管理更轻松,交付更可控;应用定义与平台层实现解耦,应用描述支持任意扩展和跨环境实现;可以*组合和支持模块化实现的运维特征描述。可以大大降低 k8s 的入门成本。混沌工程属于一门新兴的技术学科,行业认知和实践积累比较少,大多数IT团队对它的理解还没有上升到一个领域概念。阿里开源的 chaosblade 则很好的提供了一款简单易用、功能强大的混沌实践注入工具。
进一步海阔天空
当初因为独立负责项目,心里发虚,就经常去参加各种技术分享,包括网络交流,在学习的同时增长见识,渐渐就能参与其中。在学习技术方面,我推荐走出去和别人讨论、分享,当给别人讲明白,讲透彻了,自己也就精通了,这样学习的知识就很不容易忘记。而学习的过程中难免要跟外籍小伙伴交流,比如Github讨论,不要因为英语不好而退缩,英文本非我们的母语,只要表达意思明确,问题描述详细,即使是使用 Google 翻译也不是什么丢人的事情。
现在国内有很多人在把优秀开源项目的文档翻译成中文文档,同时越来越多的中国人在著名项目中起着重要作用,我们比自己想象得更优秀。克服了接触新事物的本能恐惧之后,就是另一片天地了。