跳到主要内容
Go(Golang)开发

Go(Golang)开发服务

我们用 Go 构建后端:运行快,代码易读,天生适合并发。我们自有产品的后端就是用 Go 编写的,所以我们带来的是真实的生产经验,而不是教程级的了解。

包含内容

Go 是正确工具之处

Go 为后端服务而生:它编译为单个静态二进制文件、不费周章便能处理数千个并发连接,并在团队成长过程中保持可读。我们在吞吐、简洁与快速迭代三者皆要紧之处选用它。

服务范围
  • REST 与 gRPC API
  • 微服务与服务网格
  • 控制平面与编排服务
  • 高并发的网络服务与工作进程
  • 以单个二进制文件发布的 CLI 与内部工具
  • 集成与数据流水线
我们的工作方式

我们如何用 Go 构建

整洁的分层架构,显式处理错误,并审慎运用并发。地道的 Go,让下一位工程师读得懂。

  1. 1

    设计

    我们对领域与服务边界进行建模,并在构建前就 API 契约达成一致。

  2. 2

    地道构建

    边界清晰的分层架构、显式的错误处理,以及结构化日志。

  3. 3

    在要紧处使用并发

    审慎使用 goroutine 与 channel,开启竞态检测器,对资源争用进行实测,而不是凭假设。

  4. 4

    测试与基准

    表驱动测试、针对真实数据库的集成覆盖,以及面向热点路径的基准测试。

  5. 5

    交付与运营

    一个容器化的单一静态二进制文件,配以健康检查与指标,让它易于运行。

交付物

您将获得

一个快速、地道的 Go 服务,您的团队可以运行并扩展。

您将获得
  • 一套架构整洁、分层清晰的地道 Go 代码库
  • 一份有文档的 API 契约(REST 或 gRPC)
  • 表驱动测试与集成覆盖
  • 面向性能关键路径的基准测试
  • 一个配以健康检查与指标的容器化构建
  • 文档,以及面向您工程师的交接
技术栈与方法

Go 工具链

GoHTTP 路由、中间件关系型数据库结构化日志gRPC、RESTDocker、Kubernetes

优先使用标准库,只引入少量维护良好的依赖,交接之后您的团队可以自行维护。

常见问题

Go 开发常见问题

我何时该选 Go,而非 Node.js 或 Python?

对于需要处理大量并发工作、编译为单个可部署二进制文件、并在团队成长过程中保持快速与简洁的后端服务,Go 是一个有力之选。当您想前后端共用一门语言时,Node.js 胜出;做数据与 ML 工作时,Python 胜出。我们会推荐契合您团队与工作负载的那一个,而不只是我们偏爱的那个。

Go 适合做微服务吗?

非常适合。小巧的静态二进制文件、快速启动、一流的并发支持,以及扎实的 gRPC 与 HTTP 支持,让 Go 成为微服务的自然之选。不过,微服务会增加运维复杂度,我们会帮您判断是否真的需要它们,还是一个结构良好的单体服务更简单。

你们能在我们现有的 Go 代码库里工作吗?

可以。我们评审当前的结构、测试与问题所在,然后地道地加以扩展或重构。我们遵循您团队已经在用的约定,而非强加我们自己的。

你们如何安全地处理并发?

审慎行事。我们在 goroutine 与 channel 有帮助的地方才使用它们,在 CI 中运行竞态检测器,并对争用加以度量而非臆测。并发 bug 出了名地隐微,所以我们依靠工具与评审把它们挡在门外。

构建一个快速且保持简洁的后端.

告诉我们您的后端需要完成什么。我们会用 Go 来构建:支持并发,写法地道,便于运维。