一个完整的设计过程,其实就是对于需求及场景不断理解的过程,所以设计前整理需求是第一步也是关键的一步。
一、自我理解到的实际场景及需求:
1,融合多个业务线的系统数据,或其他形式数据
2,内部使用的系统。特点:1,用户量并不庞大 2,业务偏专业性 3,稳定性有一定要求
3,多个部门之间共享数据需求:灵活的数据权限,关联分析,数据报表,展示需求
4,后续可能功能:数据挖掘,标准化产品输出
5,可能存在的形态:web,小程序,app
二、针对以上4点需求分为三方面进行设计:
设计原则:架构都是依托于需求、实际场景及数据量改变而不断演变的,而一个好的架构就是只需要很小的改动成本来实现需求的变化及数据增长
(1)数据架构
1,数据来源:爬虫、机构内各系统数据库、文件文本等其他形式
2,数据融合:基于在对于各个系统数据了解的情况下的数据关联方法
3,数据同步策略:实时同步,T+N同步,增量同步,全量同步
4,可能存在的技术难点:1,不同数据库之间的稳定同步 2,ETL清洗及结构化数据 3,同步数据量庞大且要求实时性
简易架构图:
(2)系统架构
- 一个成熟的产品是模块化的,是根据需求来通过配置中心,将需要的模块及数据在应用端透出,从而拥有强大的灵活性适应各个需求
数据平台大体分为以下集合模块:
1,用户权限及管理模块(不同部门,不同角色,不同权限,不同的数据授权)
2,数据检索模块(简单搜索,条件搜索)
3,数据实时分析
4,数据管理(数据分类,数据定制化融合,数据同步规则)
5,数据导出(授权下的可选范围导出或全量导出excel)
6,数据报表(根据用户需求的方法进行分析数据并产生报告)
7,图表库(配置化根据需求配置所要展示样式)
系统架构图:
(3)技术架构
一个产品初期主要实现其重要的功能性,再后续的不断迭代中,提升系统的稳定性及额外功能,因此初期阶段架构比较简单而稳定性不高:
初期架构图如下:
后期架构图:
三、针对设计的人员规划:
1,项目初期阶段:
-需开发模块及功能:权限模块,图表库,数据导出,数据生产(同步及融合)
-项目周期:3个月内
-项目人员:
-前端1名;要求:对于主流图表库要熟悉:echart/highchart,熟悉主流前端框架:vue等
-后端1-2名;要求:对于自身所用语言要熟悉:java/python/php ,熟悉自身所用web框架及主流数据库
-数据库维护人员1名;要求:熟悉各个主流数据库的部署优化,数据备份,同步,sql优化等);
-初期项目功能不复杂测试由开发人员及项目经理进行测试验收
2,项目后期阶段:
-需开发模块及功能:数据检索,数据报表,分析计算,其他业务模块
-项目周期:3个月内
-项目人员:
-前端2名;(要求同初期)
-后端4名;1名负责搜索服务(要求熟悉elasticsearch及web开发),2名负责系统主题功能开发,1名负责分析计算服务(要求熟悉主流异步服务及数据分析库)
-数据库维护人员1名(同初期只要没有额外过多的数据引入)
-UI工程师建议不用常备,待需要界面整体升级时同意设计一版;而且UI都会干私活,比较容易招到相关人员
-建议在甲方确定了所开发功能满足需求后,所有测试都由工程师承担(测试驱动开发:效率及质量都会提高)最后由项目经理及甲方再进行验收来保证质量