如何做一个快速运转的大规模网络开发公司

转载 2015年07月07日 15:20:08

http://2014.54chen.com/blog/2014/12/11/how-to-big-network/


受《精益创业》 http://www.duokan.com/book/35802 这本书影响甚多,然而在思考和实施的过程中,却又遇到各种各样的问题。

不仅仅是一些令人苦恼的“人的问题”,还有一些,是无从下手、或者不知道未来是怎样的疑惑。

以下,列出一些“看得见的未来”,因为是一些系统已经在线上服务过亿的用户,如果你在思考相同的问题,也许会有一些用处。

一.流程与制度

1.代码质量

  • 没有经过适量单元测试的代码,不能发起code review。
  • codereview:每行code都经过超过两双眼睛阅读。
  • 没有经过code review的代码不能进入代码库。
  • 没有经过完整bvt测试的代码,不能merge到线上分支。
  • 没有完成上述流程的代码,不应该被用户访问到。

2.故障报告

  • 实际上最有效的制度是postmortem制度,但往往在国内被称为“故障报告”。
  • 如果在你的公司里,《故障报告》与工资是挂钩的,恭喜你,制度用错了。
  • 故障报告的本意,是让发生的故障告诉所有的人,让所有的工程师都学到,这次故障的起因是什么、如何避免。
  • 故障报告绝对不是用来惩罚和警告你犯错了。
  • 不情愿的故障报告,宣告了这个制度在你司实施的失败。
  • 经常性的重复的故障报告,一定是制度没有彻底实施或者招聘人员眼神错了(眼神错的几率小之又小)。

总结

  • 做一个让所有工程师(包括开发测试运维)勇于出来告诉大家我哪里错了的制度。
  • 不断去总结和完善故障中的处理办法。

二.工程

  • 从工程上,不断去提炼与归并,抽象出高度集成化的系统和服务。

1.storage

  • 越早的引入key-value的稳定高效存储,可以事半功倍,但一定要稳定高效(高性能、高可用性)。
  • 类似key-value的业务写法,应该深入人心。
  • 可以选择的开源的有一些类dynamo系统,使用会较复杂,也许直接使用mysql的table更加有效。

2.paas

  • 越早的引入paas平台,也可以事半功倍,但一定要是靠谱的平台。(市面上大量的开源平台,需要有一支团队研究它)
  • paas平台的目的,是统一了dev与op的接口层。
  • paas还可以为你的硬件和网络资源做出更准确的预估。

3.监控与报警

  • 越早的建立此平台,越能提升团队对线上问题的警觉性。
  • 标准的监控与报警平台,有助于更加方便地了解整个环境的情况。
  • 报警一定要命中要害,减少误报,更牛的要做到预报。

4.dbproxy layer

  • 此层需要有高手存在,会各种开发的dba。
  • 目标是做好隔离、做好分区、做好自动化扩容。
  • 这层建立好了,以后服务可用性大大提升。

5.异步事件服务

  • 此服务在人手多时可考虑。
  • 写多线程程序不是容易的事情,把可异步处理的业务,在逻辑中交给一个专门的服务处理。
  • 在这之前,需要统一rpc相关框架。

6.配置中心

  • 典型的开源产品zookeeper。
  • 服务的发现与故障自动摘除。
  • 最好对zookeeper进行一层权限包装,避免实习生干坏事。

7.服务框架

  • 典型的开源产品thrift。
  • 内网的rpc框架,是让你服务与服务之间保持良好架构的必须品。
  • 框架一定要快,一定要有各种可测量的指标。但是thrift是没有的,需要自己加。

8.web框架

  • 典型的开源产品rose spring play。
  • 用于统一大家的代码结构,能够换岗维护。

9.代码规范

  • 不用讲了,就是为了美观。

10.文档规范

  • 不用讲了,就是为了可维护。
  • 闲时多写,忙时少写。
  • 但不能不写。

相关文章推荐

如何做一个软件项目经理? ----写给公司所有的开发人员

如何做一个软件项目经理?----写给公司所有的开发人员

如何做一个网络对战游戏之(一 前言)

前不久自己花了几个月自己思考并且做了个半成品的所谓 “网络对战游戏”, 但是最近因为事情比较忙而且也因为一个人做游戏的开发进程实在太慢。所以慢慢的就被我边缘化了,也不知道什么时候才会重新拾起来。 但是...

如何做一个简单的后门

  • 2010-07-11 19:04
  • 2.04MB
  • 下载

如何做一个让开发人员看得起的测试人员(转),写的很好。。。

做测试做了8年,前两年做的是与硬件产品相关的测试,质量管理比软件行业要严格的多的多,原因是,大部分的应用软件代码出错,改下代码重新编译,打补丁,就ok了,而一旦硬件设计出错,或者零件用错,造成的成本损...

【收藏】如何做一个让开发人员看得起的软件测试人员

做测试做了8年,前两年做的是与硬件产品相关的测试,质量管理比软件行业要严格的多的多,原因是,大部分的应用软件代码出错,改下代码重新编译,打补丁,就ok了,而一旦硬件设计出错,或者零件用错,造成的成本损...
  • Jsphp
  • Jsphp
  • 2012-08-02 11:26
  • 673

软件开发公司管理手册 (下)

8. 组织人力   组织人力包括部门的设立与调整,以及中层管理人员及普通员工的组织管理。   组织人力是公司计划实施的真正开始。   人事部门是管理工具,组织机构或部门的设立与调整是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)