再说网易云基础服务(网易蜂巢)。我刚才提到过一个逻辑,在做完传统 IaaS私有云、网易业务迁移进来后,我们监控大家使用云的情况,和业务线的技术部门访谈,发现 IaaS对业务部门开发效率的提升是非常有限的,有时候甚至起到了反作用。为了解决这个问题,我们才做的网易云基础服务(网易蜂巢)。 网易云基础服务(网易蜂巢)的原型,是一套内部的 OMAD系统,为了解决业务的 CI/CD流程而开发,因为当时容器技术还不成熟,做完这个系统之后,我们发现它对 Runtime的管理存在一些问题,比如各方需要不同的 Runtime,需要 update的时候,或者做集成的时候,就会碰到很多环境的问题。后来我们发现了 Docker容器,就用 Docker改造系统,把它做成网易云基础服务(网易蜂巢),最后做成现在的形态。以 PaaS融合 IaaS,业务部门无需特别考虑资源,也无需对应用做太大的改变,即可实现应用弹性、DevOps。 同时,我们也开始选择了开源的技术栈,因为我们发现,很多东西如果能够用社区的力量,我们也能掌控这个东西,或者能够贡献到上游,这个东西的生命力会更长久;反而自己折腾的一些东西,过几年被废弃的可能性会很大,投资回报是很低的。 Q:这些经验对后来网易云基础服务(网易蜂巢)的研发有什么影响? 陈谔:在用 Neutron之前,Nova是一个平坦的大而全的网络,分割成很多的 VLAN,要搞很多路由,要设很多的 IP规则做隔离,二层的扩展能力就存在问题;而且安全组的规则、一致性、网络的调试,已经变得非常复杂,有个地方是不通的,没有人知道是怎么回事,这个问题愈演愈烈,所以我们开始尝试 Neutron,并且用 SDN的方案。 我们胆子还是比较大的,有些实践会同时保留经典网络和 SDN,默认提供经典网络,我们直接默认提供 SDN的私有网络,这个性能要求非常高,我们就要拼命优化这个东西。现在,从我们业务的角度,一个二层就够了,很多个二层可能还不相通,还会增加复杂性。一个二层里面,能支持数千个虚拟机节点;从容器的角度,一个租户下,一张网络支持数万个容器应该是没有问题的,当然一般也不会支撑这么多。这是我们目前的网络状态,当然以后要适应新的 IT架构,有可能会支持大二层网络,二层网络之间有路由,这是以后的规划了。 四、做好产品研发的关键 Q:您提到了很多好技术,但是要把它们整合成为一个云计算平台产品,达到“网易出品,必属精品”的境界,有哪些关键因素需要注意? 陈谔:把技术交付给用户的时候,一定要考虑用户的真正场景和他的使用方式,了解有哪一些性能是用户特别关注的,这是很重要的一点。比如刚才说,不应该由用户处理复杂性,否则,很容易做成一个看似很高大上的实现,某项功能很复杂,结果用户不是这样使用,或者他根本不愿意去应对这个复杂性。 有一个很简单的例子,开奖,以前有些虚拟网络是通过 NAT去提供的,有一些浮动 IP,我们设计的时候,就要避免这种 NAT出去一个浮动 IP的情况,因为这可能会造成用户做长连接业务时,以前能用的写心跳的程序,突然就不能用了,或者用户程序依赖本地 IP,但是本地看不到 IP,他的业务上来就发现不行了,还得改业务。 我们强调,有时候,你感觉你的设计是高大上的,性能也很好,但是用户真的上来的时候,他的感受不一定是这样的。所以,一定是考虑用户怎么会使用这个技术去解决他的问题。 Q:所以还是需要一些非技术最优的折中? 陈谔:对。包括 Docker也是这样,比如网易云基础服务(网易蜂巢)如果直接用 Docker的理念,那是很极端的,它觉得根本不应该存在有状态的、不能随时掐掉的业务,但实际上我们看到用户还是需要有状态的、可以保证硬件故障或者宕机时能够恢复的有状态容器——他可能开一个数据库,不可能从这里宕机,再从另一个地方起来,至少短期之内还做不到这样的事情。所以你必须先让他把业务架构搬到云上面,先能用上 Docker的一些镜像、部署的好处,再逐步帮他做解决方案,让他用上你提供的更多好处,否则他搬都搬不上来。 Q:那么从网易云基础服务(网易蜂巢)的角度,目前优化的主要方向都有哪些? (责任编辑:本港台直播) |