基于Golang的实践软件开发
554 页
Chinese
PDF
4.5

基于Golang的实践软件开发

基于Golang的实践软件开发

作者:

年份:

简介:

引言

由Achilleas Anagnostopoulos所著的《Hands-On Software Engineering with Golang》(2020年,554页)并非又一本介绍Go语法的入门书,而是一本关于使用Go语言构建复杂、可扩展且可维护软件系统的深入实践指南。与许多侧重于基础知识的书籍不同,本书专注于工程实践:架构、设计、测试、部署和监控。它非常适合那些已经熟悉Go并希望晋升为高级开发人员或架构师的人。

本书内容

本书围绕一个真实应用的开发展开——一个链接分析系统(link graph)。在整本书中,作者循序渐进地应用领域驱动设计(DDD)原则,构建微服务架构,使用gRPC进行服务间通信,引入容器化(Docker, Kubernetes),并配置CI/CD流水线。每一章都是一个完整的阶段,可以立即应用于实践。

主要主题:

  • 架构模式: DDD, CQRS, Event Sourcing, 六边形架构。
  • 微服务: 设计、通信(gRPC, RabbitMQ)、编排。
  • 测试: 单元测试、集成测试、端到端测试、基于属性的测试。
  • CI/CD: 流水线配置、自动化测试与部署。
  • 监控与可观测性: 日志记录、指标、链路追踪(OpenTelemetry)。
  • 性能: 性能分析、基准测试、优化。

目标读者

本书面向有经验的Go开发者(至少1-2年经验),他们希望深入研究复杂系统的设计。它也对架构师、技术主管以及所有从编写简单工具转向构建生产级应用的人士有所帮助。对于Go新手来说,本书可能较难,因为作者不解释基本语法,并假设读者已掌握该语言。

读者将学到什么

  • 如何应用DDD来识别限界上下文和聚合。
  • 如何使用gRPC和异步队列构建微服务。
  • 如何在Go中实现CQRS和Event Sourcing。
  • 如何编写不同级别的测试并使用基于属性的测试。
  • 如何将应用程序容器化并部署到Kubernetes。
  • 如何使用GitHub Actions或GitLab CI配置CI/CD。
  • 如何对Go应用程序进行性能分析和优化。
  • 如何实现可观测性:日志记录、指标(Prometheus)和链路追踪(Jaeger)。

优势

本书的主要优点是实践导向。每个概念都立即通过可运行和可修改的代码来支撑。作者不仅仅是复述理论,而是展示如何做出架构决策以及它们涉及哪些权衡。GitHub上的代码附有详细注释。另一个优点是时效性:本书出版于2020年,书中的大多数方法(gRPC, Kubernetes, OpenTelemetry)至今仍是行业标准。

特别值得一提的是关于测试和CI/CD的章节——它们提供了可以直接应用于任何项目的现成方案。本书不仅教你编写代码,更教你从整体上思考系统:从需求到运维。

推荐人群

我向所有希望从在Go上编写“脚本”转向创建工业级系统的人推荐这本书。它既对个人开发者有益,也对在生产环境中引入Go的团队有帮助。如果你已经读过《The Go Programming Language》或《Concurrency in Go》,并希望更进一步——这本书将是绝佳的下一步。

在PythonLib网站上,本书可供查阅。

推荐