服务端技术方案应该具有哪些章节

1,578 阅读5分钟

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习


0 文章前言

我在之前文章《结合DDD讲清楚编写技术方案七大维度》介绍了从零到一使用DDD方法论搭建项目的七个步骤:

  • 四色分领域
  • 用例看功能
  • 流程三剑客
  • 领域与数据
  • 纵横做设计
  • 分层看架构
  • 接口看对接

四色分领域:四色分析法将一个整体需求拆分为不同领域,这是DDD方法论核心思想。四色分析法同样可以用在子域或者限界上下文中,直到拆分出可以得心应手处理之边界为止。

用例看功能:当领域划分完成后,使用用例图描述系统功能。用例图不关心实现细节,而是从外部视角描述系统功能,即使不了解实现细节的人,通过用例图也可以快速了解系统功能。

流程三剑客:使用活动图、顺序图、状态机图三种流程类型的图示描述系统,三种图各有特点:活动图着重描述逻辑分支,顺序图着重描述时间线索,状态机图着重描述状态流转。

领域与数据:如何区分领域模型和数据模型。二者重要区别是值对象存储方式。领域模型在包含值对象的同时也保留了值对象的业务含义,而数据模型可以使用更加松散的结构保存值对象,简化数据库设计。

纵横做设计:纵向做隔离,横向做编排。复杂业务之所以复杂,一个重要原因是涉及角色或者类型较多,很难平铺直叙地进行设计,所以我们需要增加分析维度。其中最常见的是增加横向和纵向两个维度。

分层看架构:系统架构分为两个层次,第一种层次指本项目在整个公司位于哪一层次。持久层、缓存层、中间件、业务中台、服务层、网关层、客户端和代理层是常见的分层架构。第二种层次指本项目内部代码组织方式,一般可以分为接口层,访问层,业务层,领域层,整合层和基础层。

接口看对接:一个接口代码编写完成后,这个接口如何调用,输入和输出参数是什么,这些问题需要在接口文档中得到回答。

上述步骤如何落地为技术方案,这是本文需要回答之问题。本文重点分析技术方案章节,每个章节具体实践文末参看我之前文章链接。


1 需求分析

1.1 需求文档

本章节记录需求文档地址


1.2 需求背景

  • 当前业务现状
  • 本次需求内容
  • 本次需求目标

2 概要设计

2.1 领域划分

本章节使用四色分析法划分领域


2.2 系统功能

本章节使用用例图描述系统功能


3 详细设计

3.1 流程视图

3.1.1 整体流程

本章节使用时序图描述整体流程

  • 顺序维度:正向、逆向
  • 调用方式:同步、异步

时序图应该着眼全局

不应过多描述复杂逻辑分支

如果有需要可以根据不同维度画多张图


3.1.2 复杂流程

本章节使用活动图描述复杂逻辑分支

如果有需要可以结合多维表格分析


3.1.3 状态流转

本章节使用状态机图描述状态流转


3.2 数据视图

3.2.1 关系模型

本章节使用ER图描述实体关系模型


3.2.2 数据库表

本章节描述建库建表语句:

  • 创建语句
  • 索引语句
  • 初始化语句

3.3 接口视图

本章节描述与前端交互接口信息:

  • 接口路径
  • 输入参数
  • 输出参数
  • 接口说明
  • 老版本兼容性

4 非功能设计

4.1 安全设计

  • 常见安全维度
    • 系统安全
    • 数据安全
    • 业务安全
  • 常见安全操作
    • 校验操作权限
    • 记录操作流水
    • 记录业务快照
    • 敏感字段不依赖前端(userId、金额)

4.2 性能设计

  • 性能分析
    • RT
    • QPS
    • 并发
    • 压测
  • 优化层级
    • 数据层
    • 缓存层
    • 服务层
    • 前端层
    • 客户端
    • 代理层
  • 常用方法
    • 减少请求
    • 空间换时间
    • 任务并行化
    • 任务异步化

4.3 扩展性设计

  • 数据表设计
    • 二进制字段
    • extend1、extend2
    • bizType、bizSubType
  • 接口设计
    • bizType、bizSubType
    • 松散参数
    • 版本号
  • 代码设计
    • 设计模式
    • 纵向做隔离
    • 横向做编排

4.4 高可用设计

  • 降级策略
  • 延时策略
  • 隔离策略
  • 冗余策略
  • 告警策略
    • 系统错误(一次立刻感知)
    • 业务错误(一定频次感知)
    • 数据监控(数据异常感知)

5 项目排期

本章节使用表格记录负责人和排期:

  • 端信息
    • 服务端
    • 客户端
    • 前端
    • 测试
    • 项目经理
    • 产品经理
  • 表格内容
    • 哪个端
    • 负责人
    • 开始时间
    • 结束时间
    • 是否完成
    • 风险信息
    • 备注信息
    • 上线准备

6 文章总结

本文展示了一篇技术方案需要具备的章节,需要说明根据需求复杂度,并不是所有章节都必须。如果一个需求复杂度不高,可以只选取其中几个章节。在《结合DDD讲清楚编写技术方案七大维度》文章有上述章节中各种图实例,希望本文对大家有所帮助。


7 延伸阅读

结构化思维如何指导系统优化

架构权衡评估方法:如何评估系统质量

多图详解七种具体方法增强代码扩展性

结合DDD讲清楚编写技术方案七大维度

结合DDD讲清楚编写技术方案七大维度再讨论


欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,同时欢迎大家加我微信「java_front」一起交流学习