开篇
我们在2015年中的时候就在做Docker1.0(琥珀),当时主要针对离线场景到2016年初琥珀已经小有规模同时也解决了很多生产环境的问题得到大家认可。在2016年3月份中心内部开始讨论要做在线Docker版本,而这只是需求并不是目标,所以我们当时针对中间层(spp)业务进行了调研,设定了目标做业务的弹性伸缩,主要是通过Docker来解决资源的快速扭转,大家用机器时可以更方便拿到,另一方面是减少人为参与上下线,将有限的人力放到更重要的位置让大家能快速成长与学习。
围绕这一小目标, 从2016.3.31发出一封Docker邮件到目前已经有一年多了,内部经历了多次的PK,从技术选型、是否使用开源、人力的配备、项目的优先级等,外部也遭到很多的质疑,为什么搞了这么久没有上量,Docker搞了那么多版本有什么意义、Docker的长期目标是什么,是否可以保持现有体验等等。总感觉项目走在十字路口,选每条路都是对的,但每一条路都未必捷径,总是被挑战中,这里我承认有一点根本原因是,理想很丰满,现实很骨感,我们在谈理想时嘴上总挂着我们要把我们的运营系统往前在走一小步,多么美丽的理想,而落地到现实时,我们需要更多的时间、需要人力、需要每个人情怀、需要顶住外界压力、寻找更多合作团队一起努力才能达到目标。而这并非易事,本邮件主要总结我们在运作项目中遇到的问题、我们的思路、大家对项目的疑问等。
如何开发一个项目
因为我个人并不是专业的项目经理,所以项目开发的过程也是我学习的过程也在思考如何能把整个项目能做的更好能尽快达到短期小目标。前期我参考了软件工程的方法论需求分析、概要设计、详细设计、测试、维护和用户手册等,但感觉并不十分实用于互联网的项目管理,譬如详细设计基本拿到文档就可以开发写程序,而目前我们还做不到这样的详细设计。后期我参考了《打造Facebook》一书其中的一章个人感觉还是比较试用的,但再原有的基础上我也补充了一下本项目开发过程中的案例。
| 打造Facebook | Docker项目 |
|---|---|
| 描绘远景,设置目标; | 描绘远景,设置目标; |
| 收集想法并排出优先级; | 收集想法并排出优先级 |
| 跨团队沟通 | 跨团队沟通 |
| 告诉所有可能关心的人 | 设计产品 |
| 设计产品 | 指定责任人 |
| 指定责任人 | 定期碰头 |
| 定期碰头 | 了解进度,汇总报告 |
| 了解进度,汇总报告 | 发布产品监控数据 |
| 发布产品监控数据 |
描绘远景,设立目标
开篇中提到要寻找更多的合作伙伴才能达到目标,所以项目建立之初一定要描绘远景、建立短期、中期和长期目标,这样在不同的时间需要伙伴与切入点才一幕了然。以下使我们项目的一个基本项目流程图
Docker项目流程图

Web功能展示(图2)

