December 2011 Archives

2011年个人总结

| 15 Comments

本年度的最后一天,个人惯例,度过元旦的方式是做一下过去一年的个人总结。翻看了一下去年的总结和计划,完成度还过得去,这一年虽有遗憾,但没有虚度。

2011 年中在工作上多少做出了一点成绩,回顾了一下,上半年经历了从业以来几乎是最为严峻的考验,有段时间头发都急白了不少;下半年则相对顺利,团队效率提升很多,项目和产品上到了收获期,我甚至还能有时间顺路做做公关宣传。这是最有效率的一年。如果用一句话总结,那就是:丁香园全站过去一年中从传统的 1.0 模式升级到了 2.0 版本,打通了任督二脉,甚至还有一点延伸 --比如丁香园用药助手。作为第一款试水性的移动应用,一定程度上获得了用户的认可并且在业界有一点反响,这是整个团队乃至我个人都是始料未及的,很欣慰。总体来说,从大公司到小公司落了地,并且还能做点实际的事儿(某些人看这事儿:真是奇迹),也对自己有了一点信心,「如人饮水,冷暖自知」。

技术团队规模与去年相比,增加了60%。因为自己不喜欢大公司做事方式,己所不欲,勿施于人,所以对团队完全采取采取扁平结构、氛围尽量保持宽松,收效还不错。其实,一个团队负责人如果能充分调动大家的能动性,你会发现身边都是天才。《道德经》中有一句话:功成事遂,百姓皆谓:我自然。这是个值得努力的境界。

经济上,因为机会合适兑现了一些原公司的股票,算是过去几年的加班费吧,能让家里生活质量暂时提高一点点。投资方面,收获不错。投资老同事的项目成功出售,作为小小天使的另一个项目已经拿到风投并进入良性循环期;贝塔咖啡开了两家分店,「无形资产」起码增长了不少 ;) 允许我自我满足一下。尝试炒了一点美股,战绩还行,这个更大的收获还是了解到了一些公司的业务模式,其实也是在学习。顺便说一下,雪球是个有价值的网站。

这一年中,如果要问在那几个地方获取到有价值的信息最多?第一个是曹政大侠的神秘群组,让我了解到一个不一样的互联网生态圈;第二个地方是在知乎,内容质量非常好 ;第三个地方是新浪微博,获取到了很多有价值的产品反馈;然后是 Twitter,这一年发言少了很多。当然,要了解医学和健康知识,那还必须是丁香园,中立、客观是丁香园的准则。

拖延了好久的驾照考试终于通过(refer:学车记),虽然这事儿说出去挺丢人的,但对我自己来说,起码证明我的执行力终于改进了一点儿,自我满足一下。考过驾照之后出门也不怎么晕车了,伴随我这么多年的老毛病总算有所缓解。今年还有一件值得一提的事情是回到母校参加了毕业十周年的同学聚会,是啊,大学毕业10年了,从业也有10年了,就连我自己的个人站点都存在八年多了,时间真是个可怕的东西,不知道下一个十年会是怎样。我想,我应该抽空再修改一下上半年写的那篇《十年莽撞IT路》,算是一份人生的记忆。

这一年,自己完全变成了一个创业者。心态、思维模式改进了不少,人要改变自己很难,还好我不是不可救药。要批评自己的是在微博上不知不觉的暴露了个性上不那么讨好人的一面,有必要收敛一点。读书方面,阅读量还行,和去年相比不相上下(荐书清单)。参加的会议与往年相比,少了不少,只参加了QCon和移动开发大会等几个会议,全程免费的 Oracle Open World 也没时间去了,不过并不遗憾。Blog 数量少了很多(写邮件倒是多了),一是我不再想重复以前的那些东西,二是质量的确所下降,水分增加了,对读者朋友们说声抱歉! 对了,喝咖啡多了,但是失眠少了;几经折腾之后,开始尝试新的生物制剂药物,关节痛基本控制住了,体重居然也增加了 :)

身边的朋友多多少少对这狗日社会的渐渐有了幻灭感,只要我们相信有些事情会变好的,那不妨就积极的一点点做起来。从你我开始。

家庭生活上,有一点失落,但总有些事情是改变不了的,随遇而安吧。

我的 2011 榜单:

年度致敬:陈光诚 这个社会缺少有勇气的人;
年度媒体:知乎 在这里学到了很多知识,活到老,学到老嘛;
年度图书:吴军大作《浪潮之巅》。候选图书:《黑客与画家》...
年度视频:罗永浩 保利剧院演讲(一个理想主义者的创业故事II);
年度电影钢的琴 ,有些生活总是让人感动;
年度音乐:左小祖咒《苦鬼2011》

2012 年的 TO-DO List:

Lean Startup. 过去的一年,其实团队做事一定程度上已经暗合 Lean 理念,2012 还要深入实践。如果还用老思路、老方式做事,不想办法做改进的话,成长自然不会好到哪里,所以,需要新思维。PS. 精益创业模式的理念和原则如下:1.创业第一天就设定收入目标 2. 持续的客户互动 3. 如果没有收入,就一定限制规模(别乱花VC的钱) 4.产品开发周期粒度减小:以小时/天计而不是月或者年为单位 5. 产品开发 - 最少的功能,最大的客户覆盖率 6. 客户驱动的产品开发.

产品研发. 如果2012不是世界末日的话,事情还要继续做下去。计划中还至少有两款有意思的产品要推动,要做出来;

运营意识. 毫不客气的说,过去一年中做的产品有几个并不那么成功,这并不都是产品本身的问题,运营能力不足的确存在,技术部门当然也要有运营意识。多和业界同仁学习,实践,还要勤奋一点。

寻觅人才. 丁香园技术团队仍然需要各方面的人才,尤其是移动应用开发的人才,我们有足够的耐心,也有足够的信心。如果你想在浮躁的环境中想静下心来做点对中国人有价值的事情,为什么不联系我一下呢?

好好生活. 新的一年要多出去走走。旅游,2011年两次国外旅游都挺有收获,怀念长滩的芒果沙冰。新的一年争取好好利用一下假期。另外,如果不是生活必需品,尽量少购买。简化一点生活,没什么不好。

最后,祝愿朋友们在新的一年更好的实现个人价值,让自己和家人生活得更好一些。

致谢:曹政、Hawk、召唤、大风、周拓、肖头、云风、Benjurry、Robbin、校长、Bluedavy、Hugo、国平、夏天天...... (不分先后,肯定还有遗漏的朋友,见谅! ),感谢各位朋友们一年来在技术上给我的帮助,让我学到很多很多,感谢!

--EOF--

这里有我的一份针对互联网的 2012 预测,仅供娱乐。

Instagram 架构分析笔记

| 12 Comments

Updated: 2012 年4月10日凌晨消息,Instagram 被 Facebook 以10亿美金收购。团队规模:13 人。

Instagram 团队上个月才迎来第 7 名员工,是的,7个人的团队。作为 iPhone 上最火爆的图片类工具,instagram 用户数量已经超过 1400 万,图片数量超过 1.5 亿张。不得不说,这真他妈是个业界奇迹。

几天前,只有三个人的 Instagram 工程师团队发布了一篇文章:What Powers Instagram: Hundreds of Instances, Dozens of Technologies,披露了 Instagram 架构的一些信息,足够勾起大多数人的好奇心。读罢做点笔记,各种线索还是有一定参考价值的。能打开原文的建议直接读原文。

Instragram.png

Instagram 开发团队奉行的三个核心原则:

  • Keep it very simple (极简主义)
  • Don't re-invent the wheel (不重复发明轮子)
  • Go with proven and solid technologies when you can(能用就用靠谱的技术)

OS/主机

操作系统的选择,在Amazon EC2上跑 Ubuntu Linux 11.04 (Natty Narwhal) ,这个版本经过验证在 EC2 上够稳定。因为只有三名工程师,只有三名工程师,所以自己部署机器到 IDC 是不靠谱的事情。幸好有亚马逊。

负载均衡

此前曾用过两台 Nginx 做 DNS 轮询承载前端请求,这样做会有副作用,现在已经迁移到Amazon的ELB(Elastic Load Balancer),起了三个 Nginx 实例,在 ELB 层停掉了 SSL , 以缓解 CPU 压力。DNS 服务使用 Amazon Route53 服务。

应用服务器

启用了 25 个 Django 实例,运行在 High-CPU Extra-Large 类型的服务器实例上,之所以用 High-CPU Extra-Large 实例是因为应用请求是 CPU 密集型而非 IO 密集型。

使用 Gunicorn 作为 WSGI 服务器。过去曾用过 Apache 下的 mod_wsgi 模块,不过发现 Gunicorn 更容易配置并且节省 CPU 资源。使用 Fabric 加速部署。

数据存储

用户信息、图片元数据、标签等大部分数据存储在 PostgreSQL 中。主要的 Shard 数据库集群有 12个节点。

实践中发现 Amazon 的网络磁盘系统单位时间内寻道能力不行,所以有必要将数据尽量放到内存中。创建了软 RAID 以提升 IO 能力,使用的 Mdadm 工具进行 RAID 管理。

管理内存中的数据,vmtouch 这个小工具值得推荐。

PostgreSQL 设置为 Master-Replica 方式,流复制模式。利用 EBS 的快照进行数据库备份。使用 XFS 文件系统,以便和快照服务充分配合。 使用 repmgr 这个小工具做 PostgreSQL 复制管理器器。

连接池管理,用了 PgbouncerChristophe Pettus 的文章包含了不少 PostgreSQL 数据库的信息。

TB 级别的海量图片存储在 Amazon S3 上,CDN 采用的也是 Amazon 的服务,CloudFront。

Instagram 也是 Redis 的重度用户,Feed 以及 Session 信息都用 Redis 处理,Redis 也是以 Master-Replica 方式部署。在 Replica 节点上进行数据备份。

使用了 Apache Solr 承担 Geo-search API 的工作,Solr 简单的 JSON 接口也不错。

缓存使用了 6 个 Memcached 实例,库使用 pylibmc 和 libmemcached。亚马逊也提供缓存服务-Elastic Cache service ,Instagram 也有尝试,不过不便宜。

任务队列/发布通知

队列服务使用 Gearman ,通知系统则使用 pyapns 来实现。

监控

前面提及的服务器实例数量加起来,的确有100多个,有效的监控是相当有必要的。使用 Munin 作为主要监控工具 , 也写了不少定制插件,外部监控用 Pingdom 的服务。通知服务使用 PagerDuty

对于 Python 的错误报告,使用 Disqus 团队开源的 Sentry 来处理。

几个感想

0)轻装上阵说起来容易,做起来非常难。这也是 Instagram 团队目前最令人着迷的地方;

1)Python 社区已经足够成熟,各个环节上都已经有不错的解决方案了。

2)如果要问我最大的一个感慨,我要说:Amazon 真是一家伟大的公司,甚至比 Google 还伟大

--EOF--

关于这篇归档

This page is an archive of entries from December 2011 listed from newest to oldest.

November 2011 is the previous archive.

January 2012 is the next archive.

Find recent content on the main index or look in the archives to find all content.