第 1 章:云之道

云之道是一种哲学与方法论,强调简单、自动化、测试优先和服务生态系统,是云原生开发的核心理念。通过本章的学习,你将理解云之道的优势及为何选择 Go 作为云端微服务开发语言。

引言

正如序言中提到的,本书旨在教大家如何构建云原生(cloud native)应用程序。Cloud native 这一术语常常被误解为仅关注应用本身,而忽略了背后的人和设计哲学,并且过度依赖“12 要素法则”来定义应用。

虽然以应用为中心的设计原则有其价值,但 cloud native 的文化源自于构建和设计应用程序的人。如果开发者接受了正确的设计哲学,就能更优雅地构建应用。艺术家的作品体现激情,Web 应用和微服务亦应如此。

构建云应用不仅是学习新库或语言,更是掌握新学科、养成新习惯,并以不同视角看待世界。汉字“道”在哲学中代表方式或途径,尤指做事的方法。我们将信仰的 cloud native 开发和架构哲学称为“云之道”。

本章将介绍云之道的核心优势,并阐述为何选择 Go 语言开发云端微服务。

云之道的优点

在软件开发过程中,无论是商业、创业还是兴趣,遵循一套既定准则,能最大程度地创建可扩展、可靠、可预期的云上软件。

本书所有代码示例和讨论主题都体现以下优点,这些规范不仅适用于云软件,也贯穿于本书的写作和代码实现。

遵循简单

云之道

所做的任何事都要简单化。

复杂性是开发的最大障碍。质疑每个工具和代码,确保它们简化流程而非增加复杂性。以下是检验简单性的标准:

  • IDE 是否可选?
  • 能否通过命令行构建和部署?
  • 团队新成员能否快速理解代码?

工具和 IDE 应自动化例行任务,减少阻碍。任何可通过命令行完成的工作都应可自动化。坚持简单性原则,避免强制依赖特定工具或 IDE。

测试优先,测试一切

云之道

采用测试驱动进行开发。测试一切,处处测试。

测试是确保程序按预期运行的最佳方式。测试不仅带来信心,还能消除发布和运行时的恐惧。信心源自于对最小可测试单元的验证,随着代码库扩展,信心不断积累。

图 1.1   在微服务生态圈中测试信心的区域
图 1.1 在微服务生态圈中测试信心的区域

只有信任所有构成代码库的类和服务,才能对整个服务生态系统树立信心。测试驱动开发是建立这种信心的基础,必须测试每个服务的所有内容。

尽早发布,频繁发布

云之道

将每次代码提交都当作潜在的生产发布,并通过持续交付管道进行部署。

发布恐惧源于缺乏信心。克服发布恐惧的唯一方式是更频繁地发布。每次提交都应视为潜在的生产发布,培养团队的纪律性和责任感。频繁发布促使开发者更重视测试,提升代码质量。

自动化一切

云之道

所有可以自动化的,都应被自动化。

任何每天重复多次的操作都应自动化。自动化发布流程,减少人为错误,提高生产力。自动化不仅提升效率,更能增强对系统的信心。

建立服务生态系统

云之道

任何事物都是服务,包括应用。

微服务概念虽被广泛使用,但本质是遵循单一责任原则(SRP),即每个服务只负责一个功能。云原生开发鼓励构建可共存的服务生态系统,避免单体应用的复杂性和耦合,提升可维护性和扩展性。

为什么使用 Go

理解云之道后,为什么选择 Go 作为云端微服务开发语言?主要有以下三点:

简单

Go 以简洁著称,避免不必要的复杂性和流程。直接生成本地二进制文件,提升性能。虽然不支持类和纯函数式编程,但其简单性让开发者重新爱上编程。

开源

Go 是开源语言,拥有强大的社区支持。通过 GitHub 等平台共享模块,是 Go 及其工具生态的核心理念。

易于自动化和 IDE 自由化

Go 支持脚本化构建流程,便于自动化。从编译、测试到静态分析,都可通过命令行完成。开发者可自由选择文本编辑器,无需依赖特定 IDE。更多 IDE 设置建议可参考 https://cloudnativego.com

本书配套网站 GitHub 仓库 提供全部代码和资料。

总结

本章介绍了云之道的核心理念,包括简单性、测试优先、自动化和服务生态系统,并阐述了 Go 语言在云原生开发中的优势。开发者的心态和方法论是项目成功的关键。随着阅读深入,这些哲学理念将贯穿于每一个决策、每一行代码和每一个自动化测试中。

Go 语言凭借其简单、优雅、高效和快速的特性,成为构建微服务的理想选择。缺少复杂性和冗余,反而让思想更容易转化为代码,提升开发体验。

参考文献

文章导航

独立页面

这是书籍中的独立页面。

书籍首页

评论区