小插曲:由于迫切想一睹为快,所以在出版社还没正式发售前在京东提前下了订单,之后店主还电话过来告知到货时间无法确定,是否需要退订。书到手的当天下午,我还向一位同事推荐了这本书(2年之前也向他推荐了《凤凰项目》),没想到当晚书就到了,在看到包裹时心情还是小惊喜的,据本书译者说我应该是最早一批拿到书的,算抢了个板凳。
这本书的第一感受:感觉比它的姊妹篇《凤凰项目》更精彩,虽然作者声明与《凤凰项目》并不是续集关系①(《独角兽项目》以时间为章节标题的叙事结构、商业背景和诸多人物从《凤凰项目》沿用),但我的实际感受是,因为读过《凤凰项目》,加上本书借用了科幻电影“星际迷航”中红衫*的故事作为比拟,所以读起来明显让书中人物和故事情节显得很熟悉而更加生动精彩。
读过《凤凰项目》的话知道这是一本关于IT运维的传奇故事,描述了一位中型机技术总监比尔-帕尔默临危升任运维副总裁,带领运维团队与开发团队协作,在神秘人物埃瑞克的指导下,学习借鉴制造工厂流水线精益理念,挽救一个濒临崩溃的“凤凰”项目,与业务市场安全等团队合作,为公司创造销售业务奇迹的故事。
配图:《凤凰项目》和《独角兽项目》
《凤凰项目》中提到的“三步工作法”已经成为DevOps的基本原则。并衍生出DevOps的行为和模式(如下图),《凤凰项目》出版对促进DevOps的传播和发展起到了重要作用,最著名的沙盘演练项目凤凰项目原型就出自该书,是DevOpsMaster认证培训用演练沙盘。
一起回顾下《凤凰项目》中的核心概念。
一、三步工作法
第一工作法:流动原则,指形成从需求到发布(从开发到运维到发布)的连续工作流,将这种流动称为价值流,为了达到快速高质量流动的效果,需要通过减小批量规模及间隔,同时质量控制由原来的一个阶段向左右两侧扩展。
DevOpsHandbook对该条的阐述要点:使工作可见、限制在制品数量、减小批量大小、减少交接次数、持续识别并改善约束点、消除价值流中的瓶颈和浪费
第二工作法:反馈原则,指在上述价值流自左向右流动的过程中,形成自右向左的快速持续的反馈,以做到尽早尽快的发现并解决问题。
DevOpsHandbook对该条的阐述要点:在复杂系统中安全的工作、及时发现问题、群策群力战胜问题获得新知、在源头上保证质量、上游为下游工作而优化。
第三工作法:持续学习和实验原则,指形成鼓励尝试与创新、高信任度、安全的公司文化,从成功和失败中同时学习,从而达到持续不断的改进工作过程。
DevOpsHandbook对该条的阐述要点:建立学习型组织和安全文化、将日常工作的改进制度化、把局部发现转化为全局优化、在日常工作中注入弹性模式、领导层强化学习文化。
注意:虽然叫三步工作法,并不是要按先后顺序来落地,而是相辅相成,同时采用。
配图:DevOps三步工作法
二、四种IT工作类型:
一、业务项目:指各种业务功能需求,通常直接来自于业务团队或客户。
二、IT内部项目:指支撑各类业务项目的基础架构以及改进项目,比如服务器、数据库、网络的建设和优化工作,通常来自于IT团队内部,业务团队和客户不敏感。
三、变更:指由于功能需求研发、架构功能等基础设施的变更引发的事项,实际工作中,此类事项往往是通过单独的流程来管理。
四、计划外或救火工作:指各类事故处置及应急事务,这类事项通常也是由前三种类型引发,是最应该消除或避免的事项。
上述4类工作在现实组织中通过很多途径流到IT团队,我们需要尽可能的全部可视化,然后通过价值排序、约束理论、控制在制品等方法来管理。
《独角兽项目》则是关于软件开发的传奇故事,描述了一位对专业充满热爱的资深开发主管、架构师玛克辛-钱伯斯在成为公司一次工资系统崩溃事故的“背锅侠”后被调到称为“死亡行*”的凤凰项目做文档工作,在这里,她充分的体验到了开发团队在日常工作中的种种痛苦,加入了由一群担忧公司存亡、反抗传统工作方式的技术人员组成的“地下”组织“红衫*”。通过跨职能团队成员的协作,经历了说服管理层实施“功能特性冻结”来偿还“技术债务”、建设持续构建测试部署流水线、数据总线解耦重构、迁移云基础设施等等挑战,最终提升了研发效能,并启动称为“独角兽项目”的定制化推荐促销的项目帮助业务在促销季中取得了骄人业绩,自己也被授予公司“杰出工程师”称号的故事。故事里同样有一位“扫地僧”一样的人物酒吧酒保埃瑞克,他是一个数字化转型的专家,给团队分享5大理念、3大视野、工程师文化等知识。《独角兽项目》写作时间虽然要比《凤凰项目》晚6年左右,但作者认为两本书写的都是“当下”的故事。
有意思的是,《凤凰项目》后面的故事中,就是启动了称为“独角兽”的敏捷项目来挽救笨重充满问题的“凤凰项目”,猜想是不是作者那时已经有续写传奇的打算。
然后我们再来看看《独角兽项目》中的重要理念及观点:
一、5大理念
1、局部性和简单性
做好系统和组织的设计,使代码、组织、流程等任何事情都变得简单,在架构设计中利用康威法则,成立“两个披萨”规模的跨职能团队以完成端到端任务,降低系统依赖以及团队依赖、减少等待时间。局部性和简单性实质其实是全局思维,和软件设计的高内聚、低耦合理念一致。2、专注、流动和快乐
快速且持续的交付工作并得到持续反馈,保持专注和流动,从而不断学习挑战领域困难,并因为持续快速的交付价值而让自己快乐,有一个词叫“心流”,就是指当人们能专注的工作并体会其中乐趣时会达到一种忘我的状态,而要做的这一点,团队和成员就必须被允许自组织自管理,同时可以按需自助的获取所需要的基础设施、数据资源等。3、改进日常工作
重视对日常工作的改进,而不仅仅是完成工作本身。