大家是否还对这部分产品运营知识存在疑问呀,让我来为大家详细解答一下。下面由小编带你走进文章的学习!!!希望你们能认真倾听哦!!网络运营
高技术高竞争的互联网时代,对产品的交付时间逐步变短,而对交付质量的要求逐步提高,各种新创意、新产品层出不穷,市场允许的产品推出周期也越来越短,传统的软件开发模型已经无法跟上当前的需求,高效、便捷、可迭代的产品开发模式也越来越为人们所关注,虚拟化技术正是体现这种开发模式最重要的工具。
从功能上讲,虚拟化的优势一是提高资源的利用率;二是提供多样化的配置管理;三是提供快照的保存和恢复功能;四是提**品动态扩展的能力,这些也都是互联网产品开发模式所需要的重要特性。
我通过一年前的项目经历和目前应用虚拟化技术后的项目经历的对比,来说说虚拟化技术如何在开发、测试、上线部署各个过程中的作用。
简要介绍一下当时跟现在的开发条件。
一年前我所在的项目组一共有6台开发机,2台测试机,6个开发人员和2个测试人员,机器由团队公用,每个开发人员会被分配一个以自己名字命名的独立账号,开发人员使用这个账号登录系统并进行开发工作。相信这也是大部分公司的标准配置。
现在我所在的项目组有10台开发测试机,在功能上没有做特别的区分,一共有24名开发兼测试人员,没有专门的测试人员。开发人员通过登录属于自己的虚拟机进行开发工作。
开发阶段的作用
虚拟化在开发阶段的作用有两个关键点:
第一,快速的环境搭建产品经理职责
开发初始,需要一个资源分配的过程,而开发人员往往无法得到需要的灵活的硬件资源,一般可以得到的是一个账号,和一个确定操作系统的机器,这有三个原因,首先是硬件资源有限,无法保证每个开发人员能有一**立的开发机,只能采用公用机器,通过不同账号进行隔离的方式;其次由于机器共同使用,多人同时开发,所以无法依照自己的意愿进行环境调整;第三是因为服务器进行操作系统变更的代价很高。如果开发确实需要定制的环境,需要变更操作系统,在我们以前的团队里,需要提交单独的变更单,经重重审核后到系统工程师,系统工程师到周五安排下周的操作,所以从提起申请到操作一般要经历一周时间。即使进入实际操作阶段,系统重装耗费的时间也很长,安装系统的时间占用在30分钟左右,服务器系统重启的时间在8-15分钟,重新下载和配置软件的时间在1小时-3小时不等。总体说来,重建一次系统环境至少需要半天时间。
在这种情况下,开发人员在开发伊始就没有得到期望的良好开发环境,只能在整个开发过程中带着镣铐跳舞。
服务好普通用户最重要的就是做好内容推荐,如何挖掘用户感兴趣的内容?我之前在CSDN社区工作时的方法是:让研发将最近1年之中社区之中回帖量排名前1000的帖子导出,然后将他们归为几类,
再看他们的比重。选择两三个比较热门的领域组织活动,激励用户分享内容。这个方法适合比较大型的社区,因为社区已经有了一定的访问量基础,可以用来做数据分析,如果你是运营一个新社区,可以找行业内比较著名的网站或者社区,抓取他们的数据,然后做数据分析。
这里面还有一个问题,做活动只是一个短期的刺激手段,你必须要有一些长期的运营方案,才能把这件事做好,我之前的方法是在社区一些固定的推广位,每天按照比例更新下这些内容。在做内容推荐的时候,要注意以下几点:
?推荐的内容要与社区的主题息息相关。
?以内容质量优先,如果社区人气不行,可以适当找一些站外的内容。
?选择内容好或者主题的帖子进行推荐,二者必占其一。产品包装
?如果是主题好的帖子,要选择楼主比较爱参与互动讨论的进行推荐。
?如果是含有负面信息的帖子,要看楼主的回复判断下内容的真实性,有必要的时候要与楼主私下沟通,保证内容的真实性。
再来看一下目前的状况,我们应用Xen虚拟化技术,很好的解决了这些问题。开发人员在开发进行之初,提交需要的环境配置列表,配置管理人员按照开发的请求,从镜像库里选择对应的虚拟机镜像,再找一台合适的物理机由该镜像生成虚拟机,交付给开发人员使用,虽然硬件资源依然有限,但由于虚拟机所占的物理资源较少,可以保障每个开发人员都拥有自己独立操控的环境。而整个虚拟机的创建时间在1-5分钟即可完成。
由于拥有的是独立的一台虚拟机,其资源跟其他的开发人员完全隔离,开发人员可以自主进行系统配置。在需要的时候也可以随时进行重装请求,重装操作非常简单,删除虚拟机,从镜像库生成一台新的虚拟机即可,原先需要一周多提供的初始系统现在在1-5分钟即可完成。
第二,资源的按需分配
虚拟化情况下资源的按需分配是一大重要特性。如果物理资源足够多,那么可以在每台物理机上单独部署一套环境,提供给开发人员使用,但这种方式占用的资源极多,比如我们目前已经保存的镜像环境就有56个,如果使用56台物理机搭建环境的话则是极大的资源浪费。
正是由于测试环境的机器有限,需要虚拟化做到真正的按需分配资源。虚拟机只有在运行时才会占用CPU,内存,网络资源,当虚拟机关机时,其消耗的仅仅是镜像占用的磁盘资源,目前我们每个初始镜像的大小都在1G以内,56个镜像占用的空间都没有超过50g。
同时,工程师在测试时也养成了良好的使用习惯,停止测试时关闭虚拟机,这样现有的10台测试机可以发挥20,甚至40台机器的作用。
资源按需分配的另一点好处是测试人员可以轻松保留以往的测试环境,一年前我们隔壁的项目组有个约20台机器组成的集群,是为很久前的一款产品测试准备的,那款产品还在维护,所以这套测试环境大概每个月使用一次,但因为配置复杂,资源没人敢回收利用,只能由其一直闲置。
而在用了虚拟化技术之后,我们对项目中对应于每个模块发布版本的测试环境,都做了做一份备份,在测试完成后关闭虚拟机,制作镜像保存。在需要的时候再由镜像生成虚拟机进行测试。其代价仅仅是多占用了一些磁盘空间。
第三,高效的快照回放功能
快照回放功能对于测试而言意义极其重大,实际上这也是最受测试工程师们欢迎的功能,没有之一。其主要的应用场景有两点:
第一是用于分支检测的场景。产品从A点有两个选择方向A1和A2,测试工程师选择路径A1,当A1测试完成后需要回到A点进行A2的测试。在以前,我们是通过先重新走到A,再进行下一步操作的。当路径复杂之后,这是一项非常耗时的工作,而且因为两次操作不可能完全一致(比如每步的操作延迟不同)可能会导致无法真正走到A点,从而降低了测试的可靠性。
虚拟化快照是解决这个问题的最佳方案。从我们的实践经验来看,在面对分支选择时,只需要在A点做一份快照,接下来便可以放心的进行A1分支的检测了。当A1检测完毕后,恢复虚拟机至A点快照的状态,接下类就可以顺利的走A2分支了。整个过程非常流程,减少了通过操作恢复A状态的工作,快照的创建和恢复都在1-2分钟内,大大节省了测试时间,也提高了测试可靠性。
第二是故障现场保留。以往测试人员在发现产品bug后,会进入一个两难的境地,该bug很可能无法每次都顺利复现,那么如果继续测试会破坏现场环境;如果保留现场叫RD来查找原因,可能临时找不到RD,而且RD定位问题本身也需要时间,这种情况下环境被占用了,进一步的测试工作就被耽误了。
利用虚拟化快照技术,测试人员只需要在此时进行一次快照,保存完整的虚拟机环境,可以在RD有空时恢复这个快照给RD看,或者直接将虚拟机镜像丢给RD,RD从此镜像生成虚拟机,进行debug工作,原先的测试工作也可以顺利的走下去了。
对于rd而言,有了一份保存bug后的环境,也可以放心的进行各种调试工作了。
第四,特殊环境的模拟
由于测试环境的硬件限制,在很多时候无法模拟出产品的真正应用场景,比如我们正在做的一个网络模块开发,需要测试三块网卡情况下的应用场景,但是测试机只有两块网卡,无法模拟出来。于是我们在Xen的同一个网桥上了里创建3块虚拟网卡,就很好的解决了这个应用场景面临的问题。
另外,我们另一个项目需要进行集群化测试,同样是由于测试环境的硬件限制,无法达到集群化的机器数量要求,于是我们在一台物理机上搭建多台虚拟机,解决了这个问题,最后这个项目是创建了20台虚拟机完成了测试。
最后来说说产品部署和运行阶段,虚拟化的意义。
部署、上线阶段
第一,增强产品预发布功能
在产品正式上线之前应该有一个预发布的过程,即将产品先在预发布环境上线,跑一段时间稳定后再上线生产环境。因此预发布环境需要模拟生产环境的系统架构,并要保证机器数量,由于硬件资源的限制,这个过程甚至经常被取消掉,从而增大了产品风险。
目前我们团队,基于虚拟机搭建了一套完整的预发布环境,跟生产环境做到了基本一致,在多次的产品上线过程中也现了很多问题,做到了防患于未然。
第二,产品服务能力的动态扩展
产品上线后一天的业务流量往往并不是一个正太分布,而是较为极端,在早晨流量最低,在晚上流量突发很高。以往的业务上线时,一般都按照预计的最大流量上线机器,当流量低时系统资源十分浪费,比如很多物理机器的CPU利用率都在1%以内。而当流量突然增大到预期之外时又非常难以应对,紧急上机器时间不够,也十分容易出错。这是一个让运维人员非常头疼的问题。
我们线上也同样应用的虚拟机,使用虚拟化技术很好的解决了这一问题。现在上线前,只需要准备好业务相关的镜像即可,通过流量和性能监控,随时观察系统的负载概况,在负载低时可以选择关闭几台业务虚拟机,当负载突发时立即通过镜像创建更多的虚拟机提供服务,从而高效的解决了流量变化的问题。
更多视频课程文章的课程,可到课课家官网查看。我在等你哟!!!你一定会得到你想要的!!
¥86.00
¥398.00
¥699.00
¥129.00
¥188.00