Five minutes的经历

Filed Under (SAAS) by mantian on 07-12-2009

毫不夸张地说,上海五分钟有限公司的“开心农场”游戏几乎让“偷菜”不构成一种犯罪行为,因为它已经风靡到 可以改换一个词义的地步。在Facebook、人人网、腾讯,用户经常会调了闹钟做了笔记偷,为偷菜寝食难安,每天以菜地情况来作为见面的问候语 很久没有这样一款让玩家疯狂的简单游戏了。

这个游戏是“五分钟”员工2008年坐在会议室里头脑风暴的产物。短短半年之后,活跃在“开心农场”的用户 就和上海市的人口数量相当—1800万左右。不过,在经历过热炒之后,这家公司的创始人已经在降温。“我不喜欢说起我们就说开心农场”。五分钟COO徐城 说道。他剃着平头戴着黑框眼镜,作为联合创始人之一,和两个伙伴带领着一群平均年龄只有25岁的年轻人一起开发各类应用于 SNS网站的插件游戏。

开心农场之前,他们已经经历了三款游戏的失败,而做社交游戏也是经历了一段曲折才摸索出来的。当郜韶飞、程 延辉和徐城还在读大学的时候,他们就有过创业的想法,曾经一起做过九城的校园代理。徐城在大三的时候移民美国,回国后另外两人已经毕业上了半年班,但之后 他们辞去了工作,三人正式成立了一家公司,找到了大学生创业基金,对方投资了15万元。最初他们尝试做一款线上游戏,花了一年的时间却并不成功,也导致失 去了创业基金的继续支持,公司一下子陷入了资金紧缺的尴尬境地。为了生存,他们三人一合计就换了一条路,开始做游戏外包。徐城回到美国,一个人去谈生意。 在一年半的时间里,他在美国的生活就是寻找外包项目,国内的另外两人则指挥着员工在徐家汇的一个小办公室里埋头苦干。这段时间粗看上去他们过得还不错,因 为那间小办公室里从最初的七八个人发展到了30个。但让三个创始人不满意的是他们和员工每天都在拼命工作但收入却还是那么微薄,给员工发完工资之后所剩无 几。雪上加霜的是金融危机爆发,游戏外包的单子变得越来越难接。

游戏外包是在为别人做嫁衣,不过也并非没有好处,困境中的徐城想到,既然客户能把我们的产品放在 Facebook上,为什么我们不把自己的产品放到这些开放的SNS平台上呢?此时SNS网站在国内已经渐渐走红,这个提议立刻得到大家的赞同。之后,他 们的公司更名为“五分钟”,寓意是专做人们每天花五分钟来玩的游戏。一开始进展并不顺利,他们尝试了棋牌、竞速和拼图这类很常规却始终有人玩的游戏,但这 三个插件都关注者寥寥。期间他们面对很大的财政压力,公司一直处于没有收入的状态,三人只得先向家里借钱来支撑公司。

前途迷茫,收入惨淡,沮丧的气氛在公司中弥漫,不断有员工离职,最少时只剩下8位。“创业最重要的是一条 心,尽管有人离开了,我们几个也经常争执,但大的方向始终没变。”徐城说。尽管三款游戏都没红,三人也难免有一点灰心,但几次失败中,他们慢慢摸索出了每 次失败的关键点,比如作为社交游戏但互动不足,或是题材不新,而且他们坚信也许就是第五款,或者第十款,后面总有一款能够成功。

成功比他们预想的来得早。2008年10月,团队在会议室里热烈地进行第四款游戏的讨论,餐厅、宠物 黑板上画满了十种讨论过的设想,却都不是非常满意。一位员工无意中说了一句农场,大家接着这个题材讨论,发现种菜偷菜听起来似乎很新鲜也很有意思,很快一 个大体的游戏机制就被讨论出来。有了大致思路以后,几个年轻人加班加点半个月就把游戏做出来了,当命名为“开心农场”的插件11月在当时的山寨开心网 (kaixin.com)首次上线的时候,团队一致认为它会红,但谁都没有想到它能如此红。因为在一个星期后,它就挤进在校内网的插件应用前十名,之后腾 讯和51.com上也开始出现了开心农场,12月,该游戏已经有10万人在玩了。

但是对于很久没有收入的五分钟来说,这也只意味着一个大大的鼓励,不能解决实际问题。他们开始讨论如何能让这款游戏赚钱,一个可行的商业模式成了最头疼的问题。最初考虑的是植入广告,但这需要再去招募一个销售团队,而且似乎并不是一个长久之计。

此时恰逢圣诞节来临,在寒冷的小会议室里,有人提出“不如就搞个圣诞礼包道具卖卖看吧!”卖道具虽然是网游 经常的做法,但他们不知道在休闲娱乐为主的SNS 平台上是否能有人买。平安夜道具上线的时候他们预计着这个圣诞礼包能够卖出3000块就不错了,但圣诞节过去的时候,他们发现要比预期多出了5000块。 于是去年的12月25日成了他们最有纪念意义的一天,徐城说:“那代表着我们的商业模式打通了。”之后,一项项收费道具在游戏中出现。

2008年元旦前后,开心农场人数突破了100万人,靠卖农场道具已经能够给他们带来稳定的现金流。插件植入国外最热门的SNS网站Facebook的时候也引起了全球不小的种地潮流。现在仅Facebook每月就能够贡献给五分钟百万人民币的收益。

人数和收入还在呈现上涨趋势,但五分钟也面对很多让他们焦虑的问题。山寨产品越来越多了,这些都将分食他们 的收益,为此他们开发出更多道具来预防开心农场转冷。但是,无论多么红火的游戏玩家也总有玩厌倦的一天,五分钟现在每周都会像从前一样开会讨论新的点子, 希望能够找到继农场之后的风靡产品来创造更多收益,几款最新的游戏也正在开发中。

天涯改版试水B2C 推行植入式广告模式

Filed Under (SAAS) by mantian on 01-12-2009

最近,从天涯社区的公测改版页面”天涯聚焦”中,发现一些专业网络B2C开始与天涯合作,“自去年年底以来,天涯相继与1号店、珂兰、玛莎.玛索多家企业达成合作,联合运营b2c业务。”天涯社区相关负责人解释。

天涯总裁邢明认为,目前天涯的品牌专区更注重与电子商务的结合,属于一种植入广告模式,不是一种硬性广告,能为网友提供服务同时让网友产生订购行为。他同时透露道,天涯正与谷歌秘密研发一套新型的精准营销广告系统,广告能精准到个人和某些群体,“谁需要给谁投放,还可以互动,可以口碑传播,效果更加显著。”

此外,邢明表示,天涯未来要建一个在线生活和商务的平台,满足人们综合的各种需求。社区对传统C2C的平台会构成挑战,在未来会对淘宝等模式构成颠覆。 “天涯长远肯定会切入电子商务,B2C更倾向于和第三方合作,而C2C方面将会自己来做,很自然的把社区的C2C的关系梳理出来,为网民提供商务和为企业 主提供广告平台。”邢明如此展望天涯未来的商务蓝图。

以下是天涯聚焦推出的“品牌专区”:

1237119961_55

目前天涯的“品牌专区”和其07年推出的“Adtopic话题服务”放置在同一位置的两个版块,且“品牌专区”还在其它页面有Banner等形式支持,应 该为目前主推广告类型。 但对于这种将社区流量导入电子商务的模式,究竟是付广告费的形式还是销售分成的模式,不得而知。

不过天涯对社会化电子商务的探索,值得关注和研究。而且谷歌对其投资后一直未有大动作,本次邢明透露的“新广告平台”,结合谷歌改版推出的精准广告来看,非常值得期待。

附:B2C与天涯合作的具体形式

1237252414_33

天涯社区首页的各种B2C的广告

1237252471_61

上海的B2C一号店,整个页面为Iframe

1237252567_90

类Vancl的衬衫B2C

1237252616_16

钻石B2C珂兰钻石网

1237252778_12

珂兰钻石这块下面与天涯的社区讨论版块结合,注意右边天涯把这种合作称为“天涯商城”

123456789

Filed Under (SAAS) by mantian on 10-11-2009

最近因为很忙,很久没有写博客了,忙碌的生活改变了很多,今天看到这么一串数字,觉得这就是生活,用心,才能发现!


今天2009年8月7日12点34分56秒,按照老外的时间显示方式,会被显示为12:34:56 07-08-09,也就是123456789,时光与数字唯一的一次巧遇,唯你我有经历过。

洞察生活中的点点滴滴,看到的多了自然想到了,想到的多了自然也看到了…
没什么巧合,都是自然的。

如何培养员工的主动性

Filed Under (Manage) by mantian on 18-09-2009

培养员工的主动性和敬业精神可以从几大方面入手:

1、 最基本的是创造一个积极的,宽松的,自组织的工作环境和氛围。在这个环境中,倡导学习型团队文化。

2、 积极建设阶梯型、多样化的人才团队。一个团队如果能形成良好的人才梯队,不仅仅有利于团队形成强大的竞争力,而且一定程度上能激发不同成员的主动性和积极性。

3、 完善的角色和明确的工作职责。一个团队,如果缺乏某个特定的角色,不仅仅在这个特定领域中会成为团队的短板,而且往往需要团队Leader去弥补或救火,这样会成为团队发展的瓶颈,这个是限制员工发挥主动性的重要因素。

4、 合理的授权。团队领导应该成为教练,并从中帮助团队各个角色更好的协作,更好的发挥每个人的优势。授权是一门管理艺术,信任每个员工,并给他们充分的权力,有助于提升员工的主动性和敬业精神。

5、 激励。当团队的目标达成时,当某个员工表现突出时,适当的激励将会使团队焕发激情,同时也是对每个员工的一种肯定和鼓励。善于使用激励的领导,将会让他的员工充满积极主动性。

web表单按钮的使用

Filed Under (Tech) by mantian on 09-09-2009

Article copyright by Gabriel Svennerberg
Gabriel Svennerberg版权所有

原作者:Gabriel Svennerberg;译者:UCD翻译小组mysmth2003原文网址:http://www.svennerberg.com/2008/09/the-use-of-buttons-in-web-forms/

动作按钮存在于每个web表单的底端。它们太平常了,以至于我们甚至不能仔细思考实际怎么去设计它们。从一堆伟大的易用性思想和我自己的经验中可收集到的信息中,我想提出一套做法来让这种设计更高效些。

Action buttons exists at the bottom of almost every web form. They’re so common that we often doesn’t even reflect on how to actually design them. By gathering information from a few of the great minds in the field of web usability and also from my own experiences, I’ve tried to come up with a set of best practices on how to design them efficiently.

Position 位置

根据Jakob Nielsen(雅各布·尼尔森)的观点,按钮的规则并没有那么麻烦。每个位置都有它的优点和缺点。而重要的一点是一致,如有可能遵照GUI标准平台的规范。

在网络世界以外,也有GUI标准,问题是他们在不同的平台上是不同的。在Windows平台上,GUI规范表明“确认”应该在左侧,而“退出”在右侧。而在苹果平台下,恰恰相反。

According to Jakob Nielsen, the order of the buttons doesn’t matter that much. Both positions has it’s pros and cons. The important thing is to be consistent and if possible follow platform GUI standards [1].

Outside the web world there are GUI standard. The problem is that they are different on different platforms. On the Windows platform the GUI guidelines state that OK should be positioned to the left and Cancel to the right. On the Apple platform it’s the other way around.


在web中,并没有固定的标准要求怎么去做,所以我们必须聪明地找出什么位置是最合适的。
On the Web there really is no standard on how to do this, so we have to try to find out which position is the smartest on our own.

Luke Wroblewski(卢克·罗博乌斯奇)在《网络应用表单设计》一文中专注于这个话题的探索。他建议把首要动作“确定”放置在表单的左侧,次要动作“退出”放置在表单右侧。

他进一步在《网络表单设计》一书中,阐述了从易用性对比测试中的发现:测试表明主要动作在左侧而次级动作在右侧具有更快的绩效。

Luke Wroblewski elaborates on this topic in his article Web Application Form Design [2]. His recommendation is to position the Primary action (OK) aligned to the left part of the form and the Secondary action (Cancel) to the right.

He elaborates even further on this topic in the book Web Form Design [3], where he presents the finding from a usability test performed on a form with different designs. What the test showed is that having the Primary action left-aligned and the Secondary action to the right of it makes for the fastest performance

Robert Hoekman, jr.(罗布特·霍克曼)也思考了不少关于这方面的内容,并且在《设计片段》(Designing the Moment)提出他的想法。

他同意Luke Wrobleski的关于首要动作在表单左侧的观点,这样做的原因在于可以形成一条很好的线,视线可以跟随,推下表格,从而轻松扫描。另一个原因在于如果用户用tab键(键盘左上方的制表符)操控表单,首要动作可以先于次要动作在表格命令下进行。

Robert Hoekman, jr. has also thought a lot about this and presents his thoughts in the book Designing the Moment [4].

He agrees with Luke Wroblewski that the Primary action should be left-aligned with the form. The reason for this is that this forms a nice line for the eye to follow, working it’s way down the form, thereby making it easy to scan. Another reason is that if the user is navigating the form with the tab-key, the Primary action comes before the Secondary action in the tab order.

Labeling the actions 标记动作

Robert Hoekman, jr. 也有一些关于按钮标记的想法,比恰当标记“确定”和“退出”按钮更好的办法是直接标记实际的动作。如果执行一个“存储一个笔记”(save a note)动作,为什么不让“存储笔记(save a note)”按钮替代“确定”按钮呢?Jakob Nielsen也建议按钮上的文字要说明这个按钮究竟要干嘛,不要只用类似于”确定”这种空泛的文字。 这么做用户会更有自信地使用,因为他知道当他按动按钮的时候将会发生什么。

Robert Hoekman, jr. also have some thoughts about the labeling of buttons. Instead of just labeling the buttons OK and Cancel it’s better to label them after what they actually do [4]. If it’s to save a note, then why not label the OK-button “Save note” instead. Jakob Nielsen also recommends using a label that explains what it does instead of just a generic label [1]. By doing this the user is more confident using the form since he knows what to expect when he pushes that button.


Visual distinction 视觉的差别

另一件事是Robert Hoekman,jr.讨论视觉上区分动作,使得用户能够很轻松地做出正确的选择。

Luke Wroblewski也推断出,做首要的动作要比次要的动作更突出。在易用性测试的调查中,他发现如果首要比次要动作有一点不同的设计的时候,用户会花多一些时间去完成表单。而另一方面,用户会更有信心,较少做出错误的选择。他建议使用不同颜色制作按钮或者让次要动作变成一个普通的链接。

一个简单的方法从视觉上区分两点:我经常去做,则使用粗体(bold font weight),放在首要动作上,而一个正常的字体放在次要动作上。

One other thing Robert Hoekman, jr. discusses is to visually distinguish the actions making it easier for the user to pick the right one.

Luke Wroblewski also concludes that making the Primary action stand out more than the Secondary action is a good thing. In the findings of the usability test, he finds that it takes the user a little more time to complete the form if the Primary and Secondary action has a different design. But on the other hand it makes the user more confident and less prone to choose the wrong one. He suggest making the buttons in different colors or making the Secondary action a plain link.

A simple way to visually distinguish the two that I sometimes do, is to use a bold font weight on the Primary action and a normal font weight on the Secondary.

Robert Hoekman, jr.推荐“对次要动作使用一个普通的链接”,他的理由是说这可以更清楚的判断谁是首要的。但是它也适用于费茨法则,即距离和目标尺寸设多大可被触及并且点击——目标越大会越快些(被触及、点击)。首要动作因此应该比次要动作大一些。

Robert Hoekman, jr. recommends using a plain link for the Secondary action [4]. He’s arguments for this is that it makes it clear which one is the most prominent. But it also applies to Fitt’s Law, which suggest that the distance and the size of a target determines how long it takes to reach it and click it. The bigger the target the faster. The Primary action should therefor be bigger than the Secondary action.


The Reset button 复原按钮

复原按钮被用来复原一个完整的表单。这种早期相当常见的应用,到如今却很少被看到。不过我想我也说一些关于这个按钮的话,当它经常被当作成对的按钮出现在表单中的时候。

在多数情况下,这个按钮最好是完全不用。所有经常错误点击复原按钮的用户因此会删掉他们输入的一切内容。(我在Confusing Northface contact form中写过),并且认真地说,你需要多频繁重设一个整个的表单,并且如果你这么做,会产生怎样的问题?

The Reset button is used to reset an entire form. It was pretty common in the early days of the web but is rarely seen nowadays. Nevertheless I thought I would say a few words about this button too since when it appears in a form, it’s usually paired with the Primary action.

In most situations it’s best not to use this button at all. All to often users click the Reset button by mistake thereby deleting everything they’ve entered. (I did it as I wrote in Confusing Northface contact form) And seriously, how often do you want to reset an entire form, and if you do, how hard is it?
这个按钮所具有的风险简单要同可能的收益做一个大的对比,加之在很多情况下,会对表单增加更大的混乱。

正如Jakob Nielsen放到他的警示框专栏《复原和退出按钮》中的话:

网络将会变成更开心的地方,如果所有的复原按钮被虚拟的移走之后。这种按钮几乎不能帮助用户,反而会伤害他们。

The risk with this button is simply to big compared to the possible benefit of it. Plus in most cases it just adds more clutter to the form.

Or as Jakob Nielsen put it in his alertbox column Reset and Cancel Buttons [5]:

The Web would be a happier place if virtually all Reset buttons were removed. This button almost never helps users, but often hurts them. 

可能唯一的时间是当复原按钮被请求的时候,是当一个表单被同一个用户重复使用的时候,并且每次输入的信息是不同的。

关于复原按钮Luke Wroblewski有一个想法,他认为如果你提供一个也应该提供一个撤回(undo)选项。用户点击复原按钮重新恢复表单,可以起到撤回的作用。此举意味着你不得不暂时的存储表单数据,但为用户的方便提供了很小的价值。

Possibly the only time when a Reset button is called for, is when a form is used repeatedly by the same user and the information entered differs from each use.

Luke Wroblewski has an idea about the Reset button [3]. He thinks that if you provide one you should also provide an undo for it. By changing the Reset button into an Undo after being clicked the user can restore the form. This means that you have to temporarily store the form data, but that’s a small price to pay for the convenience of the user. 

Best practices 最佳方法

基于以上所有的观点,加上我使用并设计web表单的经验,我提出一些好办法。

Taking all of the opinions above in consideration, plus my own experience in using and designing web forms, I’ve come up with these best practices.

  • Position the Primary action to the left 首要动作放在左边

    把按钮放在表单的左边,可以使得眼睛跟随一条清晰的路线。通过首要动作放在次要动作的左边,也便于tab次序。Having the buttons aligned with the left side of the form makes a clear path for the eye to follow. By putting the Primary action to the left of the Secondary action it’s also positioned first in the tab order.

  • Label the actions in a natural language 标签动作用自然的语言

    通过描述实际动作发生,用户更舒适的感受他期待使用的内容。By describing what the action actually does, the user feels more comfortable using it since he know what to expect.

  • Make the Primary action stand out 使首要动作凸显

    这样可以让用户更轻松选择他们想要的选项,而不会从一堆选项中艰难的发现。This makes it easier for the user to choose the option that’s most likely without making it harder to find the other option.

  • (Almost) Never use a iReset button (几乎)不要使用复原按钮

    复原按钮经常会伤害用户,而不会太多帮助他们。唯一的可能是他们在表单中需要它们,是同一个用户反复再三做不同输入的时候,即一旦你使用了“复原”,也就意味着为用户提供了一个撤回功能。Reset buttons often hurts user more than it helps them. The only time it’s called for is in a form that the same user uses over and over again with different input. If you use a Reset, also try to provide an undo function.

Do you agree with my conclusions or do you have a different opinion about this? Please share!
你同意我的结论或者对此有不同观点,请分享吧!

原文网址:http://www.svennerberg.com/2008/09/the-use-of-buttons-in-web-forms/

关于作者
Gabriel Svennerberg是一位网络开发人员和互动设计师,35岁,自从1996年就从事web的工作。起先自我雇佣,后来在Växjö、Varberg 和Stockholm等不同的代理商工作,如今为Saab Security构建网络应用以及强化用户体验工作。
http://www.svennerberg.com/about/

与林昊的交流

Filed Under (Kills, Tech, 架构) by mantian on 07-09-2009

林昊,网名BlueDavy,China OSGi User Group Director,淘宝网平台架构部架构师,个人的研究方向主要为 Java模块化、动态化系统的构建以及高性能的大型分布式Java系统的构建。曾编写《OSGi实战》和《OSGi进阶》两篇Opendoc,为OSGi 在中国的推广起到了很大的作用。

王速瑜:数据集群问题:当数据增长到一定的数量级,必须要进行分布部署、备份、容灾、切割扩容等工作。请问什么程度的数量级需要分布部署,如何合理分布部署,需要考虑哪些情况?

林昊:一般来说,也没有固定的数量级,通常是根据硬件资源的状况以及所能接受的性能状况(例如一次查询必须在 3ms内完成)来决定。当达到性能瓶颈时,通常需要进行数据的拆分或备份等策略,在这个过程中最需要考虑的,就是对应用的影响程度,因此通常会需要一个强 大、透明的数据层,以屏蔽数据的拆分或备份、迁移操作给应用带来的影响,另外一方面就是应尽量能做到不停机完成。当然,这很难,因为需要面对多套数据结构 并存、数据冗余和同步等问题。

王速瑜:数据备份问题:对于大容量的数据备份,技术上如何做到不影响正常的服务?如何合理制定冷备、热备的实施策略、方式、时间段?在数据损坏、主服务器硬件损坏等故障情况下,如何最短时间内监控到故障并调度请求到备份服务器等容灾措施?

林昊:对于大容量的数据备份,技术上来说:多数情况下比较好的是选择异步消息通知实现数据备份,或基于高端数据 库的特性(例如Oracle的Standby)。对于冷备、热备的实施,原则要求均为不影响正常业务功能,因此可选的时段只能是系统访问量较低的时段。方 式则需要根据数据量以及备份的速度来决定,多数均为采取相对高频率的进行热备,低频率的进行冷备;在数据损坏、主服务器硬件损坏等故障时,要做到尽快切 换,就必须依赖强大的及时监控系统,在主服务器不可用时能够做到迅速报警。最理想状况就是能够有一种机制,自动切换备库为主库,并通知所有应用转换为连接 和使用新的主库,如果做不到自动的话,这个过程就仍然得基于“人肉”来进行操作了。

王速瑜:开放平台设计问题:开放平台API设计中,调用协议设计时有哪些考虑要求?对于请求类的调用协议设计, 倾向于call?A=a&B=b这种方式(这种方式对调用者比较方便,但对二进制的传输有一定限制,比如上传图片等),还是基于纯文本的方式,比 如WSDL、XML等?对用户鉴权的Token机制是怎样的?有没有对接入方进行QoS的考虑,是怎么做的?

林昊:对于开放平台而言,基本上目前Facebook引领了开放平台的技术,因此在协议上多数都采用Http, 接口的设计上则都倾向于REST风格;对于用户鉴权的Token机制上通常都是采用一个公私钥的匹配方式,并且此Token一定是由开放平台公司所提供; 开放平台中是肯定会对接入方的QoS有限制的,并且这通常也影响到了开放平台的收费标准,在实现时多数采用基于缓存进行实时费用计算,这点更强的应该是电 信行业。

王速瑜:跨IDC部署程序模块在业务发展到一定阶段后在所难免,跨IDC的专线资源相对有限。架构师该如何合理规划和使用同城、跨城的专线进行传输数据,以及专线意外中断的容灾措施?

林昊:跨IDC部署确实会存在很高的技术难度,部署结果的验证是最为关键的地方,其次是部署所耗费的带宽成本和 时间成本,对于部署结果验证而言,通常可采用的方法为业务脚本的测试;对于部署所耗费的带宽成本而言,通常需要借助多播技术,对于时间成本而言,通常需要 借助自动化的部署系统。

王速瑜:Web2.0网站的海量小文件的存储,如用户头像、相册微缩图等文件,这些文件的特点是尺寸小(100KB以内),数量巨大(数以百万计),这些文件的存储、读取、备份都是问题,请问您是如何提供具体解决方案的?

林昊:目前互联网公司,例如Google、优酷等,对于小文件或大文件的存储都有自己的一套解决方案,而并不会 去依赖高端的存储设备来解决。一方面是成本问题,另外一方面是伸缩问题,因此对于这些文件的存储、读取和备份多数都采用了类似GFS的方案或直接采用 Hadoop提供的HDFS方案。

王速瑜:互联网产品部署是一个很关键的环节,很多互联网公司依然采取手工部署发布产品版本的方式,但是这种方式 比较复杂而且低效,往往很容易出错,如果同时发布几个产品时,如果产品之间关联比较紧密,其中一个发布出错就会影响到其他的发布,请问作为架构师,您在日 常工作中是如何解决这样的问题?您的团队中是否考虑自动化动态部署,具体方案是怎么样的?

林昊:在部署这个问题上,目前好像只有国外的几家互联网公司做的不错,其中最典型的是eBay。eBay在很多 年前就已经做了一套自动化部署系统,在这套系统中,eBay可以将一次发布中的几个产品进行依赖关系的分析,从而决定其发布顺序,并可实现自动的发布、校 验和回滚,这套系统相信也是现在中国几家互联网公司都在追求的目标。

王速瑜:作为互联网技术架构师,您能简单总结一下海里互联网服务技术架构方面的理念、原则,方法吗?

林昊:我觉得eBay的五点总结基本已经够全面:

(1)“ 拆分”,数据库的拆分以及应用的拆分,当然这需要强大的技术的支撑,这点要做到的目标通常是便于应用的无限水平伸缩;

(2)能异步就异步,这需要业务的允许;

(3)能自动就自动,就像自动化的部署系统;

(4)记住所有失败的事情,这点非常重要;

(5)容忍不一致性,这句话的含义是尽量少用强事务,而是采用最终一致性这类方案。

当然,除了上面这五点之外,还有像多用缓存、自行实现关键技术(以控制稳定性、性能和做到及时响应)等。

王速瑜:有很多优秀的软件架构师能力很强,但是由于缺乏海量服务技术应用和实践的机会,不能很好地进行海量服务应用的架构设计,您能给他们一些宝贵建议,分享一下您是如何不断学习成长起来的?您有哪些提高技术视野的方法和途径,比如有哪些书籍可以推荐,哪些优秀的网站可以推荐?

林昊:这个问题提到点子上了,很多架构师不知道如何应对大型、高并发的场景,最主要的原因是没有这样的实践的机 会,毕竟目前只有在大型企业系统或互联网才能获得这类难得的实践机会,通常在没有实践机会的情况下是很难完全理解这些技术的。多数情况下,互联网中的技术 方案都是在多次血泪宕机下成长起来的,建议只能是多看各种互联网技术介绍的文章,例如Google共享了很多,还有网上也有很多各家互联网公司技术架构文 章的介绍,尤其是那类技术发展历程的介绍,可以设想下如果自己碰到这样的问题,会如何去解决,也许这样能慢慢掌握和理解大型、高并发系统的解决方案。书籍 方面目前国内各种高性能方面的书也开始不断冒出了,例如有《MySQL性能调优与架构设计》、《构建高性能的Web站点》、《构建Oracle高可用环 境》等,这些高性能的书通常都来源于作者亲身的经验,是非常值得学习的;另外要知道:如果想做到高性能,通常意味着要对软件(包括OS等)以及硬件技术都 有充分的掌握,因此像《深入理解JDK》、《深入理解Linux内核》、《深入理解计算机系统》这些书也是非常值得一看的。至于网站方面,像http://highscalability.com/http://www.javaperformancetuning.com/这些都是非常不错的网站。

(本文来自《程序员》杂志0909期,更多精彩内容敬请关注0909期杂志。)

李彦宏撰文:命运掌握在自己手中

Filed Under (人生感悟, 收藏夹) by mantian on 07-09-2009

命运是一个人一生所走完的路,是一个人用一辈子所完成的作业。有的人认为,命运是天注定的,是不可改变的。但在我看来,命运不过是人生的方向盘,驶往哪个方向它掌握在每个人自己的手中。

在这里,我想和各位同学分享几个关于命运的故事,没有什么高谈阔论,仅仅是我自己的一些经历而已。

眼界与命运

和很多同学一样,我出生在一个小城市的普通工人家庭。小时候起,除了学习我的兴趣就非常广泛。戏曲就曾经一度是我的挚爱,甚至在初中时我还一度 有报考戏曲学校的想法。因为在那个年代,在我生活的山西阳泉那个小城市,电视还没有普及,更别说电脑互联网了,人们日常最多的娱乐活动就是听戏。

后来,我的姐姐考上了北京大学。和刚刚入学的你们一样,她一时间也成了我们当地的明星。临走时她对我说:“其实外面的世界很美丽,所以你一定要好好学习,考上大学,走出阳泉,这样你未来的路才会更宽阔。”

我听从了姐姐的建议,从那时起我开始发奋学习,为的就是考上阳泉当地最好的高中——阳泉一中。最终,我如愿以偿。然而,这时的我对于姐姐所说的“外面的世界”还没有特别的概念。

我第一次接触计算机,是在高中一年级,当时我所在的阳泉一中在全市第一个设立了计算机教室。

只要轻轻的在键盘上键入一些英文单词和符号,它就会根据指令给出答案,我一下子就被这奇妙的东西所吸引住了。从那时起,为了能到机房上机,我经常找老师软磨硬泡。比别人更多上机实践,也让我在计算机方面的技能比其他同学强。

不久以后,学校选派我到省会太原参加全国中学生计算机比赛。去之前我信心满满,总觉得自己的计算机水平还算不错,甚至还想着拿个名次回来。结果没想到,比赛结果出来,我连个三等奖也没得到。

这样的结果对我而言在某种程度上是一个打击。一开始我想不通,但是当我走进太原的书店时,我才知道为什么没有办法和他们竞争。我发现,这里有许多我在阳泉根本看不到的计算机方面的书,别人在信息的获取能力上比我有先天优势。

这次经历让我第一次感到了眼界与命运的关系,我对姐姐当时对我说的那番话有了更深层次的理解,我渴望到外面的世界看一看,我相信这样能改变命运。

在之后的近20年中,无论是在北大的求学经历,还是在美国学习计算机以及在华尔街和硅谷的工作经历,都大大开阔了我的视野,甚至对我后来创立百度公司也产生了巨大的影响。

所以,当你们迈入北京大学大门的那一刻起,你的命运已经改变了。不仅因为这里是中国的最高学府,还因为在这里你会接触到许多你原来从没有见过甚至听说过的新鲜事物。

性格与命运

虽然有人常说:“性格决定命运。”但实际上对于这样的说法,我个人并不认同。我觉得无论你的性格怎样,你都有可能成功。

几年前,高盛公司前总裁在清华大学开了一门关于领导力的课程,专门邀请一些大型跨国公司的全球CEO去讲课。有一次,我也被邀请去讲百度的成功 故事。当我给学生们讲完课之后,他跟我聊天说:“Robin,看你的性格和一般人眼中的成功人士或者说企业家很不一样,因为你的性格很柔和,没有那么强 硬。可是你做的也很成功啊,而且我相信你将来会更加成功。”

作为高盛的总裁,他几乎见过当今世界上所有成功的企业家。而从他对我的评价来看,各种各样性格的人都有可能成功,只不过是看你有没有利用自己的性格优势来做事情。

比如说,有的人就是善于与人沟通,那就应该朝自己擅长的方向努力。他们非常愿意和客户沟通,也许未来就可以成为一名很好的销售人员,这样也会取得成功。

而有些人的性格则是那种比较内敛的,就像一个技术工程师,我的性格里可能这方面就更多一些,在思维上比较严谨,逻辑性比较强一些。我不太愿意天天出去跟人喝酒,而更多的是愿意坐在计算机前面去感受那些新的互联网的产品,去琢磨琢磨怎么样可以把它做得更好。

所以,我认为各种各样的性格都能够成功,关键是你要分析自己的实际情况来做一个判断,究竟自己的性格适合什么。上帝关上一扇门,一定会打开另一 扇窗,每个人都应该去寻找适合自己的东西,做自己喜欢做的事情,做自己擅长做的事情,因为只有这样,你才能够坚持下去,你才能够在遇到困难的时候,不退 缩、不轻易的去改变你的方向。我相信,做到这点,成功就会离你不远了,你的命运也会因此与众不同。

梦想与命运

有一句名言叫“梦想是人生路上的一盏明灯”。一个人想要成功,想要改变命运,有梦想是重要的。

在美国读研究生时,有一次,我报名参加了学校的一个研究小组。当时,负责面试的教授可能对我的回答他的答案不满意,便随口问我:“你是中国来 的?”“你们中国有计算机吗?”。尽管可能不是有心刺伤我,但教授的问题让我的心里特别难受,我觉得怎么能这样问我,中国这么大的一个国家,而且那时已经 是20世纪90年代了,怎么可能没计算机?这近似是对我祖国的一种羞辱。但也就是这么一句话,激发了我内心那股不服输的精神和一定要实现“中国梦”的信 念。从那时起,我就梦想有一天一定会用自己手中的技术改变国人的生活。

这也是我为什么放弃了在美国稳定的工作和安逸的生活回国创立百度公司的原因。

百度创立之初,一切都非常困难。我们在北大资源宾馆租了两个房间作为办公室,加上我,公司总共只有8个人。但尽管如此,大家都有一个共同的梦想,那就是做中国人自己的搜索引擎。

经过大家的共同努力,到了2001年底,与刚创业时相比,百度已经有了一定的发展。但此时我也认识到,百度如果想要在市场上有所突破,就必须超越当时已经在中国市场上占有6成份额的google。

2002年初,我组织了公司技术人员一起开了一个会。会上我告诉大家,我们必须在各项技术指标上全面超越竞争对手。当时,有的人认为这不可能, 觉得百度的技术实力和国际最先进的搜索公司差距太大了。但我对他们说,百度虽然此时还十分弱小,在国际乃至国内都还不太知名,影响力有限,但是,百度凝聚 了一批充满非凡理想和远大抱负的优秀人才,大家就是要在这里做出一番事业,让中国人在中文搜索引擎领域扬眉吐气。

于是,一个名为“闪电计划”的15人技术攻关小组成立了。在那段时间里,我们的工程师为了一个共同的梦想与目标,把所有的精力都投入到了工作中。饿了就泡一包方便面,困了就干脆席地而睡,醒来以后继续工作。

其实,他们中的许多人当时完全有机会能够到IBM、微软等跨国公司工作并取得一份可观的收入,但他们却选择留在百度,拿着微薄的工资,没日没夜的工作。他们说是我的“做中国人自己的搜索引擎”的梦想感动了他们,而我也被他们所感动。

功夫不负有心人。一年下来,百度在索引量、相关性、中文处理的相关检索、拼音的检索、纠错技术等方面大大提高,众多指标领先业界,加上“闪电计 划”后期启动的百度mp3搜索,对这个产品,用户体验评价非常高,迅速扩大了百度的知名度和品牌美誉度。百度作为全球最大中文搜索引擎的地位正是由此开始 奠定的。

因此,我觉得每个人都应该心中有梦,有胸怀祖国的大志向,找到自己的梦想,认准了就去做,不跟风不动摇。同时,我们不仅仅要自己有梦想,你还应该用自己的梦想去感染和影响别人,因为成功者一定是用自己的梦想去点燃别人的梦想,是时刻播种梦想的人。

亲爱的同学们,困难并不可怕,只要你能乐观的面对;命运也可以改变,而钥匙就正握在你的手中。

Getting Real

Filed Under (Agile) by mantian on 21-08-2009

昨天在公司敏捷核心圈做了一次分享,题目是Getting Real,是我很欣赏的一家公司总结的,Getting Real谈到的方法和公司实际情况比较符合,非常适合web团队借鉴。

1250824613_82_capture

1250824754_60_capture

Getting Real :The smarter, faster, easier way to build a successful web application是一种更小规模,更快速,更高质量的web类软件构建方法。

进一步阅读:Slideshare上的分享

与冯大辉的交流,架构师接龙有点意思

Filed Under (架构) by mantian on 30-07-2009

Tagged Under :

冯大辉,技术名人,http://www.dbanotes.net/ 博主。

冯大辉:假设一家 C2C 网站,DB中某表存储买卖双方交易的数据信息,对于一条交易来说,买卖双方数据具有一定程度的耦合性,比如卖家的状态更新对应买家的状态也会更新,对于一 个中大规模的电子商务网站,架构师在设计中如何考虑数据分片的问题(假定该表随着数据的膨胀必须拆分)?

王速瑜:对于一个中大规模的电子商务网站,随着网站的不断发展,其相应的数据规模会不断膨胀。数据分片技术是使网站得于实现可扩展性的一种常用解决方案。对于C2C类型的网站,由于交易记录不容易进行水平的数据分割,因此对于这样的应用处理要在进行细分:

  1. 买卖双方交易的信息,具备较高的时效性,即交易全部完成后就不会再有更新,因此这部分数据可以与正在交易中的数据区分开来,并可以单独分表,定时 归纳。具体的做法可以采用水平分割的数据分片技术,比如可以根据用户号码段范围进行切片,把不同的群体划分到不同的 DB 上,这样可以很好的进行横向水平扩展(Scale Out)。它可以很好的突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。
  2. 对于正在交易中的数据,主要根据时间进行分表。如果分的更细,则可以分三个表,但是这样在事务保证方面则要复杂很多,不建议这样做

冯大辉:技术团队在开发过程中是否进行集成测试? 进行与否的理由各是什么? 对于集成测试你是否有其他补充?

王速瑜:有进行集成测试,因为集成测试对于产品版本的发布是一环重要的保证。但是由于互联网产品研发的敏捷性,很难建立一套大而全的集成测试平台,而更多还是在功能级和模块级别上的集成测试。

互联网产品的测试跟传统的软件测试不太一样,互联网产品的特性是短平快,因此敏捷开发的理念在互联网产品研发中非常适合,腾讯很多团队都采用敏捷开 发的实践,包括TDD,重构和持续集成。因此集成测试更多是体现在产品的每个小迭代和小发布中。互联网产品技术架构都是分层的,因此对于后台server 的集成测试也很重要,这个在迭代过程的测试中容易被忽略。这一块往往需要开发额外的工具来辅助进行,比如对于协议接口的测试,通常会有一些小工具来辅助进 行。

冯大辉:对于一个架构师来说,如何与冗杂的会议进行斗争? 你有哪些心得或者贵公司有哪些针对会议的策略呢?

王速瑜:对于 架构师,参加会议是必然的,架构师往往都需要深入到具体的项目中去,在项目的开展过程,大概会有几类会议是由架构师发起或重点参与的,包括迭代0的架构设 计讨论会、定期的架构和代码Review会等等,项目之外,架构师通常还会参加诸如行业级和公司级别的一些盛会和峰会。对于会议,更多还是抱着有益,高效 的态度去参加。在实际工作当中,我觉得有以下几点是可以参考的:

  1. 涉及架构发展和改进的会议一定要进行, 而且要在产品研发过程中阶段性进行。有利于保证架构工作的可持续发展;
  2. 由架构师主导的会议,要把握高效会议的原则,包括会议前的充分准备工作、会议进程的把握、会后的关键事项跟进等等;
  3. 架构师要积极参加产品的讨论会,了解产品发展的规划和细节,有很多架构工作是需要技术与业务相平衡的,参加这样的会议有利于架构师更好理解业务和它的发展,从而为架构的平衡做出更好的判断;
  4. 架构师要扩展视野和保持不断学习的态度,因此行业技术盛会、公司技术峰会、产品月会等等类型的会议架构师要主动选择性去参加,可以保证架构师能了解技术趋势,提升自己的能力。
  5. 不必要的会议尽量不参加,可以采取其他沟通手段,如邮件,IM工具来替代,提升沟通的效率。

冯大辉:架构师是否有必要关注用户体验? 如何从架构师的层面关注用户体验?

王速瑜:非常有必要。保证用户体验是所有软件最重要的目标,特别是互联网产品,如果该目标无法实现,再好的架构也没有存在的意义。因此如何在满足用户体验的前提下进行架构设计是架构师的必要素质。

产品的用户体验包括几个方面:产品的功能便利性、产品可用性、性能、安全性等等。例如:枪战类的游戏,需要优先保证其实时性。而在C2C订单交易中则优先保证其金钱的安全性。因此如何从架构层面就去关注用户体验非常重要。对于架构师来说,通常有以下几点是需要注意的:

  1. 用户体验表现在外表,但来源与内在。比如互联网服务的性能设计,能否让用户在1秒内使用你的产品,将是保证用户继续使用产品的关键所在。架构上如何做得在海量用户的前提下很高的性能,就应该是架构师首要关注的点;
  2. 用户体验与架构设计有时候会对立矛盾,架构师需要平衡。比如为了某个用户体验,可能需要架构上做出重点的调整,可能会带来巨大的运营成本。这个时候就需要架构师来Trade-Off了,柔性可用依然是可以采取的架构原则;
  3. 一切以用户体验和价值为核心是每个架构师在架构互联网服务的基本准则。互联网服务不同于传统软件,UGC型的互联网产品更是如此,没有用户参与,再好的架构都是无益的,因此架构设计需要围绕用户体验和价值来持续进行。

本次“架构师接龙”全文,请见2009年08期《程序员》杂志。

微软:Dryad

Filed Under (Tech) by mantian on 23-07-2009

Tagged Under :

Dryad是微软分布式并行计算基础平台,使程序员可以利用数据中心的服务器集群对数据进行并行处理。Dryad程序员在操作数千台机器时,无需关心并行处理的细节。据Dryad论文描述:Dryad被设计为伸缩于各种规模的计算平台:从单台多核计算机、到由几台计算机组成的小型集群,直至拥有数千台计算机的数据中心。Dryad执行引擎负 责处理大型分布式、并行应用程序中会出现的各种难题:对计算机和它们的CPU进行调度,从通信或计算机的失败中恢复,以及数据在节点之间的传递等等。

其在微软体系结构中的地位:

延伸阅读:Dryad, Dryad论文

——EOF——-

FireStats icon Powered by FireStats
MC Inside