# 13. 技术与实现常识

这一章讲产品经理够用的技术常识：不必会写代码，但要听得懂研发在说什么、估得出方案的大致代价和风险，把需求说得清、评审时问得到点子上。

条目按从最基础到进阶排列。

---

### 1. 前端、客户端与后端的职责划分
- 定义：前端指运行在用户设备上、负责界面与交互的代码；客户端指装在手机或电脑上的 App；后端指跑在服务器上、处理数据与业务逻辑、供所有用户共用的部分。
- 说人话：界面点下去有没有反应，是前端和客户端的事；订单存在哪、谁有权看，是后端的事。你看到的画面，一半来自界面，一半来自后端算出的结果。
- 什么时候用：提需求、估工时、判断改动影响面时，先分清它落在哪一层，才知道该找谁、会不会牵动全局。
- 常见误区：以为「改个文案」必然很轻，其实多端同步、多语言、后台配置都可能把它变成一串改动。
- 证据等级：C
- 来源：行业通行做法（客户端—服务端架构分工）

### 2. API 与接口契约
- 定义：API（应用程序接口）是系统之间约定好的对话方式；接口契约规定请求怎么传、返回什么、错误怎么表示，必要时用版本号区分不同代的接口。
- 说人话：接口就像外卖订单模板：填什么、商家返回什么、出错提示什么，双方必须按同一张单子来，否则对不上。
- 什么时候用：涉及前后端联调、对接第三方，或要改动已有字段时，先确认契约怎么变、还在用旧接口的业务怎么办。
- 常见误区：只描述成功情况，不写错误码和字段含义；改字段不升版本，直接改坏还在依赖旧接口的业务。
- 证据等级：C
- 来源：行业通行做法（接口契约与版本管理）

### 3. 数据库基础（关系型与文档型、索引）
- 定义：数据库负责存数据。关系型用表、行、字段组织，结构严格、靠关联拼出结果；文档型以类似 JSON 的记录组织，结构更灵活。索引是为加快查询建立的辅助结构。
- 说人话：关系型像一本规整的 Excel，多张表互相关联；文档型像一摞格式相近的文件，改起来随意。索引像书的目录，查得快，但每次写入都要顺手更新目录。
- 什么时候用：方案里要讨论「数据怎么存、能不能快速查」时，了解所选类型的取舍，以及它对索引的依赖。
- 常见误区：以为加索引只有好处，忘了它让写入变慢、占空间；或以为换成文档型就能省掉数据建模。
- 证据等级：C
- 来源：行业通行做法（关系型与文档型数据库、索引）

### 4. 缓存与一致性
- 定义：缓存把常用数据放在更近、更快的地方，减少对数据库的重复访问；代价是缓存和源数据可能短时间不一致，需要约定失效或更新策略。
- 说人话：把常翻的资料复印一份放手边，省得每次跑仓库；但仓库改了资料，你手上那份可能还是旧的。
- 什么时候用：读写量大、同一条数据被反复请求，或有人反馈「数据没更新」时，想清楚缓存多久失效、更新走哪条路。
- 常见误区：以为缓存只带来提速；忽略缓存穿透、击穿、雪崩这类风险，把「加了缓存数据就一定一致」当默认。
- 证据等级：C
- 来源：行业通行做法（缓存策略与一致性）

### 5. 异步与消息队列
- 定义：同步指调用后一直等结果返回；异步指先把任务丢进队列、稍后再处理。消息队列用来在系统之间传递这些待办任务，起削峰和解耦的作用。
- 说人话：同步像打电话，等对方接完才说下一句；异步像发消息，对方有空再处理。突然来一大批请求，用队列排一排，系统不会被瞬间冲垮。
- 什么时候用：任务耗时长、流量有明显高峰、想把两个模块拆开时，考虑用异步和队列。
- 常见误区：以为异步就等于更快，忽略了它带来的延迟、顺序问题，以及「失败了怎么重试」这类新麻烦。
- 证据等级：C
- 来源：行业通行做法（异步处理与消息队列）

### 6. 云与部署基础（容器、Serverless、成本随规模变）
- 定义：云把服务器、存储、网络做成可按需租用的服务。容器把应用连同依赖打包，保证到哪都能一致运行；Serverless（无服务器）让你只写函数，运行环境由平台按调用计费。
- 说人话：以前要自己买机器、装环境，现在像用水电一样用多少付多少；容器像标准集装箱，换个码头也能原样卸货。
- 什么时候用：讨论部署方式、成本随用户量怎么变、要不要自建时，用这几档做个粗判断。
- 常见误区：以为上了云就一定便宜，实际用量、闲置和流量出口都会记进账单；忽略迁移和运维同样是成本。
- 证据等级：C
- 来源：行业通行做法（容器、Serverless 与云成本模型）

### 7. 性能指标（响应时间、吞吐、P95/P99）
- 定义：响应时间指一次请求从发出到返回花多久；吞吐指单位时间能处理多少请求（如 QPS，每秒查询数）；P95、P99 指把请求从快到慢排队后，落在 95%、99% 位置的耗时，用来描述最慢的那部分。
- 说人话：平均响应很快，可能只是多数请求快，掩盖了少数用户等得很久；P99 描述的正是那批等得最久的人的体验。
- 什么时候用：定性能目标、验收上线，或有人抱怨卡顿时，别只看平均值，看分位数和高负载下的表现。
- 常见误区：用平均值代表所有人；把 P95 误读成「95% 的请求都这么快」，其实它盯的是慢的那一端。
- 证据等级：C
- 来源：行业通行做法（延迟分位数与吞吐指标）

### 8. 可用性与容灾（SLA / SLO、降级与熔断）
- 定义：可用性指系统能正常提供服务的时间比例；SLA 是对外承诺的服务水平，SLO 是内部设定的目标。降级指牺牲次要功能保全核心流程，熔断指依赖出问题时主动切断调用、避免被拖垮。
- 说人话：可用性约等于「一年里允许多久用不了」；真出故障时，先保住最重要的下单流程，别的先关掉。
- 什么时候用：定上线目标、写故障预案，或核心功能依赖多个外部服务时，提前约定降级和熔断规则。
- 常见误区：以为「高可用」靠堆机器就能买到，忽略单点、依赖方故障和运维流程；把 SLA 当纯技术指标，其实它常带赔偿条款。
- 证据等级：C
- 来源：行业通行做法（SLA / SLO、降级与熔断）

### 9. 安全底线（鉴权、越权、注入、加密、密钥）
- 定义：鉴权确认「你是谁」，授权确认「你能做什么」；越权指用户访问了本不属于他的数据。注入指把恶意内容混进查询；加密保护传输和存储中的数据，密钥管理则决定这些保护是否真的有效。
- 说人话：登录只证明你是谁，不代表你能看别人的账单；把用户 ID 一改就看到了别人的订单，就是越权。
- 什么时候用：任何涉及登录、权限、用户数据、支付的需求，评审时都要过一遍这几条。
- 常见误区：只在前端藏起按钮，就以为做了权限；把密钥写进代码或前端，等于把钥匙放在门口。
- 证据等级：B
- 来源：行业通行做法（OWASP 常见风险类别）

### 10. 技术债的含义与偿还时机
- 定义：技术债指为了赶进度而采用的临时方案（如硬编码、复制粘贴、跳过测试），它像借款：当下省了力，日后要连本带息偿还。
- 说人话：把规则写死在代码里先上线，能救急；但下个月规则一变，就得翻出来重写，这就是在还债。
- 什么时候用：评估一个「先凑合」的方案时，说清欠了什么、什么时候还、不还的后果，而不是默认它没事。
- 常见误区：把技术债一律当坏事，其实有些是有意的权衡；也忌讳欠了不记账，到期才发现无处下手。
- 证据等级：B
- 来源：Ward Cunningham（技术债隐喻）

### 11. 技术方案评审时产品经理该问的五个问题
- 定义：产品经理不必懂实现细节，但可以通过几个问题把关键判断问出来：要解决什么、影响哪些模块、最坏情况什么样、上线和回滚怎么做、有没有更省的做法。
- 说人话：不懂技术也能问：这次改动的边界在哪、出问题怎么退、会不会拖慢别的地方、有没有更便宜的路子。
- 什么时候用：参加技术评审、评估排期和风险时，用这组问题把方案里的假设和代价摆到台面上。代价与收益的判断见第 9 章第 7 条。
- 常见误区：把评审当签字走流程，只问「什么时候能上」；或越界去指挥具体实现，反而问不到关键。
- 证据等级：C
- 来源：行业通行做法（技术方案评审要点）
