全栈电商微服务从 0 到 1 再到 10:开篇
上次读到 0%
这是一套关于全栈(Golang + Node.js)电商微服务的进化教程:从一台什么都没装的 Mac 开始,逐步搭到一个完整的电商系统。除了业务代码,系列还会覆盖它所依赖的基础设施、基础设施所依赖的内核参数、对硬件的最低要求,以及贯穿整个软件开发过程的工具、技术、思想、设计与权衡。
「从 0 到 1」指把环境和骨架搭起来;「再到 10」指在骨架上持续加能力、加约束、加取舍,直到接近生产可用。
「全栈」在本系列中的定义
本系列所说的全栈由三部分组成:
| 层 | 技术选型 | 职责 |
|---|---|---|
| 前端 | Node.js 生态,React + TypeScript | 面向用户的电商界面 |
| API 网关 | Golang | 面向微服务的统一入口;内置安全能力与统一配置管理 |
| 微服务 | Golang | 按 DDD 业务能力拆分的独立服务 |
网关不是简单的反向代理:鉴权、限流等安全能力和各服务的配置管理都收在网关这一层,微服务只关心自己的业务边界。
阅读顺序
系列按「先把机器用顺手,再装工具链,再进入电商项目」的顺序推进。基础篇与具体业务无关,任何 Golang 或 Node.js 开发者都可以直接套用;电商篇开始才进入项目本身。
- 基础篇:提高物理层面开发效率 —— 开发机、显示器、输入法与 macOS 键盘快捷键。
- 基础篇:通过软件提高开发效率 —— 终端工具,以及 crane、kubeconform 等辅助工具。
- 基础设施篇:Spegel 镜像 P2P 分发 —— 在 Kubernetes 节点之间复用镜像层,减少重复拉取。
- 基础设施篇:Reloader 让 Secret 变更自动滚动 Pod —— 凭据后端改值后让引用 Secret 的 Pod 自动滚动,以及它管不到的配置中心那一段。
- 基础篇:语言安装 —— Golang、fnm 管理的 Node.js、单独安装的 pnpm。
- 电商篇:安装依赖 —— protoc-gen-go 与 protoc-gen-connect-go。
- 电商篇:客户支持——配置自定义域名邮箱 —— Cloudflare Email Routing 收信、Resend 发信,以及许可、隐私与退款规则。
- 电商篇:安全——基于请求方法的访问控制绕过 —— 把 POST 改成 GET 为什么能提权,拿网关与微服务代码逐层核查,落地三道门禁。
- 电商篇:Spec Coding——让 AI 按仓库规范干活,而不是靠猜 —— 规范放哪、三色权限落成门禁、可判定的验收标准、完成自检与反向索引。
- 电商篇:性能——首页迁到 SSR,PageSpeed 移动端从 61 做到 100 —— 从指标权重反推丢分点,定位到 162 KB 全是 @font-face 的阻塞 CSS,首页迁到 Next.js 静态渲染,字体子集 130 KB 到 19 KB,发布链路七个坑。
GitOps 系列
GitOps 系列按一次变更从源码进入集群的顺序展开。每个安全组件单独成篇,最终汇合成 GitHub Actions、镜像仓库、部署清单和 Argo CD 的自动化闭环。
- GitOps 篇 01:用 Gitleaks 阻止凭据进入 Git 历史 —— 暂存区、完整历史、GitHub Actions 与凭据泄露处置。
- TODO:Trivy fs/config —— 文件系统依赖与 IaC 配置扫描。
- TODO:zizmor —— GitHub Actions 工作流安全检查。
- TODO:Syft —— 为镜像生成 SPDX SBOM。
- TODO:Trivy image —— 按不可变 digest 扫描镜像漏洞。
- TODO:Cosign —— 镜像签名与供应链证明。
- TODO:Kyverno —— 在 Kubernetes 准入阶段验证镜像。
- TODO:GitOps 自动化收口 —— GitHub CI、清单更新与 Argo CD 协调。
- TODO:GitLab 单独篇 —— 第二远端只运行代码门禁,不重复发布。
后续篇目发布后会补充到这里,也可以通过标签 全栈电商微服务 或 GitOps 查看相关文章。
阅读前提
- 一台 Mac。基础篇的快捷键、输入法和显示器设置都以 macOS 为准;为什么选 Mac,第一篇会说明。
- 不要求已有 Golang 或 React 经验;语言安装从零开始。
- 系列中的版本号以撰写当时为准,实际安装时以官方最新稳定版为准。