知用网
霓虹主题四 · 更硬核的阅读氛围

架构设计和开发,到底差在哪?别搞混了

发布时间:2026-01-24 09:31:31 阅读:133 次

小王刚入职一家做金融系统的公司,组长让他先看两周的架构文档。他翻了两页就懵了:全是框图、组件关系、数据流向,没一行代码。他忍不住问同事:“这玩意儿跟写代码有啥关系?不都是干活吗?”

不是“谁先谁后”,而是“干啥不同”

架构设计不是“开发的前奏”,也不是“画完图就扔给程序员去实现”。它更像盖楼前的结构工程师——决定承重墙位置、梁柱布局、消防通道走向;而开发是施工队,负责按图把砖一块块砌好、电线一根根接通。

比如做一个支付接口:开发同学可能直接用 Spring Boot 写个 @PostMapping("/pay"),参数校验、调第三方 SDK、返回 JSON——50 行搞定,能跑。

但架构师想的是另一层:
• 如果明天要接入 3 家银行、2 家钱包,怎么不让每加一家就改核心逻辑?
• 如果某家银行接口超时 10 秒,会不会拖垮整个订单服务?要不要熔断?
• 用户支付成功后发短信、记账、推消息,这些操作必须强一致,还是允许短暂延迟?靠数据库事务,还是用消息队列+补偿?

一个真实场景对比

公司要做个后台管理页,需求很简单:展示用户列表,支持搜索和导出 Excel。

开发视角:
建个 UserController,查数据库,分页封装成 JSON 返回;导出用 Apache POI 生成文件流。半天上线。

架构视角:
• 用户数据来自 MySQL,但搜索响应要快——是否加 Elasticsearch 同步?同步延迟怎么控?
• 导出量大时容易 OOM 或拖慢主服务——要不要拆成异步任务,用 Redis 队列 + 独立 worker 进程处理?
• 前端是 Vue 单页应用,API 走 Nginx,那跨域、限流、鉴权策略是统一在网关层做,还是每个服务自己搞?

这些选择不写进代码,但一旦定错,后面加监控、扩集群、切流量,全得返工。

安全角度尤其不能含糊

很多人以为安全就是加个防火墙、开个 HTTPS。真到架构层面,漏洞早埋好了。

比如权限系统:开发可能在每个 Controller 方法上加 @PreAuthorize("hasRole('ADMIN')")。看着没问题。

但架构要考虑:
• 角色权限是存在数据库里,还是集中到 OAuth2 认证中心?
• 第三方应用接入时,用的是 RBAC 还是 ABAC?字段级权限(比如“只能看自己部门的销售数据”)怎么透传?
• 日志审计要不要单独服务?敏感操作是否强制二次确认并留痕?

这些不是“功能做完再补”,而是架构定型时就得拍板。否则等用户数据上百万了,才发现权限模型撑不住,连改表结构都得停服两小时。

说白了:开发解决“能不能做出来”,架构解决“能不能稳、安、扛、扩”。一个是手艺人,一个是总调度。