大规模视频网站的计费与流量管理
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!

作者 滕振宇 发布于 2009年12月16日
编者按:InfoQ中文站不久前发布了两篇与Pomodoro时间管理方法相关的新闻《用“蕃茄”来减轻时限压力》和《Pomodoro-敏捷方式的时间管理》,本文可算是前文的延伸和实践验证。作者是AgileChina 2009大会上的讲师,本文即来自他在自己团队内部实践经验的总结。
在我们所有的对手中,最强大的是时间。面对时间,我们丝毫没有欺骗的机会,时间一分一秒的流逝,最终的胜利者总是时间。我们经常会觉得“哦,两天过去了,任务丝毫没有进展,明天就是截止日期了,该怎么办?”我们经常忙于应付一个接一个的任务,没有时间去学习充电,享受生活,并由此陷入很大的焦虑情绪。随着社会不断发展,工业文明极大地丰富了人际间的交流手段以及获取信息的手段,我们的时间利用效率却变得越来越低了。沉下心思专心做一件事情,对绝大多数人来说已经变成一件不可能的任务。究其原因,主要有两个:
排除干扰,确保首先完成最高优先级的任务,是提高个人时间利用效率必须解决的问题。这与敏捷软件开发(Scrum、XP、Lean)要解决的问题何其相似。针对软件开发中的类似问题,九十年代起Ken Schwaber、Jeff Sutherland、Kent Beck、Martin Fowler等大师们提出的敏捷开发解决方案,其中包括时间箱、不受干扰的迭代、具有优先级的代办任务列表、拉动(Pull)任务、承诺、计划与反省等等。无独有偶,从九十年代初开始,意大利人Francesco Cirillo也基于相同的策略设计并发展了番茄技术(The Pomodoro Technique,Pomodoro意大利语“番茄”)来管理我们的个人时间。用到的工具很简单,一个厨房定时器(Pomodoro Timer),三个简单表格(当天任务列表 To-Do,任务清单Activity Inventory和记录历史数据的表格Records)。

在敏捷开发中一个迭代的周期通常是一到四周,番茄技术的一个迭代是25分钟,称为一个番茄时段。跟敏捷开发的迭代类似,在一个番茄时段开始时需要从当天任务列表中找出目前最高优先级的任务,然后不受干扰地去完成该项任务,一直到定时器的铃声响起。每个时段结束后可以有三五分钟时间自由支配,然后再开始新一个时段。在敏捷开发的迭代过程中,团队只会集中精力完成当前迭代中的任务,不会对新的任务需求做出响应,所有的新任务都放到产品 Backlog。在番茄时段中,个人也是采用相同的策略,在紧急情况下,新的任务会放到当天任务列表,作为一个当天的一个未计划任务;而一般的任务,只需要在任务清单上加一个新的任务项目。然后不受干扰地继续当前的工作。即使任务完成时,定时器还没有响,处理方法也很简单,用剩余的时间去“重构”完成的任务,使它更好一点儿。
以下以一个使用番茄技术的程序员的工作日程表为例。

在这个日程表很好地融入了戴明环PDCA(计划Plan;执行Do;检查Check;纠正Act)。每一天总是从计划番茄时段开始,最后一个番茄时段以分析反省结束。每天的历史记录一般包括计划执行情况、未计划任务情况、估计与实际,干扰次数,干扰内容等等。通过这些历史数据我们可以很容易地观察自己:
通过切实的数据对自己的时间利用情况有了清晰的了解后,我们就可以在反省中有针对性地设计解决方案。如此不断反复时间效率就会不断得到提高。
番茄技术最大的好处是能够帮我们集中精力,消除干扰。每个番茄时段只有25分钟,除非是十分紧急的情况,一般情况下都是可以在完成当前时段后再去响应。通常我们会遇到两种干扰:
每当有干扰的时候,都要在每日任务列表上做一下标记,如果需要,同时在每日任务列表(如果是紧急任务)和任务列表上填加一个未计划任务。把干扰放入任务列表使得我们有机会重新思考一下每一个任务是否那么重要,是否真的需要,很可能过了一段时间我们任务列表上的很多任务变得不必要了。另外,所有的干扰都被显式地标记在每日代办任务列表和历史记录表上。每天都可以反思每天的干扰次数以及内容。干扰数据能够是我们更有意识地关注时间效率的问题,促使我们通过重新计划,调整策略等等方式把干扰降到最低。比如对于电话太多的情况的一个有效的策略是,每天应该固定一段时间把电话放到留言,到会议室去办公,然后告诉其他同事,在紧急情况在哪里能够找到自己。而对于邮件太多的情况,可以多安排几个番茄时段集中处理邮件。
番茄技术的另一个好处是给我们提供了一种全新的估计和计划的手段。在任务列表上的每个任务都需要有一个规模估计值,这个值其实是标明完成该任务需要花的番茄时段的数目。由于每个时段都是不受干扰的“纯”投入的时间,因此可以通过番茄时段数目有效地把任务的规模与时间建立联系。通过把实际花费的番茄时段数目与估计值相比较,分析,可以帮助提高自身的估计能力。同时,通过分析历史记录中非计划任务的数目以及内容,也可以帮助我们对自身的时间利用情况有更好的了解,从而更有助于计划个人的时间。
番茄技术能够改变我们对时间的态度。时间变成了一个个番茄时段。每一段25分钟,滴答滴答从25分钟减到0。从而给我们一种紧迫感(Eustress),督促我们尽快完成任务,尽快做决定,从而有效的提高效率。效率的提高能够有效地提升自信心和成就感。
关于番茄技术的详细介绍可以参见它的网站(引用1)以及The Pragmatic Bookshelf的新书《Pomodoro Technique Illustrated》。
作者简介:滕振宇(Daniel Teng),Irdeto BSS高级软件经理,CSP,敏捷教练。创建并领导Irdeto BSS上海研发团队,负责大型付费媒体计费以及客户管理系统软件产品的开发。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。
如何真的可以把每个任务都细化到25分钟就好了,准确的估算太难了。
very good,一定要实践一下。
阅读个文章都得写到日程上去。。。做人这样累不累呀
其实我自己的经验来说,我并不需要把每个任务细化到25分钟,我只是估计每个任务需要几个番茄时段能够做完。这一点跟Agile不太一样,粒度可能大一些,我觉得更有点儿类似User Story里面的Theme(主题故事),需要几个迭代才能完成的功能
如果是只做业务模块开发,熟悉的功能容易估算准确,在对陌生技术技术进行调研,试探性钻探的时候,具体时间尤其不好掌握。
我的理解是:跟在Agile中一样,估算“准确”是没必要也不可能的。
其实不一定非要25分钟,45分钟也可以,实际上我觉得45分钟更加可行;
关键是有一段连续不受干扰的工作时间;
不太好弄。
虽然我不一定能100%按照日程表来做事,但能让事情比较清晰有条不紊的进行到是个不错的主意。
每次去取最重要的任务,然后不受干扰的做25分钟(或者45分钟),这其实并不难
XP里面的钻探试验Spike是有一个前提的就是一定要加上TimeBox,因此即使是钻探试验也是可预测的。Pomodoro Technique一样也是要有Timebox,有了Timebox就有了紧迫感,从而更容易的获得结果如果是只做业务模块开发,熟悉的功能容易估算准确,在对陌生技术技术进行调研,试探性钻探的时候,具体时间尤其不好掌握。
通常认为时间的预估难以准确,实际上一开始不需要准确,但是即使不准,也要预估,不论是熟悉的功能还是进行新技术难点的研究,都要进行,这个时间长了,就会有一种直觉,时间也会越来越准确。。。关键在于,你要坚持下去。
此外,定时器的存在,前提是一定要有计划,定时的作用是你按阶段性的,非打扰性的休息,搞编程的人可能都有这样的经历,出去抽个烟,或者蹲个WC,往往会再一些难点上有一些idea出现,这个通常就是这个定时器的作用,到点一定要休息,短暂的非干扰性的休息,是非常有益的。
总之,这个方法是有一定科学性的,麻烦的地方就在于开始实践的时候,比较难以树立信心和充满质疑。只要能顺利坚持过1-2个月,这其中的奥妙自然会有所体会。。
另外,这个番茄的方法,是对编程提出的,事实上,有个比较一般的方法,和这个番茄性质一样,同仁们可以google之,关键字就是 (10+2)*5
持怀疑的,不烦看完Pomodoro tech,然后尝试几天,或许你就会改变态度。鄙人实践了2周,觉得的确提高了自己的集中精力做完一件事情的能力。
不过全天任务的确定还是应该的
太细节的话不一定安排好就能顺利执行
被迫中断计划 感觉相当糟糕……
不过全天任务的确定还是应该的
太细节的话不一定安排好就能顺利执行
被迫中断计划 感觉相当糟糕……
我现在的体会是,不一定要把一天的任务全部都列出来,只要排好优先级,然后每次完成一个任务,到Activity Inventory里面取最高优先级的任务。这样更加有效,适应性更强,而且也不需要花很多功夫计划
决定去买个番茄,挺好
对,太细节,太计划性了。感觉有点过度计划了。
严格要求自己同样会有所回报。
不过我不喜欢“番茄”,所以我连尝试的想法都没有。
不过我不排斥其他人尝试哈。
本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011。
Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。
云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。
淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011。
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
18 条回复
关注此讨论 回复