2022年2月23日,我有幸受邀参与CSDN《新程序员》特别策划的新栏目——“新程序员和TA的朋友们”系列直播对话第四期,和大家聊一聊开发范式大转移。作为开发者如何把握技术脉络?我从API和容器技术、云原生、开源三方面提出了自己的见解并为开发者给出了自己的成长建议。
感谢张雪蕊同学将本场直播整理成文,分享给大家。
新程序员:近几年,云原生相关话题逐渐升温,在您看来,云原生相关技术为如今的开发范式带来了什么变化,以及为什么会带来这些变化?
温铭:对于开发者来说,在现有原生的技术变革里最大的一个变化是开发习惯上的改变。开发者从需要关注运维例如搭建基础设施等方面,变为只需要关心怎么去使用这些基础设施以及怎么把它们组合起来去构建自己的业务。很多开发者不用再去关心基础设施了,可以直接用云原生。云原生架构把使用的基础设施是云上数据库还是本地数据库这些细节直接呈现出来,使得开发者可以集中精神到业务本身。
新程序员:作为云原生领域不可或缺的API和容器技术,这两项技术的演变历程是怎样的?
温铭:首先聊一下API。我们已知最早的就是AWS的CEO创办AWS的时候,在开发上制定了一个规则,即所有的系统之间的交换必须要通过RESTful API的形式来进行数据的交换。也是从那个时候开始,越来越多的系统使用RESTful API来交换各种各样的数据。在去年的时候,全球有95%以上的公司都在使用API来做各种各样的对外服务。所以我们现在说到的互联网就是把各种各样的手机的客户端连到我们服务端,其实就是API。因此API一直都是一个非常重要的事情。
然后我们聊聊容器。容器是一个非常技术性的词汇,它的痛点其实也来自于开发者本身。在容器里面大家都会聊到Docker,而Docker其实就是集装箱的意思,也就是作为开发者希望一次编码可以到处运行。大家逐渐把各种各样的东西放到方便管理的容器里面,越来越多的这种轻量级的容器就会取代了以前那种重量的虚拟机之类的服务。容器越来越流行起来,是因为开发者希望自己的程序能够不依赖于各种环境和操作系统去运行。
总之,API其实是由企业数字化转型驱动,而容器更多的是由开发者为了能够在更多的环境上去运行自己的服务慢慢发展起来的。
新程序员:请简单介绍下API现在的应用情况。
温铭:其实对于非开发者来说,只需要知道我们现在用的所有的电脑、手机等设备,它之所以能够给我们提供各种服务,其实都是通过API连接到后面的服务端的,而服务端也是通过API把后面各种复杂的系统串在一起的。对于开发者来说,避免不了写代码,而写代码就会先去设计个人的API然后根据API的定义编写前后端的代码。所以API其实已经不只是在开发者的领域深入人心,而是真真实实地改变了使用各种各样的在线服务体验的所有人。
新程序员:API技术目前面临哪些挑战?
温铭:API技术面临的挑战更多的来自于有越来越多的企业和服务正在从线下变成线上。特别是由于最近两年的疫情,越来越多的企业加快了数字化进程,进行线上协作办公。线上的协作办公等我们生活中的各种类似改变,会让API的调用次数以及API的并发量变得非常高。所以API面临的挑战第一个就来自于API的量非常大,对API的高性能、高可靠提出了高的要求。
其次,用户需要的同样的功能有大量同类的APP可以提供,因此APP本身需要快速迭代给受众新颖的体验。也就会对API的研发效率,以及API的上线下线、灰度发布等提出了非常高的要求。因此围绕API的全生命周期,如何尽快的提高研发效率和产品竞争力,也是非常关键的一个点。
总起来说,第一个是在底层 API的高性能、高可靠上的挑战;第二就是如何打通围绕着API全生命周期的工具,让整个API的研发效率提升。这两方面是比较大的技术上的挑战。
新程序员:您在这方面有什么样的实践经历分享给大家吗?
温铭:第一个挑战其实就是APISIX希望去解决的问题。在两三年之前去创办这个项目的初衷其实就是我们觉得在未来的世界,API会越来越重,而且量越来越大。关于第二个问题,其实像海外的Postman以及像国内现在的Apifox、ApiPost等这种围绕着API全生命周期的一些创业公司,他们就也希望去解决这样的一些问题,所以能看到大家对于性能、效率、稳定性一直都有极致的追求。
现在API也有非常多新的方向。就算现在的API都是RESTful格式的API,其实也有越来越多的API是用GraphQL的这种方式去获取的,这算是其中的一个方向。还有一个方向就是serverless。因为有一些服务,我们是希望用户使用的时候它才启动。就是说我可能不用常驻在后面的一个服务,而是通过这种容器,通过K8s,通过云上的各种基础设施,当有用户请求过来的时候,我再真正地把这个服务给启动起来。第三个是关于API的一些设计和文档。这方面其实一直是研发的一个痛点,因为以前在比较粗犷的研发管理平台下面,我们不太关心文档和设计,但现在我希望产品能够快速发布,提高研发效率,那么围绕着API的文档、设计,其实也有非常多新的流程或工具出现。
新程序员:云原生技术的快速发展已经逐渐将整个开发过程、开发流程带入云端,未来,开发者的代码调用等服务都将被“云化”,开发者身在其中,将迎来怎样的机会?需要在哪些方面学习提升自己,才能抓住难得的发展机遇?
温铭:对于开发者和创业公司都是一个非常好的机会。因为不用再去关心基础设施的运维和它的一些高可用,只需要像搭积木一样把这些基础设施拼装起来,然后把重心用到打磨产品上。这能让你的产品快速达成一个可用状态,对于很多的创业公司和开发者来说是非常好的。不用花很长的时间,就可以做一个产品的MVP版本出来,然后让用户去反馈、迭代。
新程序员:那是不是也就会意味着开发者在这里面的重要性会弱化?
温铭:对于一些初级的开发者或者没有积累太多经验的开发者来说,这种云上的东西会逐渐的把他们给替代掉。但是有经验的开发者,还是每一个公司都希望招聘的人才。云只是帮你去提升了开发效率,但是你这个产品究竟能不能去满足用户的需求,你的代码、写的应用是不是真的能够解决用户的痛点,云上的基础设施其实是很难帮你做到。
新程序员:作为开发者需要在哪些方面进行提升?
温铭:第一个方面就是技术的深度和广度。例如作为DBA,以前可能更关注系统的高可用、数据库备份之类的东西,但是放到云上之后,这些东西通过云上的一些配置就可以自动完成了。那么DBA可能就应该更关注性能的调优、数据库的安全等方面。对于普通的开发者来说,你就要花更多的时间去研究怎么设计缓存、怎么设计算法,让代码运行得更快。所以需要开发者把代码本身钻得更深一些。
新程序员:在您看来,云原生技术未来的发展方向是什么?
温铭:我觉得云原生其实是刚刚开始,虽然现在大家都在聊云原生,但是从原生概念诞生到落地,也就是最近几年的时间。就算现在大家都喊着要上云,其实真正上了云的公司的比例也是比较低的;而且就算上了云,很多中国的公司其实还是一个混合云的架构,也就是说,一部分的业务先上云,其他很多的业务还是在自己的私有云,甚至完全的把公有云搬到自己的私有机房这种形式的上云,这并不是真正意义上的公有云。
对于云原生来说,很长一段时间内还要在多云混合云的情况下,考虑如何保证业务的连续性和自身安全,以及后续如何把很核心的业务和数据搬到云上面去。我觉得还有非常多技术上和非技术上的挑战,甚至是法律层面都需要我们去考虑。
所以我认为云原生不是一阵风一样的技术,过两年就没有了,云原生会影响未来至少10年的技术走向。基于发展方向,我觉得大家可以更多的关注云原生上一些比较流行的开源项目,虽然公有云本身是不开源的,但是整个CNCF里一些基石类的项目全都是开源项目,这和以前我们用 Windows或者是Oracle的时代是完全不一样的。可以认为在云原生的整个时代里面,开源项目是基石。所以我认为对于开发者来说,我们应该更关注现在有没有一些好玩的项目,这些项目能不能帮助我们更好地完成我们的业务。
新程序员:您觉得未来很多公司都会上云,那上云能解决他们什么样的业务问题?
温铭:我觉得第一个就是成本的问题。以前大家不愿意上云,是因为自己有研发,可以去搭一套自己的架构。但是现在中国工程师越来越贵,人力成本在逐渐上升,这个时候不如去上云,云上的基础设施也能给我们提供这种服务。
第二个是业务快速发展的问题。比如说有一个上线的线上服务,有时候它的流量很大,我需要去弹性扩容缩容,如果没有上云,其实是很难弹性扩缩容去满足你业务本身需求的。
第三个我认为可能会有安全方面的考虑。虽然中国的公司觉得在私有云里面更安全,但是大量事实证明很多的泄露都是从内部开始的,所以公有云的安全级别其实会比自己搭建私有云更高,而且随着中国的各种隐私数据保护法在2021年开始落地,很多的公司也会出于安全考虑,把自己的数据放到一个更合规、更安全、有专业安全团队的云厂商去服务。
新程序员:从APISIX到现在API7,这个过程阶段中有一些什么样的变化?
温铭:APISIX是Apache软件基金会的顶级项目,和有些项目不同的是,APISIX是我们公司捐献给Apache软件基金会的,所以我们最终还是为了实现商业公司的利益,会作为APISIX的原厂去提供一些支持商业化的产品。
这种形式在中国会越来越多,因为工程师其实不仅可以通过自己的代码去找一份工作,也是有机会去写一些世界级的开源项目,或者开一家全球化的公司去实现一个更大的梦想。这个其实是我们去捐赠APISIX和创办商业公司的一个原因。
新程序员:那您认为开源和商业化之间的关系是怎样的?
温铭:我觉得开源和商业化其实并没有一个很直接的关系,并不是不开源就很难商业化或者开源项目就一定能做好商业化,其实是并没有必然联系的。有一些开源项目的商业公司其实也没有做成功,比如说像Docker。所以我们需要更理性的去看开源,开源其实是能够帮助一个项目更快地去触达通过商业公司触达不到的用户,能够让你的项目更快地向前迭代。
关于商业化,其实我们从来不会羞于谈商业化,因为作为一家商业公司来说,赚钱就是利益的驱动点。很多的开源商业化的公司,开源的项目推出,最终的目的就是希望能够从开源的企业里面去做一些付费转换的。付费转换就算是1%或者2%,只要开源用户基数足够大也会有非常多的用户转成付费用户,那么我们也能够从中通过开源用户对开源社区的贡献,最终达到商业公司去赚钱,然后把这些利益又分给开源的贡献者,我觉得这其实是很良性的循环。
我们需要找到怎么从开源变成一个商业付费的点,而且要平衡好,才有可能把一个开源商业化公司做起来。这个挑战很大,因为大部分开源项目的作者都是工程师,工程师做商业化,其实并不会那么容易。很多开源项目需要商业化的时候,其实是在外面找了一个有商业敏感度的人来当CEO,或者是找这样一些合作伙伴来。要把工程师的思维转变成商业思维,其实对于很多的工程师来说挑战还是蛮大的,因此我们需要更多的是在于思考问题的角度,怎么把个人的成就感,从代码转移到创业。
新程序员:国内开源存在的普遍问题是什么?
温铭:我觉得对于开源商业化公司来说,中国其实是一个很好的成长的土壤,但并不是一个很好的商业化的土壤。我觉得这会是中国开源商业化公司面临的一个问题,我能在中国收获非常多开源的用户,但是并不能收获太多付费用户。这其实是有多个原因的,第一个原因是中国并没有很强的为服务或者是一个看不见的基础软件付费的意愿。
中国的很多企业更愿意为一台硬件设备来付费,或者更愿意为一个能够坐在我公司里面给我写代码的外包人员来付费,但是他不愿意为一个看不到的虚拟的基础软件来付费,我觉得这是一个观念上的问题。我觉得这应该是中国所有的开源商业化公司面临的同样问题,而且这个问题是靠自己的努力很难去解决的。这可能需要很多人很长时间的努力才行,就像现在大家逐渐习惯去电影院看电影一样,它需要一个时间和观念的转换。
新程序员:国内开源发展的问题对云原生技术发展将产生了哪些影响?
温铭: 我们经常会问到一个问题,为什么一些关键的、基础的技术往往掌握在外国的工程公司手里?其实面临这类问题的不只是基础软件的问题。我觉得一个好的解决方案就是,中国需要有更多全球化视野的创业者,我们应该在第一天就把自己定位成一个全球化公司。这也需要有更多这样的工程师、投资人或者媒体,能够更多的去关注中国正在做一些非常好的基础软件硬件的创业公司,然后一起去打造这样一个更好的环境。
新程序员:API7在之后会有一些什么样的计划可以跟大家分享?
温铭:其实对我们最大的一个计划就是全球化。因为我们在中国已经有非常多非常好的标杆用户。对于infrastructure这种基础软件来说,它是没有语言、没有文化、没有国别差异的,能够满足中国企业用户的需求,也可以满足海外用户的需求。所以全球化会是我们未来几年最重要的一个事情,我们会把APISIX让更多海外的工程师和公司知道、使用。同时我们也在做我们的云产品,然后在海外我们也会有更多的付费用户,最终它就能够形成一个良性的循环。
以上是我在本期直播的分享,希望能为开发者朋友们带来启发。另外,我在《新程序员003:云原生和全面数字化实践》还写了一篇文章:《API-现代软件基石与数字世界的连接者》,感兴趣的朋友可以在这本书中阅览。