近期,EGO 对又拍云研发构架师张聪进行了专访,在专访中张聪阐述了他对 CDN 未来独特的见解,听得小拍崇拜不已,赶忙为大家搬来采访稿,大家快来跟小拍一起跟随张聪了解一下 CDN 的未来吧!
专注于场景化 CDN 业务的又拍云,自创办以来,业务、团队一直在快速扩张。在这个过程中,又拍云完成了技术选型、替换、迭代优化等一系列工作,既有国内较早引进 ngx_lua 的壮举,也难以避免地有踩过一些坑。EGO 特别采访了又拍云架构师张聪,听他聊聊又拍云在基础架构方面的那些事儿,也聊聊关于 CDN 未来又有哪些可能。
下面是经过编辑整理的采访内容:
EGO:先简单介绍一下自己吧?
张聪:我 4 年前加入又拍云,之后一直从事 CDN 领域的工作,非常有幸经历了又拍云 CDN 从早期起步比较简陋、用户量比较少的阶段,到今天业务量不断扩大、技术体系不断变革完善的整个发展过程。
最早团队小的时候,什么事都需要自己去做,像写代码、上线、运维等都得一个人搞定,现在 CDN 团队不断扩大,除了技术之外,我也开始负责一些管理团队的工作,虽然中间也遇到了很多问题,但也收获了很多经验,也是跟着公司的变大不断去适应不同的挑战。
引入 ngx_lua、二次开发、开源
EGO:能分享一下您在又拍云最有成就感的事吗?
张聪:公司成立以来,又拍云业务一直在不断快速扩张,在这个从小变大的过程中,肯定需要对架构进行改造和升级,否则就无法承受业务的增长,所以我们曾面临了一些技术选型的问题。
最早的时候,又拍云 CDN 用 Nginx C 模块进行业务开发,但它的维护成本很大。我们作为一家创业公司,就想选择开发尽可能方便、效率尽可能高的技术,经过多方考量之后,我们引入了 ngx_lua 项目。虽然当时 ngx_lua(下图)在国内没那么普及,应用也还不是很广泛,但我们觉得它非常符合我们的需求,就把它引入到了又拍云的 CDN 开发框架里了。
在创业公司,技术选型还是非常自由的,只要关键的核心技术人员能够胜任某些新技术,公司一般也会支持这些新技术以及架构上的调整。
引入之后,其实也遇到过很多困难,因为 ngx_lua 在国内的使用不多,很多资料都偏向国外,国内甚至很少能够找到交流的人,包括招人的时候,也很难招到相关的技术人员。我们是先自己摸索,慢慢地把线上系统从旧模式替换到新的模式。同时,我们也招了一些技术比较好的新人,从头培养,这样持续半年、一年之后,他们就能适应新的开发方式。中间也踩了很多坑、付出了很多代价,但当我们都跨过去后,整个 CDN 业务基础的开发环境也就顺利转变过来了。
这样,后续的开发、功能逻辑的迭代、维护都比之前轻松了非常多,而且在之后很多 CDN 功能的演进中,我们的效率都是比较高的。我们也总结出了很多文档,能给新来的技术同学学习,同时,这个项目在国内也越来越流行了,我们也能跟国内同行有更多的交流。
现在回过头来看,当初把 ngx_lua 引进公司,到后面 CDN 整个技术发展方向再到现在,这个选择是非常正确的,整体加速了开发节奏、节省了维护负担。对我们这样 CDN 领域的创业公司来说,就需要在条件有限的情况下选择一项更高效的技术。
这也是我印象比较深刻的一件事,对技术人而言,能经历这种引入一个新技术,到自己慢慢掌握它,再到能跟同行去分享,是非常有意义的一件事。
EGO:现在还在沿用 ngx_lua 吗?
张聪:还在用。但官方更新不一定能满足我们现在的需求,所以我们会在这个基础上加入自己的东西,做二次开发。
一开始我们只是拿来用,之后业务复杂了,我们就自己去修改它、完善它,跟它一起开发、发展。同时,我们也陆续在 github 上开源了几个相关项目,回馈社区。
EGO:能分享一下您踩过的坑、遇到的挑战吗?
张聪:其实踩过很多坑,我讲一个比较典型的。一般来讲,CDN 厂商承受的请求量、流量是非常大的,甚至远比中型站点的流量来得大。
在这个基础上,我们做一些功能的改造、新功能的发布的时候,就会面临很大的挑战。特别是功能的改造,就像是在一辆行驶得很快的车上换零件,业务量越大越有这种感觉,有些比较大的改造,往往还会涉及到系统的好几层。因此,我们很难非常干净利索地去做整个架构的调整、演进,只能是做好整个调整计划,然后把整个计划拆成 N 片,一点一点去做推进,就好像一个一个零件做替换一样。
其中,最大的痛苦是,因为 CDN 上有很多缓存,如果更换某个“零件”的过程中一旦出了问题,代价就会非常大。因为除了错误本身之外,这些错误还会污染到 CDN 上一些缓存系统,相当于你除了要修复 bug 之外,还要把被污染的缓存部分挑出来、清理掉,这是非常让人头疼的一件事情。用数据开发做比喻,就相当于你的数据被污染了,你修复了 bug 之后,还要挑出那些被污染的数据,再把它们修复掉。这个过程是非常费心费力,也非常折腾。
这是让我印象比较深刻的踩过的坑。又拍云也制定了各种方案,采取了人为的、系统的各种措施来减少这种事情发生的可能,比如现在我们改造之前,就需要经过多个精心设计的流程、观察各种数据指标,以保证过程的顺利。
CDN 服务的未来:安全、可定制化、自主配置
EGO:能分享一下 CDN 领域未来的趋势吗?
张聪:第一,CDN 可能不仅仅是简单的加速,还需要有一些安全防护方面的功能。你的网站会不会被攻击、别人是不是异常访问你的网站,这些都是 CDN 安全领域的内容。特别是大客户,他们对 CDN 安全方面的要求会非常高。同时,因为 CDN 是一张全国的网,它承受攻击的能力肯定要比用户的一个源站、单个节点的能力来得高,所以 CDN 上可以做好多安全相关的产品。
又拍云也在完善 CDN 安全方面的产品,在去年就推出了应用防火墙系统,一些简单的注入攻击、漏洞扫描,又拍云 CDN 网络就能帮用户挡掉这些风险。这是我觉得未来 CDN 发展的一个方向点。
第二,HTTPS 是未来的趋势。它的应用会越来越广泛,CDN 也就需要对此做出相应的变化。例如又拍云就推出了 HTTPS CDN 的动态证书调度,用户在我们后台简单配置一下他的域名,然后上传 HTTPS 证书,几秒之后就能全国生效,我们的边缘节点就会进行加载的证书、支持 HTTPS 访问,非常方便。
评论