如何写好技术方案

一、 前言

作为一个技术开发者,特别是高级、资深开发、架构师等,往往会遇到根据需求撰写技术方案。那么如何撰写一篇好的技术方案设计,我们今天就来聊一聊这个话题。

二、 技术方案是否有必要

答案是肯定的。

我见过太多由于前期规划不到位(甚至是没有技术方案设计,开个技术讨论会口头沟通一下,就直接评工期开干的),这其中不乏很重要,工期很长的项目。而最后呢,到联调阶段各组串不起来,更可笑的是,产品和产品同学之间都没沟通清楚。导致最终很被动,到处挖坑补洞,而且花费了更多的时间和精力,甚至导致项目延期,后续扩张性不强等等问题。 

所以我认为,技术方案是必不可少的一个环节。往往很多坑在这个阶段就可以避免的。 

古人云:"磨刀不误砍柴工",技术方案就是磨刀的过程。

方案设计

三、 如何写好技术方案

  1. 要贴合需求,满足需求是大方向。

  2. 可实施。要考虑当前条件下是否可落地,如:

    • 团队人员接受能力:技术选型的时候,要考虑团队成员接受能力,盲目引入新技术,可能造成不可预知的问题。

    • 时间成本:  一般来说Java 或者 PHP 后端项目(c语言项目可能会做一年甚至更长时间),3个月时间周期算是比较长的了,假如按照此方案,需要半年甚至更长时间,那可能也不切实际。

    • 资源成本: 例如,项目可能需要引入Redis,Mysql,ES, MongoDB 等基础资源,那公司是否能提供这些资源(服务器是要钱的)。如果不能,在写技术方案时候,可能就需要考虑是否有替代方案。

  3. 应急处理&可靠性保障 只要人能想到的问题,就一定会发生,不能有侥幸心理。所以要做好出现问题的应对策略,这里就必须做好如:

    • 灰度方案

    • 降级方案

    • 异常处理

    • 容量评估

四、技术方案模板

下面是我总结的技术方案设计模板,希望对大家所有帮助。

1、背景

目前的背景现状,简要说明以往业务所遇到的问题,给出本次项目迭代的原因,解决的技术痛点或业务痛点

2、目标

通过次方案要达到什么样的业务指标,例如,支撑多少QPS,性能相比现在提升多少倍,为后期水平扩展做铺垫

3、整体方案

1)架构图 2)流程图 3)时序图 4)调用链路图

4、存储设计

如Mysql表结构设计,缓存设计,ES存储设计等等,说明Schema、字段类型、默认值、描述信息等。

5、接口定义

列举出接口的结构,参数,返回值等

6、灰度方案

按什么方式灰度,如何做灰度方案,用表格的形式列出分几个阶段灰度,每个阶段大概时间多长。

7、降级方案

当出现问题如何降级操作,如何回滚。将风险降到最低程度。

8、关联系统(功能)影响

重点需要各组注意的地方,相关人员需要特别关注,一一确认到位

9、资源分配情况

  • 人力资源: 实现方案需要多少人力投入(开发人力,测试人力,运维人力)等。

  • 硬件资源: 实现上述方案,列举需要哪些物理机器资源,运维人员需提前准备。

10、预估工期及时间节点

列举出工期及关键时间节点,如,什么时候联调,什么时候提测,什么时候开始灰度上线,以及后续的迭代完善计划等。

五、温馨提示

我也给大家总结了我之前做系统重构写的技术方案设计文档(线上真实版本,已脱敏)

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值