12月5日,HTML5移动生态大会在北京国际会议中心召开,作为国内HTML5领域最具影响力的盛会,本次大会以“发现创新之旅”为主题,邀请了海内外数千名HTML5开发者、技术专家与行业领袖,共同探讨HTML5移动发展之路。
在下午的HTML5 技术会场,灵雀云副总裁于历濛带来了『Docker和CaaS如何帮助H5应用开发和运营』的精彩演讲,以下通过PPT来分享下精彩内容。
2013年,一家叫dotCloud的PaaS公司,将其底层的虚拟化技术Docker开源出来,反而比自己的产品更受欢迎,并在短短两年有了飞速的发展。
Docker和H5有很多相似的地方,H5的出现解决了浏览器的兼容性问题,Docker的思路也很类似:Build, Ship Run Any App, Any where,只要程序编译一次,就能在任何的平台上运行起来。
为什么要解决这个问题呢?主要来源于应用交付遇到的挑战。随着公司的发展,用到的技术栈也越来越复杂,可能有PHP的一套程序,Python的一套,Ruby On the Rails的又一套,是很常见的;应用环境也越来越复杂,比如开发环境一套环境,测试环境一套,生产环境又是一套。最后的结果就是上面这个很恐怖的矩阵,不同的技术栈放到不同的环境中,可能组合出各种可能性,这些可能性催生了DevOps的概念,开发需要兼顾运维人员的工作,管理各种环境和技术栈,保证代码能够顺利发布到生产环境。
太阳底下无新鲜事!
其实在上个世纪60年代,运输行业也遇到过类似的事情,货物有不同的尺寸、规格,交通工具也不尽相同,集装箱应运而生。不管是什么货物都可以放到集装箱里,集装箱又可以放到个种交通工具中,运输者只需要关心如何运集装箱,装货的只需要关心怎么把货物放到集装箱里。
Docker用了类似的想法,Docker就成了技术栈和环境『对话』的一个标准。
虚拟机有GuestOS,容器中使用的直接是Kernel里的进程。比如,曾经有人做过测评,一台物理机能切成10个VM,相同的物理机可以切成60-100个Docker容器。虚拟机就像是填了很多沙子的一瓶水,这些沙子就是Guest OS,而Docker就是一满瓶子的纯水。
Docker是一个很好的技术,那如何使用它呢?就像在码头,你如何调度、摆放和管理集装箱?我们提出了Container as a Service的概念,就是调度和管理Docker容器。
在用IaaS的时候,大家申请到的资源是VM,所有的环境都要自己花时间再去配;PaaS提供了很多便利,比如一键部署,一行命令就可以将环境部署好,但是应用是没有办法迁移到其它地方;CaaS介于IaaS和PaaS之间,同时兼具两者的优势,CaaS提供的资源是容器,网络和存储都可以再去另外配置,同时还提供了镜像服务,所以可以做到一键部署。
这也是Docker要解决的最基本的问题,Docker在打包的时候是将代码和环境一起打包的,应用在开发环境测试通过了,交付到测试和生产环境肯定也是没问题的。
异构导致的另一个问题是:在生产环境中遇到的问题,在测试环境是无法重现的,比如一个生产环境用到了很多VM,出于成本和业务复杂性的考虑,不可能在测试环境中做出一套一样的出来。
对于CaaS来说,首先Container的尺寸很小,速度很快,甚至可以在测试环境中搭出一套和生产环境一样的架构。
比如我们有些客户目前在生产环境中还是用的VM,在开发测试环境就是完全用的CaaS环境,并且完全复制了生产环境的拓扑结构。
在资源有限和共享的环境下,测试人员需要排队,而鉴于Container对资源的节省,可以给每个开发和测试模拟一套生产环境。
开发需要在开发和运维的工作中切换,效率较低。而CaaS的环境下,开发可以专注于自己的技术。
这是一个典型的游戏服务的架构,从弹性的角度来讲,VM是非常重的,当流量过来的时候,可能是没有时间响应的,当然可以通过pool来减少时间,但是成本特别高。
也欢迎对Docker和游戏感兴趣的小伙伴加入微信群,交流讨论!
网友评论