第1章 成功网站的开发运维原则

本书讲解的是网站的开发与运维,所以你要会的不仅仅是如何创建网站,还需要了解公司内部各个团队应该如何协作,这些团队应该遵循哪些最佳实践方法。软件工程师与系统管理员的相互协作将碰撞出一个新词汇——“开发者的运维”(DevOps, developer operations),因为这两个团队都将突破各自的工作界线,共同构成一个新的逻辑单元。我认为这是一个最佳立足点,假设这两个团队(及其他相关团队)都不能联合或建立协作关系,那么可能连一般网站项目都很难走得很远,更不用说大型复杂网站了。

Web开发人员与运维工程师之间的良好信息沟通,是奠定网站团队基础的重要因素。大多数现代网站都有一些高级功能,包括各种层次的复杂软件,而这些软件可能涉及Web领域的多种技术——网站由多个技术层次构成。这种复杂性必定要求各个团队进行协作与交流。然而,工程师们通常过分依赖于线上交流方式,或者只喜欢坐在自己的工位上日复一日地闷头做着相同的事情。

一定要鼓励运维人员与开发人员主动合作。为此,最好给他们提出一些实践原则。下面列出了一些指导方法,可以促进软件开发团队与运维团队之间的协作。

  • 亲身协作。离开自己的座位,与其他运维工程师或开发人员进行面对面的交流。有一些事情无法通过电子邮件或电话进行沟通,但是面对面交流可以解决问题。想象一下,打电话能够代替朋友聚会吗?所以,在需要以团队方式完成的下一个项目、问题或解决方案中,去和其他人面对面地沟通吧!
  • 换位思考。如果我们真正理解和掌握软件开发人员或运维工程师使用的工具和日常流程,那么准备会更充分,而且也更可能找到适合双方合作的基础。例如,一位运维工程师没有时间熟悉源代码管理系统,而开发人员又坚持使用Git替代Subversion,那么他最好了解一下开发人员为什么要这样做。而且,在时间允许的情况下,最好要尽量学会使用这些系统,因为只有这样做,运维人员才能更好地运用自己的技能去支持这些系统,也有利于构建用于支持软件开发的工具与流程。
  • 互相协助。帮助对方解决问题。开发人员为运维人员开发工具,那么运维人员也会反过来为开发人员开发工具。《时间管理——给系统管理员》(O'Reilly Media, 2005)的作者Tom Limoncelli说:”我们现在都成为了程序员。”即使如此,我们大家也是各有所长。没有人能够精通所有技术(可能有人这样妄想过),所以要开发一个新工具,帮助运维工程师或软件开发人员实现流程的自动化。它不一定属于生产系统的一部分,甚至可能只是一个简单的本地桌面工具。这种“工具交换”既可以提升生产力,也可以加强各个团队之间的团结与合作。

这些重要原则既适用于拥有大型开发团队和运维团队的公司,也适合小型创业公司。它们是本章内容的基础,也是整本书的指导原则。这一章也将展现许多访谈记录,重点介绍各种软件开发人员和运维工程师的不同角色,以此来说明这两个团队之间的协作关系。

目录